<?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>180019</bug_id>
          
          <creation_ts>2017-11-26 11:48:08 -0800</creation_ts>
          <short_desc>[WebIDL] Remove the need to specify [MayThrowException]</short_desc>
          <delta_ts>2021-03-24 13:48:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>216429</dependson>
    
    <dependson>216441</dependson>
    
    <dependson>216442</dependson>
          <blocked>177453</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>ashvayka</cc>
    
    <cc>beidson</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374743</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-26 11:48:08 -0800</bug_when>
    <thetext>[WebIDL] Remove the need to specify [MayThrowException] for operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374744</commentid>
    <comment_count>1</comment_count>
      <attachid>327587</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-26 11:54:19 -0800</bug_when>
    <thetext>Created attachment 327587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374745</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-26 11:56:51 -0800</bug_when>
    <thetext>Attachment 327587 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:75:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 192 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374752</commentid>
    <comment_count>3</comment_count>
      <attachid>327590</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-26 13:43:53 -0800</bug_when>
    <thetext>Created attachment 327590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374753</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-26 13:46:08 -0800</bug_when>
    <thetext>Attachment 327590 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:75:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 186 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374767</commentid>
    <comment_count>5</comment_count>
      <attachid>327593</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-26 16:51:05 -0800</bug_when>
    <thetext>Created attachment 327593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374770</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-26 16:58:52 -0800</bug_when>
    <thetext>Attachment 327593 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:75:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 174 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374773</commentid>
    <comment_count>7</comment_count>
      <attachid>327594</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-26 17:08:32 -0800</bug_when>
    <thetext>Created attachment 327594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374774</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-26 17:10:04 -0800</bug_when>
    <thetext>Attachment 327594 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMOperation.h:75:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 174 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740298</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-16 16:18:04 -0700</bug_when>
    <thetext>*** Bug 177453 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742065</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 08:56:25 -0700</bug_when>
    <thetext>I have a change to remove all the remaining uses of [MayThrowException], so am going to broaden this a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742068</commentid>
    <comment_count>11</comment_count>
      <attachid>423828</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 09:45:54 -0700</bug_when>
    <thetext>Created attachment 423828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742069</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 09:47:32 -0700</bug_when>
    <thetext>It&apos;s a big one, but it finally does away with [MayThrowException].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742070</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 09:47:55 -0700</bug_when>
    <thetext>And a huge amount of it is just test changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742072</commentid>
    <comment_count>14</comment_count>
      <attachid>423830</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 09:51:06 -0700</bug_when>
    <thetext>Created attachment 423830
Just the code changes (no IDL or test result changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742074</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 09:53:16 -0700</bug_when>
    <thetext>Added a version with just the code changes to make it a bit easier to look at.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742263</commentid>
    <comment_count>16</comment_count>
      <attachid>423898</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-22 09:24:40 -0700</bug_when>
    <thetext>Created attachment 423898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742326</commentid>
    <comment_count>17</comment_count>
      <attachid>423898</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-22 11:47:01 -0700</bug_when>
    <thetext>Comment on attachment 423898
Patch

r=me if the bots are happy. Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742329</commentid>
    <comment_count>18</comment_count>
      <attachid>423898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-22 11:48:40 -0700</bug_when>
    <thetext>Comment on attachment 423898
Patch

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

Reading the patch now, spotted a couple errors, but still reading through the rest

&gt; Source/WebCore/ChangeLog:14
&gt; +        compile. To work around this, toJS&lt;&gt;() can now take a lambda as it&apos;s value, and

it&apos;s -&gt; its

&gt; Source/WebCore/ChangeLog:93
&gt; +        required as we actually look at the return type via deduction and need it match.

need it match -&gt; need it to match</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742331</commentid>
    <comment_count>19</comment_count>
      <attachid>423898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-22 11:51:20 -0700</bug_when>
    <thetext>Comment on attachment 423898
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMExceptionHandling.h:101
&gt;          return;

Why not take out the return if we are using else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742335</commentid>
    <comment_count>20</comment_count>
      <attachid>423898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-22 11:55:40 -0700</bug_when>
    <thetext>Comment on attachment 423898
Patch

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

Not that we needed to, but if we wanted a smaller patch could have done &quot;allow but ignore MayThrowException&quot; and then did the &quot;remove and forbid MayThrowException&quot; in a follow up.

&gt; Source/WebCore/dom/Element.h:212
&gt; +    // Bindings variants of the above two functions that have the correct return type.

Not 100% sure we need the comment. The names seem self-explanatory and while it’s hard to notice the only difference is the return type, the repercussions of not noticing are very small.

&gt; Source/WebCore/dom/Element.h:214
&gt; +    inline void removeAttributeForBindings(const AtomString&amp; qualifiedName) { removeAttribute(qualifiedName); }
&gt; +    inline void removeAttributeNSForBindings(const AtomString&amp; namespaceURI, const AtomString&amp; localName) { removeAttributeNS(namespaceURI, localName); }

The &quot;inline&quot; here can be omitted and has no effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742336</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-22 11:55:52 -0700</bug_when>
    <thetext>OK, done with my review pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742539</commentid>
    <comment_count>22</comment_count>
      <attachid>423956</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-22 16:14:32 -0700</bug_when>
    <thetext>Created attachment 423956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742541</commentid>
    <comment_count>23</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-22 16:15:04 -0700</bug_when>
    <thetext>*** Bug 177453 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742616</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-22 17:49:07 -0700</bug_when>
    <thetext>Committed r274832: &lt;https://commits.webkit.org/r274832&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423956.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742617</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-22 17:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/75717440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742987</commentid>
    <comment_count>26</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-23 13:46:13 -0700</bug_when>
    <thetext>After this patch I see the following error in a non-unified build.

WebCore/DerivedSources/JSWebGLLoseContext.cpp:146:57: error: use of undeclared identifier &apos;IDLUndefined&apos;
    RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS&lt;IDLUndefined&gt;(*lexicalGlobalObject, throwScope, [&amp;]() -&gt; decltype(auto) { return impl.loseContext(); })));
                                                        ^
WebCore/DerivedSources/JSWebGLLoseContext.cpp:161:71: warning: expression result unused [-Wunused-value]
    RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS&lt;IDLUndefined&gt;(*lexicalGlobalObject, throwScope, [&amp;]() -&gt; decltype(auto) { return impl.restoreContext(); })));
                                                                      ^~~~~~~~~~~~~~~~~~~~
JavaScriptCore/PrivateHeaders\JavaScriptCore/ExceptionScope.h:113:16: note: expanded from macro &apos;RELEASE_AND_RETURN&apos;
        return expression__; \
               ^~~~~~~~~~~~
WebCore/DerivedSources/JSWebGLLoseContext.cpp:161:93: warning: expression result unused [-Wunused-value]
    RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS&lt;IDLUndefined&gt;(*lexicalGlobalObject, throwScope, [&amp;]() -&gt; decltype(auto) { return impl.restoreContext(); })));
                                                                                            ^~~~~~~~~~
JavaScriptCore/PrivateHeaders\JavaScriptCore/ExceptionScope.h:113:16: note: expanded from macro &apos;RELEASE_AND_RETURN&apos;
        return expression__; \
               ^~~~~~~~~~~~
WebCore/DerivedSources/JSWebGLLoseContext.cpp:161:57: error: use of undeclared identifier &apos;IDLUndefined&apos;
    RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS&lt;IDLUndefined&gt;(*lexicalGlobalObject, throwScope, [&amp;]() -&gt; decltype(auto) { return impl.restoreContext(); })));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742991</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-23 13:52:59 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #26)
&gt; After this patch I see the following error in a non-unified build.

The fix for this is to add the necessary includes. It looks like the AddToIncludesForIDLType function is missing code for the case of &quot;undefined&quot;. I think it might be something like this:

    if ($type-&gt;name eq &quot;undefined&quot;) {
        AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
        return;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743030</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-23 15:17:11 -0700</bug_when>
    <thetext>Can someone who is doing a non-unified build (Don?) try the above addition to CodeGeneratorJS.pm with my suggestion above to see if it works?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743044</commentid>
    <comment_count>29</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-23 15:41:41 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #28)
&gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?

(In reply to Darin Adler from comment #27)
&gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; After this patch I see the following error in a non-unified build.
&gt; 
&gt; The fix for this is to add the necessary includes. It looks like the
&gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &quot;undefined&quot;. I think it might be something like this:
&gt; 
&gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt;         return;
&gt;     }

I can give that a shot. Might not get to it until tomorrow though.

Thanks for the hint! Always appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743048</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-23 15:53:52 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #29)
&gt; (In reply to Darin Adler from comment #28)
&gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; 
&gt; (In reply to Darin Adler from comment #27)
&gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; 
&gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; 
&gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt;         return;
&gt; &gt;     }
&gt; 
&gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; 
&gt; Thanks for the hint! Always appreciated!

Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743051</commentid>
    <comment_count>31</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-23 15:55:38 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #30)
&gt; (In reply to Don Olmstead from comment #29)
&gt; &gt; (In reply to Darin Adler from comment #28)
&gt; &gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; &gt; 
&gt; &gt; (In reply to Darin Adler from comment #27)
&gt; &gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; &gt; 
&gt; &gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; &gt; 
&gt; &gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt; &gt;         return;
&gt; &gt; &gt;     }
&gt; &gt; 
&gt; &gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; &gt; 
&gt; &gt; Thanks for the hint! Always appreciated!
&gt; 
&gt; Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.

Did that cause no bindings test changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743057</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-23 16:10:21 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #31)
&gt; (In reply to Chris Dumez from comment #30)
&gt; &gt; (In reply to Don Olmstead from comment #29)
&gt; &gt; &gt; (In reply to Darin Adler from comment #28)
&gt; &gt; &gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; &gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; &gt; &gt; 
&gt; &gt; &gt; (In reply to Darin Adler from comment #27)
&gt; &gt; &gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; &gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt; &gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt; &gt; &gt;         return;
&gt; &gt; &gt; &gt;     }
&gt; &gt; &gt; 
&gt; &gt; &gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks for the hint! Always appreciated!
&gt; &gt; 
&gt; &gt; Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.
&gt; 
&gt; Did that cause no bindings test changes?

It did, sorry. I updated them at &lt;https://commits.webkit.org/r274909&gt;.

BTW, I don&apos;t know if I am going crazy or if something is wrong with my machine but generating the JS bindings seems to be crazy slow. I wonder if we regressed speed somewhat recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743059</commentid>
    <comment_count>33</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-23 16:21:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #32)
&gt; (In reply to Sam Weinig from comment #31)
&gt; &gt; (In reply to Chris Dumez from comment #30)
&gt; &gt; &gt; (In reply to Don Olmstead from comment #29)
&gt; &gt; &gt; &gt; (In reply to Darin Adler from comment #28)
&gt; &gt; &gt; &gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; &gt; &gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; (In reply to Darin Adler from comment #27)
&gt; &gt; &gt; &gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; &gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; &gt; &gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &gt; &gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt; &gt; &gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt; &gt; &gt; &gt;         return;
&gt; &gt; &gt; &gt; &gt;     }
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Thanks for the hint! Always appreciated!
&gt; &gt; &gt; 
&gt; &gt; &gt; Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.
&gt; &gt; 
&gt; &gt; Did that cause no bindings test changes?
&gt; 
&gt; It did, sorry. I updated them at &lt;https://commits.webkit.org/r274909&gt;.
&gt; 
&gt; BTW, I don&apos;t know if I am going crazy or if something is wrong with my
&gt; machine but generating the JS bindings seems to be crazy slow. I wonder if
&gt; we regressed speed somewhat recently.

Can you quantify it anyway? As one data point, I haven&apos;t seen any bugs from ap about a compile time slowdown (which I usually do when I regress it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743061</commentid>
    <comment_count>34</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-23 16:24:21 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #32)
&gt; (In reply to Sam Weinig from comment #31)
&gt; &gt; (In reply to Chris Dumez from comment #30)
&gt; &gt; &gt; (In reply to Don Olmstead from comment #29)
&gt; &gt; &gt; &gt; (In reply to Darin Adler from comment #28)
&gt; &gt; &gt; &gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; &gt; &gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; (In reply to Darin Adler from comment #27)
&gt; &gt; &gt; &gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; &gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; &gt; &gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &gt; &gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt; &gt; &gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt; &gt; &gt; &gt;         return;
&gt; &gt; &gt; &gt; &gt;     }
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Thanks for the hint! Always appreciated!
&gt; &gt; &gt; 
&gt; &gt; &gt; Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.
&gt; &gt; 
&gt; &gt; Did that cause no bindings test changes?
&gt; 
&gt; It did, sorry. I updated them at &lt;https://commits.webkit.org/r274909&gt;.
&gt; 
&gt; BTW, I don&apos;t know if I am going crazy or if something is wrong with my
&gt; machine but generating the JS bindings seems to be crazy slow. I wonder if
&gt; we regressed speed somewhat recently.

r274832:
real	1m9.199s
user	0m29.724s
sys	0m38.310s

r273000:
real	1m6.759s
user	0m29.013s
sys	0m36.827s

Seems slow to regenerate bindings tests results on an iMac Pro but at least it&apos;s not a recent regression :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743494</commentid>
    <comment_count>35</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-24 12:56:02 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #30)
&gt; (In reply to Don Olmstead from comment #29)
&gt; &gt; (In reply to Darin Adler from comment #28)
&gt; &gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; &gt; 
&gt; &gt; (In reply to Darin Adler from comment #27)
&gt; &gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; &gt; 
&gt; &gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; &gt; 
&gt; &gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt; &gt;         return;
&gt; &gt; &gt;     }
&gt; &gt; 
&gt; &gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; &gt; 
&gt; &gt; Thanks for the hint! Always appreciated!
&gt; 
&gt; Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.

So after the change I was still getting the error.

If I manually add #include &quot;JSDOMConvertBase.h&quot; it compiles fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743496</commentid>
    <comment_count>36</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-24 12:58:58 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #35)
&gt; (In reply to Chris Dumez from comment #30)
&gt; &gt; (In reply to Don Olmstead from comment #29)
&gt; &gt; &gt; (In reply to Darin Adler from comment #28)
&gt; &gt; &gt; &gt; Can someone who is doing a non-unified build (Don?) try the above addition
&gt; &gt; &gt; &gt; to CodeGeneratorJS.pm with my suggestion above to see if it works?
&gt; &gt; &gt; 
&gt; &gt; &gt; (In reply to Darin Adler from comment #27)
&gt; &gt; &gt; &gt; (In reply to Don Olmstead from comment #26)
&gt; &gt; &gt; &gt; &gt; After this patch I see the following error in a non-unified build.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; The fix for this is to add the necessary includes. It looks like the
&gt; &gt; &gt; &gt; AddToIncludesForIDLType function is missing code for the case of
&gt; &gt; &gt; &gt; &quot;undefined&quot;. I think it might be something like this:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt;     if ($type-&gt;name eq &quot;undefined&quot;) {
&gt; &gt; &gt; &gt;         AddToIncludes(&quot;IDLTypes.h&quot;, $includesRef, $conditional);
&gt; &gt; &gt; &gt;         return;
&gt; &gt; &gt; &gt;     }
&gt; &gt; &gt; 
&gt; &gt; &gt; I can give that a shot. Might not get to it until tomorrow though.
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks for the hint! Always appreciated!
&gt; &gt; 
&gt; &gt; Follow-up build fix landed in &lt;https://commits.webkit.org/r274906&gt;.
&gt; 
&gt; So after the change I was still getting the error.

&quot;the&quot; error or a different error.

The error was:
&gt; use of undeclared identifier &apos;IDLUndefined&apos;

My patch included the right error for that type.

JSDOMConvertBase.h may be needed too, not for IDLUndefined.


&gt; 
&gt; If I manually add #include &quot;JSDOMConvertBase.h&quot; it compiles fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743499</commentid>
    <comment_count>37</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-24 13:03:52 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #36)
&gt; (In reply to Don Olmstead from comment #35)
&gt; &gt; So after the change I was still getting the error.
&gt; 
&gt; &quot;the&quot; error or a different error.

Yes, can we see the error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743507</commentid>
    <comment_count>38</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-24 13:06:59 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #37)
&gt; (In reply to Chris Dumez from comment #36)
&gt; &gt; (In reply to Don Olmstead from comment #35)
&gt; &gt; &gt; So after the change I was still getting the error.
&gt; &gt; 
&gt; &gt; &quot;the&quot; error or a different error.
&gt; 
&gt; Yes, can we see the error?

Yea sorry I misspoke. Should&apos;ve been `an` not `the`. It was just on the same line but now on toJS&lt;IDLUndefined&gt;.

WebCore/DerivedSources/JSWebGLLoseContext.cpp:147:57: error: &apos;IDLUndefined&apos; does not refer to a value
    RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS&lt;IDLUndefined&gt;(*lexicalGlobalObject, throwScope, [&amp;]() -&gt; decltype(auto) { return impl.loseContext(); })));
                                                        ^
../../Source/WebCore/bindings\IDLTypes.h:96:8: note: declared here
struct IDLUndefined : IDLType&lt;void&gt; { };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743525</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-24 13:48:37 -0700</bug_when>
    <thetext>Given that detail, I agree: we should use JSDOMConvertBase.h in AddToIncludesForIDLType instead of IDLTypes.h.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327587</attachid>
            <date>2017-11-26 11:54:19 -0800</date>
            <delta_ts>2017-11-26 13:43:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20171126115418.patch</filename>
            <type>text/plain</type>
            <size>441639</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzNyBAQAorMjAxNy0xMS0yNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbmVl
ZCB0byBzcGVjaWZ5IFtNYXlUaHJvd0V4Y2VwdGlvbl0gZm9yIG9wZXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDAxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNZXJjaGFu
dFZhbGlkYXRpb25FdmVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9X
ZWJLaXRNZWRpYUtleXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJz
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGw6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGw6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0aW9uRGVmaW5pdGlvbik6CisgICAgICAg
IChOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCk6CisgICAgICAgIChOZWVkc1Zv
aWRPcGVyYXRpb25DYWxsZXJGb3JQb3RlbnRpYWxFeGNlcHRpb25Qcm9wYWdhdGlvbik6CisgICAg
ICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUp
OgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzU3RhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaEJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGRCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQm9keSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25I
YXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1h
cExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRp
bmdGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zQm9k
eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uSW50ZXJmYWNl
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50c0JvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRB
cmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudEJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9w
ZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZh
dWx0VmFyaWFudEFyZ3VtZW50Qm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdzo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUaGlzT2JqZWN0OjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmczo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6
Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFN0cmlu
Z0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxi
YWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrVGhhdFNraXBz
SW52b2tlQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6
OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2Fm
ZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25Cb2R5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZUZ1bmN0aW9uSXRlbUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNX
b3JsZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
RW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFBy
aXZhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW5C
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aW9uSW5kZXhlZFNldHRlckJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMUJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blN1cHBsZW1lbnRhbE1ldGhvZDFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0Qm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25J
bmRleGVkU2V0dGVyQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyQm9keSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGg6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJv
ZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNl
dHRlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyMUJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3Rv
dHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcjJCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0
UmVzdWx0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajEp
OgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajIpOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNl
Y3JldFJlc3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbkJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRo
QXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25C
eXRlTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkJ5dGVNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhB
cmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9i
ak1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PYmpNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSW5z
dGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXJCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2RCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0
cmluZ1N0YXRpY01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2RCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmdCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0
YW5kYWxvbmVFbnVtQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0Fu
ZERlZmF1bHRWYWx1ZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZ0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0Fy
Z0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TZXJpYWxpemVkVmFsdWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2RC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGlj
QW5kUHJpdmF0ZU1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0U3RhdGVPYmpCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50Qm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhD
YWxsZXJXaW5kb3dBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVm
YXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNW
U3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZh
dWx0VmFsdWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzTnVsbEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZEJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc051bGxCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lz
RW1wdHlTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU5Cb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05h
TkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0JvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxVbnNpZ25lZExvbmdMb25nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9C
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU2VxdWVuY2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5Qm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55Qm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbE9iamVjdEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVXcmFwcGVySXNOdWxsQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlckJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxSZWNvcmRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmdCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rp
b25BbmRPcHRpb25hbEFyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qz
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0Qm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q1Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q2Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4Qm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QxMEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMTFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxM0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMkJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24xQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vp
c2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMxQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNo
aW5nVW5pb24xQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVs
bGFibGVVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRX
aXRoT3B0aW9uYWxVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRl
cjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENs
YW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2VCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0
aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRCeUlkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbnZlcnQxQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZUJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZEJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY05vZGVNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aEZsb2F0QXJndW1lbnRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMUJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jdGlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rp
b25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDFCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29u
ZGl0aW9uYWxPdmVybG9hZDJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFy
YW1ldGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ1ZmZlclNvdXJjZVBhcmFtZXRlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25C
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
aW5kb3dBbmRXb3JrZXJGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5j
dGlvbk5hbWVkSXRlbUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25G
dW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZ0JvZHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRl
bnRpZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvd0JvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51
bGxhYmxlU2VxdWVuY2VBcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9m
TnVsbGFibGVzQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmdCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENs
YW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhh
dFJlcXVpcmVzSW5jbHVkZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb246OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEltcGxlbWVudHMuaWRsOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGw6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGw6CisgICAgICAgICogY3NzL0NTU01lZGlh
UnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAgICAgICAgKiBjc3MvQ1NTU3VwcG9ydHNSdWxl
LmlkbDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4LmlkbDoKKyAgICAgICAgKiBjc3MvRE9NTWF0
cml4UmVhZE9ubHkuaWRsOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZS5pZGw6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0LmlkbDoKKyAgICAgICAgKiBjc3Mv
TWVkaWFMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbDoKKyAgICAg
ICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5pZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGw6CisgICAgICAgICogZG9t
L0RPTUltcGxlbWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NUG9pbnRSZWFkT25seS5p
ZGw6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXQuaWRsOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIu
aWRsOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaWRsOgorICAgICAgICAqIGRvbS9Ob2Rl
LmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmlkbDoKKyAgICAgICAgKiBkb20vUGFy
ZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1JhbmdlLmlkbDoKKyAgICAgICAgKiBkb20vVGV4
dC5pZGw6CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVHJl
ZVdhbGtlci5pZGw6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmlkbDoKKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbDoKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlz
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6CisgICAgICAgICog
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGw6CisgICAgICAgICogaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbDoKKyAgICAgICAg
KiBodG1sL09mZnNjcmVlbkNhbnZhcy5pZGw6CisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNJ
bWFnZURhdGEuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhdGgyRC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaWRsOgorICAgICAgICAqIHBhZ2UvQ3J5cHRvLmlkbDoKKyAgICAgICAgKiBw
YWdlL0RPTVNlbGVjdGlvbi5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAg
ICAgICAqIHBhZ2UvSGlzdG9yeS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5j
ZU9ic2VydmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGw6Cisg
ICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5pZGw6CisgICAgICAg
ICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5p
ZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdN
YXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0LmlkbDoKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdQb2ludC5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1BvaW50TGlzdC5pZGw6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3Qu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmlk
bDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5pZGw6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L0V4dGVuZGFibGVFdmVudC5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGw6CisgICAgICAg
ICogeG1sL0RPTVBhcnNlci5pZGw6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmlkbDoK
KyAgICAgICAgKiB4bWwvWFBhdGhFdmFsdWF0b3IuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV4
cHJlc3Npb24uaWRsOgorICAgICAgICAqIHhtbC9YUGF0aFJlc3VsdC5pZGw6CisKIDIwMTctMTEt
MjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luIElTTyBhbGxvY2F0ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjMgKzQwLDIzIEBACiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgU1RBVFVTX1BJTl9JTkNPUlJFQ1QgPSA2OwogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFNUQVRVU19QSU5fTE9DS09VVCA9IDc7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0YXRpYyBib29sZWFuIHN1cHBvcnRzVmVy
c2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBheW1l
bnRzKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhj
ZXB0aW9uXSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0YXRpYyBQcm9taXNlPGJvb2xl
YW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7CisgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBib29sZWFuIHN1cHBvcnRz
VmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBzdGF0aWMgYm9vbGVhbiBjYW5NYWtlUGF5bWVudHMoKTsKKyAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gY2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7
CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBQcm9taXNlPGJv
b2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYmVnaW4oKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgYWJvcnQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPVNj
cmlwdFN0YXRlXSB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGFueSBtZXJjaGFudFNl
c3Npb24pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NF
U1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihBcHBsZVBheVNo
aXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBDb25k
aXRpb25hbD1BUFBMRV9QQVlfU0VTU0lPTl9WM10gdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSB1cGRhdGUpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQg
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0
ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZ
X1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICB2b2lkIGJlZ2luKCk7CisgICAgdm9pZCBhYm9ydCgp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRh
dGlvbihhbnkgbWVyY2hhbnRTZXNzaW9uKTsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NF
U1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihBcHBsZVBheVNo
aXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7CisgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9T
RVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEFwcGxlUGF5
U2hpcHBpbmdDb250YWN0VXBkYXRlIHVwZGF0ZSk7CisgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BB
WV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihBcHBsZVBh
eVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsKKyAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZ
X1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQgcmVzdWx0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgQXBwbGVQ
YXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0
ZW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBw
aW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFwcGxlUGF5TGluZUl0ZW0gbmV3VG90YWws
IHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJdGVtcyk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheUxp
bmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjb21wbGV0ZVBheW1lbnQodW5zaWduZWQg
c2hvcnQgc3RhdHVzKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
dW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5j
ZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOworICAgIHZvaWQgY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBzZXF1ZW5jZTxBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFwcGxlUGF5TGluZUl0ZW0g
bmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJdGVtcyk7CisgICAg
dm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oQXBwbGVQYXlMaW5lSXRlbSBuZXdU
b3RhbCwgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudCh1bnNpZ25lZCBzaG9ydCBzdGF0dXMpOwogCiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbnZhbGlkYXRlbWVyY2hhbnQ7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbnBheW1lbnRtZXRob2RzZWxlY3RlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNZXJjaGFudFZhbGlkYXRpb25FdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXlt
ZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVz
dC9BcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNSArMjcsNSBAQAogICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSZQQVlNRU5UX1JFUVVFU1Qs
CiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheU1lcmNoYW50VmFs
aWRhdGlvbkV2ZW50IDogQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQgewotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgY29tcGxldGUoYW55IG1lcmNo
YW50U2Vzc2lvbik7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIGNvbXBsZXRlKGFueSBt
ZXJjaGFudFNlc3Npb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29u
L05hdmlnYXRvckJlYWNvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNSArMjgsNSBAQCB0eXBlZGVmIChCbG9iIG9yIEJ1ZmZlclNvdXJjZSBvciBET01G
b3JtCiBbCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1CZWFjb25BUEksCiBdIHBhcnRpYWwgaW50ZXJm
YWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIEJvZHlJbml0PyBk
YXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBib29sZWFuIHNlbmRCZWFjb24o
VVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/IGRhdGEgPSBudWxsKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDYgQEAK
ICAgICBFbmFibGVkQXRSdW50aW1lPUVuY3J5cHRlZE1lZGlhQVBJLAogICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRpYUtleXMgewotICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9u
IGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9
ICJ0ZW1wb3JhcnkiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gTWVk
aWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBz
ZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKICAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNl
cnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgdXBkYXRlKFVpbnQ4QXJyYXkga2V5KTsKKyAgICB2b2lkIHVwZGF0ZShVaW50OEFycmF5IGtl
eSk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b253ZWJraXRrZXlhZGRlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiAgICAgRW5hYmxlZEF0UnVu
dGltZT1MZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSSwKIF0gaW50ZXJmYWNlIFdlYktpdE1lZGlhS2V5
cyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0
aW9uXSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcgdHlwZSwg
VWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKERPTVN0cmluZyB0eXBlLCBV
aW50OEFycmF5IGluaXREYXRhKTsKICAgICBzdGF0aWMgYm9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQo
RE9NU3RyaW5nIGtleVN5c3RlbSwgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUpOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIHR5cGVkZWYgKHNlcXVlbmNlPHNlcXVlbmNlPEJ5
dGVTdHJpbmc+PiAKICAgICBDb25zdHJ1Y3RvcihvcHRpb25hbCBIZWFkZXJzSW5pdCBpbml0KSwK
ICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFk
ZXJzIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFt
ZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRl
ZEFzPXJlbW92ZV0gdm9pZCBkZWxldGUoQnl0ZVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEJ5dGVTdHJpbmc/IGdldChCeXRlU3RyaW5nIG5hbWUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXMoQnl0ZVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0KEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Cisg
ICAgdm9pZCBhcHBlbmQoQnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKKyAgICBb
SW1wbGVtZW50ZWRBcz1yZW1vdmVdIHZvaWQgZGVsZXRlKEJ5dGVTdHJpbmcgbmFtZSk7CisgICAg
Qnl0ZVN0cmluZz8gZ2V0KEJ5dGVTdHJpbmcgbmFtZSk7CisgICAgYm9vbGVhbiBoYXMoQnl0ZVN0
cmluZyBuYW1lKTsKKyAgICB2b2lkIHNldChCeXRlU3RyaW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFs
dWUpOwogCiAgICAgaXRlcmFibGU8Qnl0ZVN0cmluZywgQnl0ZVN0cmluZz47CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHR5cGVkZWYgKEJsb2Igb3IgQnVm
ZmVyU291cmNlIG9yIERPTUZvcm0KICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlu
dGVncml0eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBrZWVwYWxpdmU7CiAKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb24sIE5l
d09iamVjdF0gRmV0Y2hSZXF1ZXN0IGNsb25lKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXF1ZXN0IGNsb25lKCk7CiB9OwogCiBGZXRj
aFJlcXVlc3QgaW1wbGVtZW50cyBGZXRjaEJvZHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZGljdGlvbmFyeSBGZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAg
SW50ZXJmYWNlTmFtZT1SZXNwb25zZSwKIF0gaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIHN0YXRpYyBGZXRj
aFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIHJlZGly
ZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IDMwMik7
CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gc3RhdGlj
IEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRjaFJlc3Bv
bnNlVHlwZSB0eXBlOwogCkBAIC02MSw3ICs2MSw3IEBAIGRpY3Rpb25hcnkgRmV0Y2hSZXNwb25z
ZUluaXQgewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdHJhaWxlcnMuCiAgICAgLy8g
cmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8SGVhZGVycz4gdHJhaWxlcjsKIAotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0
XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOwogfTsKIAogRmV0Y2hSZXNw
b25zZSBpbXBsZW1lbnRzIEZldGNoQm9keTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzUsOSArMzUsOSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkga2V5OwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtleTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgdXBkYXRlKGFueSB2YWx1ZSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWdu
ZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFz
PWNvbnRpbnVlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbnRpbnVlKG9wdGlv
bmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgY29udGludWVQcmltYXJ5S2V5KGFueSBrZXksIGFueSBwcmltYXJ5S2V5KTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb24sIE1h
eVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gSURCUmVxdWVzdCB1cGRhdGUoYW55IHZhbHVlKTsKKyAgICB2b2lkIGFkdmFuY2Uo
W0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVuY3Rpb25dIHZvaWQgY29udGludWUob3B0
aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGNvbnRpbnVl
UHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE0
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlTmFtZXM7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3Jl
KERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1l
dGVycyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKERP
TVN0cmluZyBuYW1lKTsKKyAgICBJREJPYmplY3RTdG9yZSBjcmVhdGVPYmplY3RTdG9yZShET01T
dHJpbmcgbmFtZSwgb3B0aW9uYWwgSURCT2JqZWN0U3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
OworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigoRE9NU3RyaW5nIG9y
IHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMsIG9wdGlvbmFsIElEQlRyYW5zYWN0aW9u
TW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24o
KERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+KSBzdG9yZU5hbWVzLCBvcHRpb25hbCBJ
REJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIpOwogCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IHBhcnQgb2YgdGhlIHNwZWMsIGJ1dCBpcyBuZWVkZWQgZm9yIGNvbXBhdGliaWxp
dHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvSW5kZXhlZERCL2lzc3Vlcy84
NQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9N
U3RyaW5nTGlzdCBzdG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9
ICJyZWFkb25seSIpOworICAgIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKERPTVN0cmluZ0xp
c3Qgc3RvcmVOYW1lcywgb3B0aW9uYWwgSURCVHJhbnNhY3Rpb25Nb2RlIG1vZGUgPSAicmVhZG9u
bHkiKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
YWJvcnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAogICAgIFNraXBWVGFibGVWYWxpZGF0
aW9uLAogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9N
U3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2
ZXJzaW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dF
eGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3QgZGVsZXRlRGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNt
cChhbnkgZmlyc3QsIGFueSBzZWNvbmQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtF
bmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCT3BlbkRCUmVxdWVzdCBkZWxldGVEYXRhYmFzZShE
T01TdHJpbmcgbmFtZSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBzaG9ydCBjbXAoYW55
IGZpcnN0LCBhbnkgc2Vjb25kKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDIwICszOSwyMCBAQCB0eXBlZGVmIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlFbnRyeTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1h
eVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9
ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
SURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVx
dWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlv
bmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElE
QkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwogCi0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9w
dGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25h
bCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGVdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0g
Im5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3Qgb3BlbktleUN1
cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5l
eHQiKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElE
QlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KElE
QktleVJhbmdlPyBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNl
cHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxv
bmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25d
IElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2ln
bmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNl
cHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdl
dEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBj
b3VudCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsKTsKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGNvdW50
KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXQoSURC
S2V5UmFuZ2U/IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdl
dChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5
KElEQktleVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVz
dCBnZXRLZXkoYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0
IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5m
b3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVu
c2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVz
dCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFs
IFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
SURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgY291bnQoYW55IGtleSk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdl
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb3dlck9wZW47CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gdXBwZXJPcGVuOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIG9ubHkoYW55IHZhbHVlKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5
UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlvbmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNl
KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMg
SURCS2V5UmFuZ2UgdXBwZXJCb3VuZChhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gb3BlbiA9
IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBz
dGF0aWMgSURCS2V5UmFuZ2UgYm91bmQoYW55IGxvd2VyLCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJv
b2xlYW4gbG93ZXJPcGVuID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gdXBwZXJPcGVuID0gZmFs
c2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gc3RhdGljIElEQktleVJhbmdlIG9ubHko
YW55IHZhbHVlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHN0YXRpYyBJREJLZXlSYW5n
ZSBsb3dlckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuID0gZmFsc2UpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gc3RhdGljIElEQktleVJhbmdlIHVwcGVyQm91bmQo
YW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4gPSBmYWxzZSk7CisgICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlXSBzdGF0aWMgSURCS2V5UmFuZ2UgYm91bmQoYW55IGxvd2VyLCBhbnkgdXBw
ZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4g
dXBwZXJPcGVuID0gZmFsc2UpOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBpbmNsdWRlcyhhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0U3RhdGVdIGJvb2xlYW4gaW5jbHVkZXMoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyOCArMzksMjggQEAgdHlwZWRlZiAo
RE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJ
REJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBhdXRvSW5jcmVtZW50OwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGFk
ZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJl
cXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5nZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
SURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQo
YW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
SURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBj
bGVhcigpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElE
QlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBv
cHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbQ2Fs
bFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJz
b3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0
Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9w
dGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbktleUN1
cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5l
eHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25h
bCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2Ny
aXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbChhbnkga2V5LCBv
cHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMo
b3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5n
ZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtF
bmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBu
YW1lLCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIGtleVBhdGgsIG9wdGlvbmFs
IElEQkluZGV4UGFyYW1ldGVycyBvcHRpb25zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElE
QkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlID0gbnVsbCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwgb3B0aW9uYWwgYW55IGtleSk7CisgICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFs
IGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxl
dGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElE
QlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURC
UmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
XSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElE
QlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSBJREJSZXF1ZXN0IGNsZWFyKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJS
ZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0
aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwgb3B0aW9uYWwg
SURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/
IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJu
ZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJz
b3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0
Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25h
bCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNp
Z25lZCBsb25nIGNvdW50KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3Qg
Z2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291
bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9w
dGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2Vd
IHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVx
dWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCSW5kZXggY3JlYXRl
SW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPikg
a2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAgIElEQklu
ZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KERPTVN0cmlu
ZyBuYW1lKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgY291bnQob3B0
aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogfTsKIAogZGljdGlvbmFyeSBJREJJbmRl
eFBhcmFtZXRlcnMgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw4ICszNSw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkRhdGFiYXNlIGRi
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FeGNlcHRpb24gZXJyb3I7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1l
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKKyAgICBJREJPYmplY3RT
dG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSk7CisgICAgdm9pZCBhYm9ydCgpOwogCiAg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFib3J0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb25jb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNTQsMTcgKzU0LDE3IEBAIGVudW0gUmVhZHlTdGF0ZSB7CiAKICAgICBhdHRyaWJ1dGUg
dW5yZXN0cmljdGVkIGRvdWJsZSBkdXJhdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U291cmNlQnVmZmVyIGFkZFNvdXJjZUJ1ZmZlcihET01TdHJpbmcgdHlwZSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIgYnVmZmVy
KTsKKyAgICBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVmZmVyKERPTVN0cmluZyB0eXBlKTsKKyAg
ICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIgYnVmZmVyKTsKIAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBSZWFkeVN0YXRlIHJlYWR5U3RhdGU7CiAgICAgCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIGVuZE9mU3RyZWFtKG9wdGlvbmFsIEVuZE9mU3RyZWFtRXJyb3Ig
ZXJyb3IpOworICAgIHZvaWQgZW5kT2ZTdHJlYW0ob3B0aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBl
cnJvcik7CiAKICAgICBzdGF0aWMgYm9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQgKERPTVN0cmluZyB0
eXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRMaXZlU2Vla2FibGVSYW5n
ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBjbGVhckxpdmVTZWVrYWJsZVJhbmdlKCk7CisgICAgdm9pZCBzZXRMaXZlU2Vla2FibGVSYW5n
ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAgIHZvaWQgY2xlYXJMaXZlU2Vla2FibGVS
YW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZW9wZW47CiAgICAg
YXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZWVuZGVkOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMSArNTcsMTEgQEAKICAgICBhdHRyaWJ1
dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRXaW5kb3dFbmQ7CiAKICAgICAvLyBBcHBlbmQg
c2VnbWVudCBkYXRhLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIo
QnVmZmVyU291cmNlIGRhdGEpOworICAgIHZvaWQgYXBwZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBk
YXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNl
LgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCByZW1vdmUoZG91YmxlIHN0YXJ0LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVu
ZCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIHZvaWQgcmVtb3ZlKGRvdWJsZSBzdGFydCwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnVw
ZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251cGRhdGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRl
ci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAK
ICAgICBFbmFibGVkQXRSdW50aW1lPVBlZXJDb25uZWN0aW9uLAogXSBpbnRlcmZhY2UgUlRDRFRN
RlNlbmRlciA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBGSVhNRSAxNjk2NjI6IGNoYW5nZSB0byB1
bnNpZ25lZCBsb25nIHdpdGggZGVmYXVsdHMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
aW5zZXJ0RFRNRihET01TdHJpbmcgdG9uZXMsIG9wdGlvbmFsIGxvbmcgZHVyYXRpb24sIG9wdGlv
bmFsIGxvbmcgaW50ZXJUb25lR2FwKTsKKyAgICB2b2lkIGluc2VydERUTUYoRE9NU3RyaW5nIHRv
bmVzLCBvcHRpb25hbCBsb25nIGR1cmF0aW9uLCBvcHRpb25hbCBsb25nIGludGVyVG9uZUdhcCk7
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRvbmVjaGFuZ2U7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyB0b25lQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0MywxMCBAQAogCiAgICAgYXR0
cmlidXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNW
U3RyaW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lk
IHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIHZvaWQgc2VuZChCbG9iIGRhdGEpOwor
ICAgIHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAKICAgICB2b2lkIGNsb3NlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRy
CiAgICAgSlNCdWlsdGluQ29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9u
IDogRXZlbnRUYXJnZXQgewogICAgIC8vIEpTIGJ1aWx0LWluIGNvbnN0cnVjdG9yIGhhbmRsZXMg
dGhlIG9wdGlvbmFsIFJUQ0NvbmZpZ3VyYXRpb24KLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIENh
bGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBpbml0aWFsaXplV2l0aChS
VENDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOworICAgIFtQcml2YXRlSWRlbnRpZmllciwg
Q2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoUlRDQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uKTsKIAogCiAgICAgLy8gNC4zLjIgSW50ZXJmYWNlIERlZmluaXRpb24KQEAg
LTkzLDcgKzkzLDcgQEAgdHlwZWRlZiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBSdHBUcgog
ICAgIC8vIEZJWE1FIDE2OTY0NDogbWlzc2luZyBkZWZhdWx0SWNlU2VydmVycwogCiAgICAgUlRD
Q29uZmlndXJhdGlvbiBnZXRDb25maWd1cmF0aW9uKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsK
KyAgICB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmVn
b3RpYXRpb25uZWVkZWQ7CkBAIC0xMjMsMTAgKzEyMywxMCBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgc2VxdWVuY2U8UlRDUnRwUmVjZWl2ZXI+IGdldFJl
Y2VpdmVycygpOwogICAgIHNlcXVlbmNlPFJUQ1J0cFRyYW5zY2VpdmVyPiBnZXRUcmFuc2NlaXZl
cnMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllciwgTWF5VGhy
b3dFeGNlcHRpb25dIFJUQ1J0cFNlbmRlciBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNr
LCBNZWRpYVN0cmVhbS4uLiBzdHJlYW1zKTsKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFB1Ymxp
Y0lkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNl
bmRlciBzZW5kZXIpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0g
UlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIE1lZGlhU3RyZWFt
Li4uIHN0cmVhbXMpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0g
dm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2VuZGVyKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoKE1lZGlhU3RyZWFtVHJh
Y2sgb3IgRE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGlu
aXQpOworICAgIFJUQ1J0cFRyYW5zY2VpdmVyIGFkZFRyYW5zY2VpdmVyKChNZWRpYVN0cmVhbVRy
YWNrIG9yIERPTVN0cmluZykgdHJhY2ssIG9wdGlvbmFsIFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBp
bml0KTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb250cmFjazsKIApAQCAtMTM0LDcg
KzEzNCw3IEBAIHR5cGVkZWYgUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gUnRwVHIKICAgICAv
LyA2LjEgUGVlci10by1wZWVyIGRhdGEgQVBJCiAgICAgLy8gRklYTUUgMTY5NjQ0OiBtaXNzaW5n
IHNjdHAKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBv
cHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUlRDRGF0YUNo
YW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJp
bmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9uZGF0YWNoYW5uZWw7CiAKIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiAgICAgU2VjdXJlQ29udGV4dAogXSBpbnRlcmZhY2UgUGF5bWVudFJlcXVlc3QgOiBFdmVudFRh
cmdldCB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPFBheW1lbnRSZXNwb25zZT4g
c2hvdygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTx2b2lkPiBhYm9ydCgpOwor
ICAgIFByb21pc2U8dm9pZD4gYWJvcnQoKTsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21p
c2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnQoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDUg
KzMwLDUgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBTZWN1cmVDb250ZXh0CiBdIGludGVy
ZmFjZSBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IDogRXZlbnQgewotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCB1cGRhdGVXaXRoKFByb21pc2U8UGF5bWVudERldGFpbHNVcGRhdGU+IGRl
dGFpbHNQcm9taXNlKTsKKyAgICB2b2lkIHVwZGF0ZVdpdGgoUHJvbWlzZTxQYXltZW50RGV0YWls
c1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzksNSArMzksNSBAQAogCiAgICAgLy8gQ2hhbm5lbCBhY2Nlc3MKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRmxvYXQzMkFycmF5IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcg
Y2hhbm5lbEluZGV4KTsKKyAgICBGbG9hdDMyQXJyYXkgZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQg
bG9uZyBjaGFubmVsSW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQAogICAgIGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGxvb3BTdGFydDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0
cmljdGVkIGRvdWJsZSBsb29wRW5kOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0
YXJ0KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDAsIG9wdGlvbmFsIHVucmVz
dHJpY3RlZCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91
YmxlIGdyYWluRHVyYXRpb24pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdG9wKG9w
dGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDApOworICAgIHZvaWQgc3RhcnQob3B0
aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVk
IGRvdWJsZSBncmFpbk9mZnNldCA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgZ3Jh
aW5EdXJhdGlvbik7CisgICAgdm9pZCBzdG9wKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUg
d2hlbiA9IDApOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZGVkOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBAQCBlbnVtIEF1
ZGlvQ29udGV4dFN0YXRlIHsKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
cyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKICAgICAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5l
bHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1w
bGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZl
cihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKyAgICBBdWRpb0J1ZmZl
ciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBs
b25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
QXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhU
b01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4K
ICAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNob3VsZCBiZSBvcHRpb25hbCBhbmQgdGhl
IGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxlLiBUaGlzIHNob3VsZCBhbHNvIHJldHVy
biBhIFByb21pc2UuCkBAIC03MSwyNyArNzEsMjcgQEAgZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7
CiAgICAgLy8gU291cmNlcwogICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBjcmVhdGVCdWZmZXJT
b3VyY2UoKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1l
ZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFF
bGVtZW50IG1lZGlhRWxlbWVudCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFT
dHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1N
RURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFt
U291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFt
RGVzdGluYXRpb24oKTsKIAogICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKICAgICBHYWluTm9kZSBj
cmVhdGVHYWluKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVs
YXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKKyAgICBE
ZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxh
eVRpbWUgPSAxKTsKICAgICBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOwog
ICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKICAgICBQYW5uZXJOb2RlIGNy
ZWF0ZVBhbm5lcigpOwogICAgIENvbnZvbHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7CiAgICAg
RHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKICAgICBB
bmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNj
cmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5u
ZWxzID0gMik7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Io
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKICAgICBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2Np
bGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVy
aW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CisgICAgUGVy
aW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFy
cmF5IGltYWcpOwogCiAgICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0
dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0gNik7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKyAgICBDaGFubmVsU3Bs
aXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51
bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxN
ZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwogCiAgICAg
Ly8gT2ZmbGluZSByZW5kZXJpbmcKICAgICAvLyB2b2lkIHByZXBhcmVPZmZsaW5lQnVmZmVyUmVu
ZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBj
aGFubmVsQ291bnRNb2RlOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgY2hhbm5lbEludGVycHJl
dGF0aW9uOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbm5lY3QoQXVkaW9Ob2Rl
IGRlc3RpbmF0aW9uLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG91dHB1dCA9IDAsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgaW5wdXQgPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
Y29ubmVjdChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG91
dHB1dCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkaXNjb25uZWN0KG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7CisgICAgdm9pZCBjb25uZWN0KEF1ZGlvTm9k
ZSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGlucHV0ID0gMCk7CisgICAgdm9pZCBjb25uZWN0KEF1ZGlvUGFyYW0g
ZGVzdGluYXRpb24sIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7CisgICAgdm9p
ZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIGVu
dW0gT3NjaWxsYXRvclR5cGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZy
ZXF1ZW5jeTsgLy8gaW4gSGVydHoKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBk
ZXR1bmU7IC8vIGluIENlbnRzCiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RhcnQo
b3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7
CisgICAgdm9pZCBzdGFydChvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHdoZW4gPSAwKTsK
KyAgICB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7CiAK
ICAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmU/IHdhdmUpOyAvLyBGSVhNRTog
VGhlIHBhcmFtZXRlciBzaG91bGQgbm90IGJlIG51bGxhYmxlLgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRh
dGFiYXNlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDUgKzI1LDUgQEAKICAqLwogCiBwYXJ0aWFsIGludGVyZmFjZSBET01XaW5kb3cgewotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRGF0YWJhc2U/IG9wZW5EYXRhYmFzZShET01TdHJpbmcgbmFtZSwg
RE9NU3RyaW5nIHZlcnNpb24sIERPTVN0cmluZyBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplLCBvcHRpb25hbCBEYXRhYmFzZUNhbGxiYWNrPyBjcmVhdGlvbkNhbGxiYWNr
KTsKKyAgICBEYXRhYmFzZT8gb3BlbkRhdGFiYXNlKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcg
dmVyc2lvbiwgRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUsIG9wdGlvbmFsIERhdGFiYXNlQ2FsbGJhY2s/IGNyZWF0aW9uQ2FsbGJhY2spOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVucmVzdHJpY3Rl
ZCBkb3ViCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFNRTFJl
c3VsdFNldFJvd0xpc3QgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVl
PiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHJlY29yZDxET01TdHJpbmcsIFNRTFZh
bHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNSArMzEsNSBAQCB0eXBlZGVmIChE
T01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiBbCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRp
b24sCiBdIGludGVyZmFjZSBTUUxUcmFuc2FjdGlvbiB7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVu
Y2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJh
Y2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPyBlcnJvckNh
bGxiYWNrKTsKKyAgICB2b2lkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgb3B0
aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0aW9uYWwgU1FMU3Rh
dGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBiaW5hcnlUeXBl
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3RyaW5nIGRhdGEpOworICAgIHZvaWQgc2Vu
ZChBcnJheUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEp
OworICAgIHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAgIHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0
YSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1w
XSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBET01TdHJpbmcgcmVhc29uKTsKKyAgICB2
b2lkIGNsb3NlKG9wdGlvbmFsIFtDbGFtcF0gdW5zaWduZWQgc2hvcnQgY29kZSwgb3B0aW9uYWwg
RE9NU3RyaW5nIHJlYXNvbik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1
IEBACiAgICAgQ29uc3RydWN0b3IoRWxlbWVudD8gdGFyZ2V0LCBvYmplY3Q/IGtleWZyYW1lcykK
IF0gaW50ZXJmYWNlIEtleWZyYW1lRWZmZWN0IDogQW5pbWF0aW9uRWZmZWN0IHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGFyZ2V0OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
Q2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVz
KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8g
a2V5ZnJhbWVzKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0
aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dl
YkFuaW1hdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDYgQEAKICAgICBhdHRy
aWJ1dGUgQW5pbWF0aW9uRWZmZWN0PyBlZmZlY3Q7CiAgICAgYXR0cmlidXRlIEFuaW1hdGlvblRp
bWVsaW5lPyB0aW1lbGluZTsKICAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1N0YXJ0VGltZV0g
YXR0cmlidXRlIGRvdWJsZT8gc3RhcnRUaW1lOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1w
bGVtZW50ZWRBcz1iaW5kaW5nc0N1cnJlbnRUaW1lXSBhdHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50
VGltZTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc0N1cnJlbnRUaW1lXSBhdHRyaWJ1dGUg
ZG91YmxlPyBjdXJyZW50VGltZTsKICAgICBhdHRyaWJ1dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QmFz
ZS5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4Nyw2IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4Y2VwdGlvblQKIH0KIAogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXN0cnVjdCBJc0V4Y2VwdGlvbk9yIDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3Rh
bnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxUPiwgRXhjZXB0aW9uT3I+Ojp2
YWx1ZT4geyB9OwotCi0KIC8vIENvbnZlcnNpb24gZnJvbSBJbXBsZW1lbnRhdGlvbiAtPiBKU1Zh
bHVlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNCArNjMsMjEgQEAgcHVibGljOgogICAgIH0KIH07CiAKK3N0cnVj
dCBWb2lkT3BlcmF0aW9uQ2FsbGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
ICAgIHN0YXRpYyBhdXRvIGNhbGwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBG
dW5jdG9yJiYgZnVuY3RvcikgLT4gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPEV4Y2Vw
dGlvbk9yPHZvaWQ+LCBkZWNsdHlwZShmdW5jdG9yKCkpPjo6dmFsdWU+CisgICAgeworICAgICAg
ICBmdW5jdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAg
ICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlLCBGdW5jdG9yJiYgZnVuY3RvcikgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX3NhbWU8RXhjZXB0aW9uT3I8dm9pZD4sIGRlY2x0eXBlKGZ1bmN0b3IoKSk+Ojp2YWx1ZT4K
KyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZnVuY3RvcigpOworICAgICAgICBpZiAoIXJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
KTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTUxODQsOCArNTE4NCwxMyBAQCBzdWIgR2VuZXJh
dGVPcGVyYXRpb25EZWZpbml0aW9uCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBh
cmd1bWVudHMsICR2YWx1ZSk7CiAgICAgICAgIH0KKwogICAgICAgICBteSAkZnVuY3Rpb25TdHJp
bmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7
Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0
aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhj
ZXB0aW9uQ2FsbCgkb3BlcmF0aW9uKTsKKworICAgICAgICBpZiAoTmVlZHNWb2lkT3BlcmF0aW9u
Q2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0aW9uUHJvcGFnYXRpb24oJG9wZXJhdGlvbikpIHsKKyAg
ICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuICRmdW5jdGlvblN0cmluZzsgfSkiOworICAg
ICAgICB9CisKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGlu
dGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpIikg
LiAiKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCkBAIC01
NTUyLDcgKzU1NTcsMjggQEAgc3ViIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxs
CiAKICAgICByZXR1cm4gMCB1bmxlc3MgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWF5VGhyb3dFeGNlcHRpb259OwogCi0gICAgcmV0dXJuICRvcGVyYXRpb24tPnR5cGUgJiYgKCRv
cGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21p
c2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpIHx8IE9wZXJhdGlvbkhhc0ZvcmNlZFJldHVyblZhbHVl
KCRvcGVyYXRpb24pKTsKKyAgICAjIENvbnN0cnVjdG9yIG9wZXJlcmF0aW9ucywgd2hpY2ggZG8g
bm90IGhhdmUgYSB0eXBlLCBuZXZlciBuZWVkIHRvIHVzZSBwcm9wYWdhdGVFeGNlcHRpb24uCisg
ICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPnR5cGU7CisKKyAgICByZXR1cm4gMSBpZiAk
b3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdl
bmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKTsKKyAgICByZXR1cm4gMSBp
ZiBPcGVyYXRpb25IYXNGb3JjZWRSZXR1cm5WYWx1ZSgkb3BlcmF0aW9uKTsKKworICAgIHJldHVy
biAwOworfQorCitzdWIgTmVlZHNWb2lkT3BlcmF0aW9uQ2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0
aW9uUHJvcGFnYXRpb24KK3sKKyAgICBteSAoJG9wZXJhdGlvbikgPSBAXzsKKworICAgICMgQ29u
c3RydWN0b3Igb3BlcmVyYXRpb25zLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR5cGUsIG5ldmVyIG5l
ZWQgdG8gdXNlIFZvaWRPcGVyYXRpb25DYWxsZXIuCisgICAgcmV0dXJuIDAgdW5sZXNzICRvcGVy
YXRpb24tPnR5cGU7CisKKyAgICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVx
ICJ2b2lkIjsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgk
b3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJv
bWlzZVByb3h5fTsKKyAgICByZXR1cm4gMSBpZiBPcGVyYXRpb25IYXNGb3JjZWRSZXR1cm5WYWx1
ZSgkb3BlcmF0aW9uKTsKKworICAgIHJldHVybiAwOwogfQogCiBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKQEAgLTU2NzQsNyArNTcwMCwxMCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZNb3ZlKHByb21pc2UpIikgaWYgJG9wZXJhdGlv
bi0+dHlwZSAmJiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBl
KSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKIAog
ICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBh
cmd1bWVudHMpIC4gIikiOwotICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRp
b24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0
UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkb3BlcmF0aW9uKTsKKworICAgIGlmIChOZWVkc1ZvaWRP
cGVyYXRpb25DYWxsZXJGb3JQb3RlbnRpYWxFeGNlcHRpb25Qcm9wYWdhdGlvbigkb3BlcmF0aW9u
KSkgeworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAiVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiAkZnVuY3Rpb25TdHJpbmc7IH0pIjsK
KyAgICB9CiAKICAgICByZXR1cm4gJGZ1bmN0aW9uU3RyaW5nOwogfQpAQCAtNjQ4OCw0MCArNjUx
Nyw2IEBAIHN1YiBVbnNhZmVUb05hdGl2ZQogICAgIHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29u
dmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0Q29udmVydCgiIC4gam9pbigiLCAiLCBAY29udmVyc2lv
bkFyZ3VtZW50cykgLiAiKSIsIDEpOwogfQogCi1zdWIgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVy
dE5lZWRzU3RhdGUKLXsKLSAgICBteSAoJHR5cGUpID0gQF87Ci0KLSAgICAjIEZJWE1FOiBXZSBu
ZWVkIGEgbW9yZSByb2J1c3Qgd2F5IHRvIHNwZWNpZnkgdGhpcyByZXF1aXJlbWVudCBzbyBhcyBu
b3QKLSAgICAjIHRvIHJlcXVpcmUgc3BlY2lhbGl6aW5nIGVhY2ggdHlwZS4gUGVyaGFwcyBqdXN0
IHJlcXVpcmluZyBhbGwgb3ZlcnJpZGUKLSAgICAjIHR5cGVzIHRvIHRha2UgYm90aCBzdGF0ZSBh
bmQgdGhlIGdsb2JhbCBvYmplY3Qgd291bGQgd29yaz8KLSAgICBpZiAoJHR5cGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e092ZXJyaWRlSURMVHlwZX0pIHsKLSAgICAgICAgbXkgJG92ZXJyaWRlVHlw
ZU5hbWUgPSAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57T3ZlcnJpZGVJRExUeXBlfTsKLSAg
ICAgICAgcmV0dXJuIDEgaWYgJG92ZXJyaWRlVHlwZU5hbWUgZXEgIklETElEQktleSI7Ci0gICAg
ICAgIHJldHVybiAxIGlmICRvdmVycmlkZVR5cGVOYW1lIGVxICJJRExXZWJHTEFueSI7Ci0gICAg
ICAgIHJldHVybiAxIGlmICRvdmVycmlkZVR5cGVOYW1lIGVxICJJRExXZWJHTEV4dGVuc2lvbiI7
Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
YWN0dWFsbHkgY2hlY2sgaWYgYWxsIHRoZSBzdWItb2JqZWN0cyBvZiB0aGUgdW5pb24gbmVlZCB0
aGUgc3RhdGUuCi0gICAgcmV0dXJuIDEgaWYgJHR5cGUtPmlzVW5pb247Ci0gICAgcmV0dXJuIDEg
aWYgJGNvZGVHZW5lcmF0b3ItPklzU2VxdWVuY2VPckZyb3plbkFycmF5VHlwZSgkdHlwZSk7Ci0g
ICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzUmVjb3JkVHlwZSgkdHlwZSk7Ci0gICAg
cmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7Ci0gICAgcmV0
dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwotICAgIHJldHVybiAx
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4g
MSBpZiAkY29kZUdlbmVyYXRvci0+SXNJbnRlcmZhY2VUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4g
MSBpZiAkY29kZUdlbmVyYXRvci0+SXNCdWZmZXJTb3VyY2VUeXBlKCR0eXBlKTsKLSAgICByZXR1
cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSk7Ci0gICAgcmV0dXJu
IDEgaWYgJHR5cGUtPm5hbWUgZXEgIkRhdGUiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1l
IGVxICJKU09OIjsKLSAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIjsKLSAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29s
dmVyIjsKLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQogc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNv
bnZlcnROZWVkc0dsb2JhbE9iamVjdAogewogICAgIG15ICgkdHlwZSkgPSBAXzsKQEAgLTY1ODIs
NyArNjU3Nyw2IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgIG15ICRjb25kaXRpb25hbCA9
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgbXkgJHR5
cGUgPSAkY29udGV4dC0+dHlwZTsKLSAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSByZWYoJGNv
bnRleHQpIGVxICJJRExBdHRyaWJ1dGUiIHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntNYXlUaHJvd0V4Y2VwdGlvbn07CiAKICAgICAjIFdlIGNvdWxkIGluc3RlYWQgb3ZlcmxvYWQg
YSBmdW5jdGlvbiB0byB3b3JrIHdpdGggb3B0aW9uYWwgYXMgd2VsbCBhcyBub24tb3B0aW9uYWwg
bnVtYmVycywgYnV0IHRoaXMKICAgICAjIGlzIHNsaWdodGx5IGJldHRlciBiZWNhdXNlIGl0IGd1
YXJhbnRlZXMgd2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUgaWYgdGhlIElETCBmaWxlIGRvZXNuJ3Qg
bWF0Y2ggdGhlIEMrKy4KQEAgLTY2MDIsOSArNjU5Niw5IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUK
ICAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogCiAgICAg
bXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKLSAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1l
bnRzLCAkc3RhdGVSZWZlcmVuY2UpIGlmIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0
YXRlKCR0eXBlKSB8fCAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgcHVzaChAY29udmVyc2lvbkFy
Z3VtZW50cywgJHN0YXRlUmVmZXJlbmNlKTsKICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRz
LCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKSBpZiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVl
ZHNHbG9iYWxPYmplY3QoJHR5cGUpOwotICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICJ0
aHJvd1Njb3BlIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgIHB1c2goQGNvbnZlcnNpb25B
cmd1bWVudHMsICJ0aHJvd1Njb3BlIik7CiAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywg
JHZhbHVlKTsKIAogICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TmV3T2JqZWN0fSA/ICJ0b0pTTmV3bHlDcmVhdGVkIiA6ICJ0b0pTIjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50cy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJ
bXBsZW1lbnRzLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbXBsZW1lbnRzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNyBAQAogICAgIGF0dHJpYnV0ZSBOb2RlIGltcGxlbWVudHNOb2RlOwogCiAgICAgdm9p
ZCBpbXBsZW1lbnRzTWV0aG9kMSgpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBpbXBsZW1lbnRzTWV0aG9kMihET01TdHJp
bmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIFRlc3RPYmogaW1wbGVtZW50c01ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVz
dE9iaiBvYmpBcmcpOwogICAgIFtDdXN0b21dIHZvaWQgaW1wbGVtZW50c01ldGhvZDMoKTsKICAg
ICBzdGF0aWMgdm9pZCBpbXBsZW1lbnRzTWV0aG9kNCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsg
ImhpZ2giLCAia2luZGEtbG93CiAgICAgdm9pZCBtZXRob2RXaXRoU3RhbmRhbG9uZUVudW1Bcmco
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbiBlbnVtQXJnKTsKICAgICB2b2lkIG1ldGhvZFdpdGhP
cHRpb25hbEVudW1Bcmcob3B0aW9uYWwgVGVzdEVudW1UeXBlIGVudW1BcmcpOwogICAgIHZvaWQg
bWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShvcHRpb25hbCBUZXN0RW51
bVR5cGUgZW51bUFyZyA9ICJFbnVtVmFsdWUxIik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBU
ZXN0T2JqIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRE9NU3RyaW5nIHN0ckFy
ZywgVGVzdE9iaiBvYmpBcmcpOworICAgIFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyhET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CiAKICAgICB2b2lk
IG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nIHN0cik7CiAgICAgdm9pZCBtZXRob2RX
aXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nPyBzdHIpOwpAQCAtMTY0LDkgKzE2NCw5
IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB2b2lkIG1l
dGhvZFdpdGhSZWNvcmQocmVjb3JkPERPTVN0cmluZywgbG9uZz4gcmVjb3JkUGFyYW1ldGVyKTsK
IAogICAgIC8vIEV4Y2VwdGlvbnMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgbWV0aG9k
V2l0aEV4Y2VwdGlvbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBtZXRob2RXaXRo
RXhjZXB0aW9uUmV0dXJuaW5nTG9uZygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9i
aiBtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCk7CisgICAgdm9pZCBtZXRob2RX
aXRoRXhjZXB0aW9uKCk7CisgICAgbG9uZyBtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9u
ZygpOworICAgIFRlc3RPYmogbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCgpOwog
CiAgICAgLy8gJ0N1c3RvbScgZXh0ZW5kZWQgYXR0cmlidXRlCiAgICAgW0N1c3RvbV0gYXR0cmli
dXRlIGxvbmcgICAgICAgICAgICBjdXN0b21BdHRyOwpAQCAtMTkxLDExICsxOTEsMTEgQEAgZW51
bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIC8vICdDYWxsV2l0aCcg
ZXh0ZW5kZWQgYXR0cmlidXRlCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHdpdGhT
Y3JpcHRTdGF0ZVZvaWQoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0
aFNjcmlwdFN0YXRlT2JqKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCB3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKCk7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiB3aXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24oKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgd2l0aFNj
cmlwdFN0YXRlVm9pZEV4Y2VwdGlvbigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gVGVz
dE9iaiB3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JlNjcmlwdFN0YXRlXSB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKTsKLSAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCZTY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RP
Ymogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JlNjcmlwdFN0YXRlXSBUZXN0
T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24o
KTsKICAgICBbQ2FsbFdpdGg9ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0ICAmICBTY3JpcHRTdGF0
ZSAgXSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzKCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIHdpdGhEb2N1bWVudEFyZ3Vt
ZW50KCk7CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB2b2lkIHdpdGhDYWxsZXJE
b2N1bWVudEFyZ3VtZW50KCk7CkBAIC0zMjksOCArMzI5LDggQEAgZW51bSBUZXN0Q29uZmlkZW5j
ZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQgY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlT25PcHRpb25hbChvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSBsb25nIG9iakFyZ3NMb25nID0g
MCk7CiAKICAgICB2b2lkIG1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShzZXF1ZW5jZTx1
bnNpZ25lZCBsb25nPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBzZXF1ZW5jZTxET01TdHJpbmc+IHN0cmluZ0FycmF5RnVuY3Rpb24oc2VxdWVuY2U8RE9N
U3RyaW5nPiB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nTGlzdCBk
b21TdHJpbmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlzdCB2YWx1ZXMpOworICAgIHNlcXVlbmNl
PERPTVN0cmluZz4gc3RyaW5nQXJyYXlGdW5jdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVl
cyk7CisgICAgRE9NU3RyaW5nTGlzdCBkb21TdHJpbmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlz
dCB2YWx1ZXMpOwogCiAgICAgdm9pZCBvcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRl
cihvcHRpb25hbCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPHVucmVzdHJpY3RlZCBkb3VibGU+KSBv
cHRpb25hbFVuaW9uKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2Ug
eyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWly
ZXNFeGlzdGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CiAKICAgICBbQ2hl
Y2tTZWN1cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9j
dW1lbnQ7Ci0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZH
RG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIFNW
R0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiAKICAgICB2b2lkIGNvbnZlcnQxKFRlc3ROb2Rl
IHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnQyKFRlc3ROb2RlPyB2YWx1ZSk7CkBAIC00MDAsMTIg
KzQwMCwxMiBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAg
Ly8gUHJvbWlzZSBmdW5jdGlvbgogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlv
bigpOwogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50KGZsb2F0IGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTx2b2lkPiB0ZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOworICAgIFByb21pc2U8dm9pZD4gdGVzdFBy
b21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oKTsKICAgICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChvcHRpb25hbCBsb25nIGEpOwogICAg
IFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oZmxvYXQgYSk7CiAg
ICAgUHJvbWlzZTx2b2lkPiB0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihGZXRjaFJlcXVl
c3QgcmVxdWVzdCk7CiAgICAgc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0YXRpY1Byb21pc2VG
dW5jdGlvbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8dm9pZD4g
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oKTsKKyAgICBzdGF0aWMgUHJv
bWlzZTx2b2lkPiB0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOwogICAg
IFtDdXN0b21dIFByb21pc2U8dm9pZD4gdGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbigpOwogICAg
IFtDdXN0b21dIHN0YXRpYyBQcm9taXNlPHZvaWQ+IHRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVu
Y3Rpb24oKTsKICAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx2b2lkPiB0
ZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbigpOwpAQCAtNDM2LDcgKzQzNiw3IEBA
IGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBsZWdhY3ljYWxs
ZXIgdm9pZCAoKTsKIAogICAgIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKFtSZXR1
cm5WYWx1ZV0gTm9kZSBhLCBOb2RlIGIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSB0
ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKFtSZXR1cm5WYWx1ZV0gTm9k
ZSBhLCBOb2RlIGIpOworICAgIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4
Y2VwdGlvbihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBiKTsKIAogICAgIFtDb25kaXRpb25h
bGx5UmVhZFdyaXRlPUNPTkRJVElPTl0gYXR0cmlidXRlIE5vZGUgY29uZGl0aW9uYWxseVJlYWRX
cml0ZUF0dHJpYnV0ZTsKICAgICBbQ29uZGl0aW9uYWw9Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBOb2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
U3VwcGxlbWVudGFsLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RBdHRyaWJ1dGU7CiAKICAgICB2b2lk
IHN1cHBsZW1lbnRhbE1ldGhvZDEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01T
dHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01TdHJpbmcgc3RyQXJn
LCBUZXN0T2JqIG9iakFyZyk7CiAgICAgW0N1c3RvbV0gdm9pZCBzdXBwbGVtZW50YWxNZXRob2Qz
KCk7CiAgICAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kNCgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZz
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEzICs2MSwxMyBA
QAogCiAgICAgU1ZHUE9JTlQgcG9pbnRGdW5jdGlvbigpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBTRVFVRU5DRV9PRl9TVFJJTkdTIHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24oU0VRVUVOQ0Vf
T0ZfU1RSSU5HUyB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8U1RS
SU5HPiBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihzZXF1ZW5jZTxTVFJJTkc+IHZhbHVlcyk7Cisg
ICAgU0VRVUVOQ0VfT0ZfU1RSSU5HUyBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKFNFUVVFTkNFX09G
X1NUUklOR1MgdmFsdWVzKTsKKyAgICBzZXF1ZW5jZTxTVFJJTkc+IHN0cmluZ1NlcXVlbmNlRnVu
Y3Rpb24yKHNlcXVlbmNlPFNUUklORz4gdmFsdWVzKTsKIAogICAgIGJvb2xlYW4gY2FsbFdpdGhT
ZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoc2VxdWVuY2U8VGVzdEV2ZW50VGFyZ2V0PiBzZXF1
ZW5jZUFyZyk7CiAKICAgICAvLyBFeGNlcHRpb25zCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIG1ldGhvZFdpdGhFeGNlcHRpb24oKTsKKyAgICB2b2lkIG1ldGhvZFdpdGhFeGNlcHRpb24o
KTsKIAogICAgIC8vIEJ1aWx0aW4gVHlwZWRlZnMKICAgICBhdHRyaWJ1dGUgQnVmZmVyU291cmNl
IGJ1ZmZlclNvdXJjZUF0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEdl
dFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3
YXJkR2V0VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkdldChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55
Pihmb3J3YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93
U2NvcGUsIGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yNDMsNyArMjQzLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwg
KmNhc3RlZFRoaXMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0
ZWRUaGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uRW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjU1LDcgKzI1NSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yODMsNyArMjgz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlr
ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2go
RXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9y
d2FyZEFkZFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBmb3J3YXJkQWRkVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkFkZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBmb3J3YXJkQ2xlYXJUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcyk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBmb3J3YXJkQ2xlYXJUb01hcExpa2Uo
KnN0YXRlLCAqY2FzdGVkVGhpcyk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9y
d2FyZERlbGV0ZVRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBmb3J3YXJkRGVsZXRlVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUo
a2V5KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkRlbGV0ZShFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25s
eU1hcExpa2UuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDksNyArMjA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVh
ZAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0
YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEdldFRvTWFwTGlr
ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChF
eGVjU3RhdGUqIHN0YXRlKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1JlYWQKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUs
IGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKnN0YXRl
LCAqY2FzdGVkVGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55
Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNh
c3RlZFRoaXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25s
eU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI0
OSw3ICsyNDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9NYXBMaWtlKCpz
dGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkK
QEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNS
ZWFkCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZh
bHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1Rv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNSZWFkCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQW55Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9y
RWFjaFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2Nv
cGUsIGZvcndhcmRGb3JFYWNoVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUo
Y2FsbGJhY2spKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9u
bHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byBuZXh0Q2hpbGQgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBz
Y29wZSwgMCwgIm5leHRDaGlsZCIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVu
Y3Rpb24iLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxk
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjM3LDcgKzIzNyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG1lc3NhZ2UgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5wb3N0TWVz
c2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2s7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhDRVJlYWN0aW9ucygpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ0VSZWFjdGlvbnMo
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIs
NyArMjEyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnZhbHVlKCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2Nv
cGUsIGltcGwudmFsdWUoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgp
KSkKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVND
SUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIikpOwotICAgIGltcGwudGVzdE9wZXJh
dGlvbkludGVyZmFjZSgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uSW50ZXJmYWNlKCk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM2
Nyw3ICszNjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
aW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxU
cmFjZXJPcGVyYXRpb24oaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVk
IikpOwotICAgIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0
T3BlcmF0aW9uU3BlY2lmaWVkKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTM5Niw3ICszOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVu
ZChjKTsKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwg
QVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyIpLCBXVEZNb3ZlKGNhbGxU
cmFjZXJQYXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhBcmd1
bWVudHMoV1RGTW92ZShhKSwgV1RGTW92ZShiKSwgV1RGTW92ZShjKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRl
c3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUo
YykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICAgICAgY2FsbFRyYWNlclBhcmFtZXRlcnMuYXBwZW5kKG5vZGVOdWxsYWJs
ZUFyZyk7CiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGws
IEFTQ0lJTGl0ZXJhbCgidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50IiksIFdURk1v
dmUoY2FsbFRyYWNlclBhcmFtZXRlcnMpKTsKICAgICB9Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9u
V2l0aE51bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KFdURk1vdmUobm9kZU51bGxhYmxl
QXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgICAgIFdURjo6dmlzaXQoWyZdIChhdXRvJiB2YWx1ZSkgeyBjYWxsVHJhY2Vy
UGFyYW1ldGVycy5hcHBlbmQodmFsdWUpOyB9LCB2YXJpYW50QXJnKTsKICAgICAgICAgQ2FsbFRy
YWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3Bl
cmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQYXJhbWV0ZXJz
KSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQoV1RG
TW92ZSh2YXJpYW50QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFy
Z3VtZW50KFdURk1vdmUodmFyaWFudEFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00NjcsNyArNDY3LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICAgICAgV1RGOjp2aXNpdChbJl0g
KGF1dG8mIHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZCh2YWx1ZSk7IH0sICp2
YXJpYW50TnVsbGFibGVBcmcpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlcklu
dGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJp
YW50QXJndW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAg
ICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2
YXJpYW50TnVsbGFibGVBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZVZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnROdWxsYWJsZUFyZykpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODksNyArNDg5
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICAg
ICAgV1RGOjp2aXNpdChbJl0gKGF1dG8mIHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFw
cGVuZCh2YWx1ZSk7IH0sICp2YXJpYW50T3B0aW9uYWxBcmcpOwogICAgICAgICBDYWxsVHJhY2Vy
Ojp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRp
b25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1l
dGVycykpOwogICAgIH0KLSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50
QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50T3B0aW9uYWxBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9w
ZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25h
bEFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC01MTAsNyArNTEwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgICAgICBXVEY6OnZpc2l0KFsmXSAoYXV0byYgdmFsdWUpIHsgY2FsbFRyYWNl
clBhcmFtZXRlcnMuYXBwZW5kKHZhbHVlKTsgfSwgdmFyaWFudERlZmF1bHRBcmcpOwogICAgICAg
ICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwo
InRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxU
cmFjZXJQYXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhEZWZh
dWx0VmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERlZmF1bHRBcmcpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwudGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFu
dERlZmF1bHRBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KICAgICBhdXRvJiBz
dGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFy
Z3MuYXBwZW5kKHRvSlM8SURMTG9uZz4oYXJndW1lbnQpKTsKKyAgICBhcmdzLmFwcGVuZCh0b0pT
PElETExvbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBhcmd1bWVudCkpOwogICAgIEFTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVy
bmVkRXhjZXB0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
blJldGhyb3cuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERP
TVN0cmluZzo6SW0KICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMTG9u
Zz4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIGFyZ3VtZW50KSk7CisgICAgYXJncy5hcHBlbmQodG9K
UzxJRExTZXF1ZW5jZTxJRExMb25nPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
YXJndW1lbnQpKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsOSArNjUsOSBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExWb2lkOjpJbXBs
ZW1lCiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byYgc3RhdGUgPSAqZ2xv
YmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPFRlc3ROb2RlPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxUZXN0Tm9kZT4+KHN0YXRl
LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QpOwogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRl
cmZhY2U8VGVzdE5vZGU+Pj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgcGFyYW1ldGVyKSk7CisgICAg
YXJncy5hcHBlbmQodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oc3Rh
dGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcGFyYW1ldGVyKSk7CiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0
dXJuZWRFeGNlcHRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
eXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMVm9pZDo6SW1wbGVtZQogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9i
amVjdC5nbG9iYWxFeGVjKCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJ
RExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExMb25nPj4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIHNl
cXVlbmNlQXJnKSk7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExMb25nPihsb25nQXJnKSk7Cisg
ICAgYXJncy5hcHBlbmQodG9KUzxJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExMb25nPj4+KHN0
YXRlLCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHNlcXVlbmNlQXJnKSk7CisgICAgYXJncy5h
cHBlbmQodG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgbG9uZ0FyZykpOwogICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IHJldHVybmVkRXhjZXB0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDAsNyArMjAwLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVm9pZDo6SW1w
bGVtZQogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExGbG9hdDMyQXJyYXk+KHN0YXRlLCBn
bG9iYWxPYmplY3QsIGFycmF5UGFyYW0pKTsKKyAgICBhcmdzLmFwcGVuZCh0b0pTPElETEZsb2F0
MzJBcnJheT4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgYXJyYXlQYXJhbSkpOwog
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwpAQCAtMjI3LDggKzIyNyw4IEBAIENhbGxiYWNr
UmVzdWx0PHR5cGVuYW1lIElETFZvaWQ6OkltcGxlbWUKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9i
YWxPYmplY3QuZ2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRv
SlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KHN0YXRl
LCBnbG9iYWxPYmplY3QsIHNyelBhcmFtKSk7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExET01T
dHJpbmc+KHN0YXRlLCBzdHJQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMU2VyaWFs
aXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIHNyelBhcmFtKSk7CisgICAgYXJncy5hcHBlbmQodG9KUzxJRExET01T
dHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBzdHJQYXJhbSkpOwogICAgIEFTU0VSVCghYXJncy5o
YXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uOwpAQCAtMjU1LDcgKzI1NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TFZvaWQ6OkltcGxlbWUKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhl
YygpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPERP
TVN0cmluZ0xpc3Q+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBsaXN0UGFyYW0pKTsKKyAgICBhcmdz
LmFwcGVuZCh0b0pTPElETEludGVyZmFjZTxET01TdHJpbmdMaXN0Pj4oc3RhdGUsIGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgbGlzdFBhcmFtKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJm
bG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRp
b247CkBAIC0yODIsNyArMjgyLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVm9pZDo6
SW1wbGVtZQogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExCb29sZWFuPihib29sUGFyYW0p
KTsKKyAgICBhcmdzLmFwcGVuZCh0b0pTPElETEJvb2xlYW4+KHN0YXRlLCB0aHJvd1Njb3BlLCBi
b29sUGFyYW0pKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKQEAgLTMwOSw4ICszMDks
OCBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExWb2lkOjpJbXBsZW1lCiAgICAgYXV0byYg
c3RhdGUgPSAqZ2xvYmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBh
cmdzLmFwcGVuZCh0b0pTPElETExvbmc+KGxvbmdQYXJhbSkpOwotICAgIGFyZ3MuYXBwZW5kKHRv
SlM8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGVzdE5vZGVQ
YXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUs
IGxvbmdQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPFRlc3ROb2Rl
Pj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGVzdE5vZGVQYXJhbSkpOwogICAg
IEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwpAQCAtMzY2LDcgKzM2Niw3IEBAIENhbGxiYWNrUmVz
dWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxP
YmplY3QuZ2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8
SURMRW51bWVyYXRpb248VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPj4oc3RhdGUsIGVudW1Q
YXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRW51bWVyYXRpb248VGVzdENhbGxiYWNr
SW50ZXJmYWNlOjpFbnVtPj4oc3RhdGUsIHRocm93U2NvcGUsIGVudW1QYXJhbSkpOwogICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IHJldHVybmVkRXhjZXB0aW9uOwpAQCAtMzk0LDcgKzM5NCw3IEBAIENhbGxiYWNrUmVzdWx0
PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmpl
Y3QuZ2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURM
RGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+PihzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBkaWN0aW9uYXJ5UGFyYW0pKTsKKyAgICBhcmdzLmFwcGVuZCh0b0pTPElETERp
Y3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pj4oc3RhdGUsIGdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeVBhcmFtKSk7CiAgICAgQVNTRVJUKCFhcmdz
Lmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJu
ZWRFeGNlcHRpb247CkBAIC00MjIsOSArNDIyLDkgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUg
SURMRE9NU3RyaW5nOjpJbQogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8m
IHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSB0b0pTPElETEludGVyZmFjZTxUZXN0Tm9kZT4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVz
dE5vZGU+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0KTsKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50
ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0ZXN0T2JqUGFyYW0pKTsKKyAg
ICBhcmdzLmFwcGVuZCh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsIGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgdGVzdE9ialBhcmFtKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092
ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMTgsNyArMTExOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5h
bWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERP
TVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0xMTM2LDcgKzExMzYsNyBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlCiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hbWUgPSBET01KSVQ6OkRpcmVj
dENvbnZlcnRlcjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252ZXJ0KCpzdGF0ZSwgZW5jb2RlZE5h
bWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0
cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25JdGVtQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xMTUwLDcgKzExNTAsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHkgPSBjb252ZXJ0PElETFVuc2lnbmVk
U2hvcnQ+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1v
dmUoeCksIFdURk1vdmUoeSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RG
TW92ZSh5KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTExNzAsNyArMTE3
MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmUKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8g
eSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFVuc2lnbmVkU2hvcnQ+OjpkaXJlY3RDb252
ZXJ0KCpzdGF0ZSwgZW5jb2RlZFkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRo
cm93U2NvcGUsIGltcGwuaXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25IYXNBdHRyaWJ1dGVCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTExNzgsNyArMTE3OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihp
bXBsLmhhc0F0dHJpYnV0ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uSGFzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0xMTk0LDcgKzExOTQsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlCiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJv
d1Njb3BlLCBpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlk
Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RE
T01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbGVt
ZW50SWQgPSBjb252ZXJ0PElETFJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmdBZGFwdG9yPElE
TERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUo
ZWxlbWVudElkKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJm
YWNlPEVsZW1lbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRFbGVtZW50QnlJZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgSlND
OjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBET01KSVQ6OkRpcmVj
dENvbnZlcnRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01T
dHJpbmc+Pjo6ZGlyZWN0Q29udmVydCgqc3RhdGUsIGVuY29kZWRFbGVtZW50SWQpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShl
bGVtZW50SWQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZh
Y2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudHNCeU5hbWVCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTEyMzYsNyArMTIzNiw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIGVsZW1lbnROYW1lID0gY29udmVydDxJRExBdG9taWNTdHJpbmdBZGFw
dG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFt
ZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50
TmFtZSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAt
MTI1NCw3ICsxMjU0LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2Fm
ZQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBlbGVt
ZW50TmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETEF0b21pY1N0cmluZ0FkYXB0b3I8
SURMRE9NU3RyaW5nPj46OmRpcmVjdENvbnZlcnQoKnN0YXRlLCBlbmNvZGVkRWxlbWVudE5hbWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRzQnlO
YW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1l
bnROYW1lKSkpKTsKIH0KIAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcu
Y3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
Miw3ICsyODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5lbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0
T3duUHJvcGVydHlTbAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5n
dGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+
Pigqc3RhdGUsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwog
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgSlNUZXN0
RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blBy
b3BlcnR5U2wKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAg
IGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICp0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRl
LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4KSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xODIs
NyArMTgyLDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbAogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
c3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwuaXRlbShXVEZNb3ZlKGluZGV4KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pdGVtKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVu
Y3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Nyw3
ICszODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5yZWd1bGFyT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnJlZ3Vs
YXJPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZW5hYmxl
ZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5lbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQxOCw3ICs0MTgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8
SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5l
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDYyLDcgKzQ2
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9u
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVk
SW5TcGVjaWZpY1dvcmxkKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRJ
blNwZWNpZmljV29ybGQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dv
cmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChXVEZN
b3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
dGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVzRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5lbmFibGVkSW5TcGVj
aWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NTEzLDcgKzUxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwudGVzdFBy
aXZhdGVGdW5jdGlvbigpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJpdmF0ZUZ1bmN0aW9uKCk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUyOSw3
ICs1MjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNhbGN1bGF0ZVNl
Y3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY2FsY3VsYXRlU2VjcmV0
UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGlt
cGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTU3
LDcgKzU1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVh
bigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6
Z2UKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAg
ICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
aWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9B
UlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgp
Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsx
MzksNyBAQCBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChhdXRv
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52
YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5p
dGVtKGluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW8KICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgp
KSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLml0ZW0oaW5kZXgpKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7
CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTE2MCw3ICsxNjAsNyBAQCBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
aXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7
CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4
KSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5k
ZXgpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQzLDcgKzg0Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwuaW1wbGVtZW50c01ldGhvZDEoKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwuaW1wbGVtZW50c01ldGhvZDEoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtODk5LDcgKzg5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRz
TWV0aG9kNCgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtOTE2
LDcgKzkxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFdlYkNvcmU6OlRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoaW1wbCk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC05NzIsNyArOTcyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFdlYkNv
cmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDQoKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFdlYkNv
cmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDQoKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gbGlzdGVuZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImxpc3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgIm1ldGhvZCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kKGxpc3RlbmVyLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2QobGlzdGVuZXIucmVsZWFzZU5vbk51bGwo
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1
ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkp
OwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBA
IC0xNTQsNyArMTU0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6
Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY3LDcg
KzE2Nyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJ
S0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRo
aXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKICAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTgyLDcg
KzE4Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0
YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgp
KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
dGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwog
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0x
NTQsNyArMTU0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
Pigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY3LDcgKzE2
Nyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VM
WShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4
KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
dGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKICAgICAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTgyLDcgKzE4
Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRl
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3Bl
cnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW4KICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVu
Z3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBN
QVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKICAgICAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93
U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
bmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5u
YW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM1Niw3ICszNTYsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1
ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZh
bHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
OjpnZXQKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52
YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbgogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29w
ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6
OmcKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5z
OjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
ewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI0Niw3ICsy
NDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubmFtZWRE
ZWxldGVyKFdURk1vdmUobmFtZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5uYW1lZERlbGV0ZXIoV1RGTW92ZShu
YW1lKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjcsNyArMTY3
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZ
KGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgp
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOwogICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0
YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyOjpnZXRPCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93
U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6
OmdlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjMsNyAr
MjIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuZ2V0dGVyTmFtZShX
VEZNb3ZlKG5hbWUpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXR0ZXJOYW1lKFdURk1vdmUobmFtZSkp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZShFeGVjU3RhdGUqIHN0YXRl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0
TwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6
Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0
YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
LDcgKzE0NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE2NCw3ICsxNjQs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdlCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29w
ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5uYW1l
ZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm5hbWVk
U2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyAr
MTQ5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0
byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgu
dmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyOgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJy
aWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlcjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlm
IChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgp
LmluZGV4ZWRTZXR0ZXIoaW5kZXgpKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE5
MSw3ICsxOTEsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFBy
b3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+
KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTMsNyArMzEz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB2
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUodmFs
dWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1
ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaW5kZXggPSBjb252
ZXJ0PElETFVuc2lnbmVkTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBp
bXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmluZGV4
ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
SW5kZXhlZFNldHRlcihFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNw
cAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleC52YWx1
ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0x
NzYsNyArMTc2LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBp
ZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4
IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmlu
ZGV4ZWRTZXR0ZXIoaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhl
ZFNldHRlcihpbmRleCkpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0xOTEsNyArMTkxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAg
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUo
bmFtZSksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5pbmRl
eGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmlu
ZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMzY1LDcgKzM2NSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElE
TFVuc2lnbmVkTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlu
ZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmluZGV4ZWRTZXR0
ZXIoV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25JbmRleGVkU2V0dGVyT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqc3RhdGUsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
dGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+KCpzdGF0ZSwgKnRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OCw3ICsxNjgsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xODgsNyAr
MTg4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcAogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3Rh
dGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCks
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzI1LDcgKzMyNSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24o
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJy
aWRlQnVpbHRpbnM6Olllcz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpz
dGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6WWVzPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwudW5mb3Jn
ZWFibGVPcGVyYXRpb24oKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyAr
MjgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0V29ya2VyUHJv
bWlzZShXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFdvcmtlclByb21pc2UoV1RG
TW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
LSAgICBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zMTAsNyArMzEw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1w
bC5nZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSog
c3RhdGUpCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9v
bGVhbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3Rh
dGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4MywxMzQgKzY4MywxMzQgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pT
KEpTQwogICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlLCBnbG9i
YWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOwogCiAgICAgaWYgKCFJRExTZXF1ZW5jZTxJRExD
bGFtcEFkYXB0b3I8SURMTG9uZz4+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmFubm90YXRlZFR5
cGVJblNlcXVlbmNlTWVtYmVyKSkgewotICAgICAgICBhdXRvIGFubm90YXRlZFR5cGVJblNlcXVl
bmNlTWVtYmVyVmFsdWUgPSB0b0pTPElETFNlcXVlbmNlPElETENsYW1wQWRhcHRvcjxJRExMb25n
Pj4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIElETFNlcXVlbmNlPElETENsYW1wQWRhcHRvcjxJRExM
b25nPj46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmFubm90YXRlZFR5cGVJ
blNlcXVlbmNlTWVtYmVyKSk7CisgICAgICAgIGF1dG8gYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VN
ZW1iZXJWYWx1ZSA9IHRvSlM8SURMU2VxdWVuY2U8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pj4o
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMU2VxdWVuY2U8SURMQ2xhbXBBZGFw
dG9yPElETExvbmc+Pjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYW5ub3Rh
dGVkVHlwZUluU2VxdWVuY2VNZW1iZXIpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5j
ZU1lbWJlciIpLCBhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlclZhbHVlKTsKICAgICB9CiAg
ICAgaWYgKCFJRExVbmlvbjxJRExET01TdHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj46
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXIpKSB7Ci0g
ICAgICAgIGF1dG8gYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSA9IHRvSlM8SURMVW5p
b248SURMRE9NU3RyaW5nLCBJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+PihzdGF0ZSwgZ2xvYmFs
T2JqZWN0LCBJRExVbmlvbjxJRExET01TdHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj46
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmFubm90YXRlZFR5cGVJblVuaW9u
TWVtYmVyKSk7CisgICAgICAgIGF1dG8gYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSA9
IHRvSlM8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+Pihz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbmlvbjxJRExET01TdHJpbmcsIElE
TENsYW1wQWRhcHRvcjxJRExMb25nPj46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LmFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYW5ub3RhdGVkVHlwZUlu
VW5pb25NZW1iZXIiKSwgYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSk7CiAgICAgfQot
ICAgIGF1dG8gYW55VHlwZWRlZlZhbHVlVmFsdWUgPSB0b0pTPElETEFueT4oZGljdGlvbmFyeS5h
bnlUeXBlZGVmVmFsdWUpOworICAgIGF1dG8gYW55VHlwZWRlZlZhbHVlVmFsdWUgPSB0b0pTPElE
TEFueT4oc3RhdGUsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkuYW55VHlwZWRlZlZhbHVlKTsKICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImFueVR5cGVkZWZWYWx1ZSIpLCBhbnlUeXBlZGVmVmFsdWVWYWx1ZSk7Ci0gICAgYXV0byBhbnlW
YWx1ZVZhbHVlID0gdG9KUzxJRExBbnk+KGRpY3Rpb25hcnkuYW55VmFsdWUpOworICAgIGF1dG8g
YW55VmFsdWVWYWx1ZSA9IHRvSlM8SURMQW55PihzdGF0ZSwgdGhyb3dTY29wZSwgZGljdGlvbmFy
eS5hbnlWYWx1ZSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJhbnlWYWx1ZSIpLCBhbnlWYWx1ZVZhbHVlKTsKLSAgICBhdXRvIGFu
eVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUgPSB0b0pTPElETEFueT4oZGljdGlvbmFyeS5hbnlW
YWx1ZVdpdGhOdWxsRGVmYXVsdCk7CisgICAgYXV0byBhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdFZh
bHVlID0gdG9KUzxJRExBbnk+KHN0YXRlLCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmFueVZhbHVl
V2l0aE51bGxEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImFueVZhbHVlV2l0aE51bGxEZWZhdWx0IiksIGFueVZhbHVl
V2l0aE51bGxEZWZhdWx0VmFsdWUpOwotICAgIGF1dG8gYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUg
PSB0b0pTPElETEJvb2xlYW4+KGRpY3Rpb25hcnkuYm9vbGVhbldpdGhEZWZhdWx0KTsKKyAgICBh
dXRvIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihzdGF0ZSwgdGhy
b3dTY29wZSwgZGljdGlvbmFyeS5ib29sZWFuV2l0aERlZmF1bHQpOwogICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYm9vbGVhbldpdGhE
ZWZhdWx0IiksIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETEJvb2xlYW46
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9vbGVhbldpdGhvdXREZWZhdWx0KSkgewotICAgICAg
ICBhdXRvIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihJRExC
b29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sZWFuV2l0aG91
dERlZmF1bHQpKTsKKyAgICAgICAgYXV0byBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IHRv
SlM8SURMQm9vbGVhbj4oc3RhdGUsIHRocm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmJvb2xlYW5XaXRob3V0RGVmYXVsdCkpOwogICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImJvb2xlYW5XaXRob3V0RGVmYXVsdCIpLCBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSk7CiAg
ICAgfQogICAgIGlmICghSURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZl
cj46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYnVmZmVyU291cmNlVmFsdWUpKSB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IHRvSlM8SURMVW5pb248SURMQXJyYXlCdWZm
ZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIElETFVuaW9uPElE
TEFycmF5QnVmZmVyVmlldywgSURMQXJyYXlCdWZmZXI+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUoZGljdGlvbmFyeS5idWZmZXJTb3VyY2VWYWx1ZSkpOworICAgICAgICBhdXRvIGJ1ZmZlclNv
dXJjZVZhbHVlVmFsdWUgPSB0b0pTPElETFVuaW9uPElETEFycmF5QnVmZmVyVmlldywgSURMQXJy
YXlCdWZmZXI+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbmlvbjxJRExB
cnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkuYnVmZmVyU291cmNlVmFsdWUpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJidWZmZXJTb3VyY2VWYWx1
ZSIpLCBidWZmZXJTb3VyY2VWYWx1ZVZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExEaWN0aW9u
YXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5kaWN0aW9uYXJ5TWVtYmVyKSkgewotICAgICAgICBhdXRvIGRpY3Rpb25h
cnlNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhh
dFNob3VsZFRvbGVyYXRlTnVsbD4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIElETERpY3Rpb25hcnk8
VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+OjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS5kaWN0aW9uYXJ5TWVtYmVyKSk7CisgICAgICAgIGF1dG8g
ZGljdGlvbmFyeU1lbWJlclZhbHVlID0gdG9KUzxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rp
b25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRl
TnVsbD46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmRpY3Rpb25hcnlNZW1i
ZXIpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJkaWN0aW9uYXJ5TWVtYmVyIiksIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSk7
CiAgICAgfQotICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0VmFsdWUgPSB0b0pT
PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oc3RhdGUsIGRpY3Rpb25hcnkuZW51
bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0KTsKKyAgICBhdXRvIGVudW1lcmF0aW9uVmFsdWVXaXRo
RGVmYXVsdFZhbHVlID0gdG9KUzxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KHN0
YXRlLCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdCk7
CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQiKSwgZW51bWVyYXRpb25WYWx1ZVdpdGhE
ZWZhdWx0VmFsdWUpOwotICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0Rl
ZmF1bHRWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+PihzdGF0
ZSwgZGljdGlvbmFyeS5lbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCk7Cisg
ICAgYXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gdG9K
UzxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KHN0YXRlLCB0aHJvd1Njb3BlLCBk
aWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0KTsKICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImVu
dW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0IiksIGVudW1lcmF0aW9uVmFsdWVX
aXRoRW1wdHlTdHJpbmdEZWZhdWx0VmFsdWUpOwogICAgIGlmICghSURMRW51bWVyYXRpb248VGVz
dE9iajo6RW51bVR5cGU+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVX
aXRob3V0RGVmYXVsdCkpIHsKLSAgICAgICAgYXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERl
ZmF1bHRWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+PihzdGF0
ZSwgSURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+OjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUoZGljdGlvbmFyeS5lbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQpKTsKKyAgICAg
ICAgYXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMRW51
bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+PihzdGF0ZSwgdGhyb3dTY29wZSwgSURMRW51bWVy
YXRpb248VGVzdE9iajo6RW51bVR5cGU+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlv
bmFyeS5lbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQpKTsKICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJlbnVtZXJhdGlv
blZhbHVlV2l0aG91dERlZmF1bHQiKSwgZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFs
dWUpOwogICAgIH0KLSAgICBhdXRvIGZvb0FsaWFzVmFsdWUgPSB0b0pTPElETEFueT4oZGljdGlv
bmFyeS5mb28pOworICAgIGF1dG8gZm9vQWxpYXNWYWx1ZSA9IHRvSlM8SURMQW55PihzdGF0ZSwg
dGhyb3dTY29wZSwgZGljdGlvbmFyeS5mb28pOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vQWxpYXMiKSwgZm9vQWxpYXNWYWx1
ZSk7Ci0gICAgYXV0byBmb29XaXRoRGVmYXVsdEFsaWFzVmFsdWUgPSB0b0pTPElETEFueT4oZGlj
dGlvbmFyeS5mb29XaXRoRGVmYXVsdCk7CisgICAgYXV0byBmb29XaXRoRGVmYXVsdEFsaWFzVmFs
dWUgPSB0b0pTPElETEFueT4oc3RhdGUsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkuZm9vV2l0aERl
ZmF1bHQpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiZm9vV2l0aERlZmF1bHRBbGlhcyIpLCBmb29XaXRoRGVmYXVsdEFsaWFzVmFs
dWUpOwogICAgIGlmICghSURMTG9uZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5pbnRlZ2VyKSkg
ewotICAgICAgICBhdXRvIGludGVnZXJWYWx1ZSA9IHRvSlM8SURMTG9uZz4oSURMTG9uZzo6ZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuaW50ZWdlcikpOworICAgICAgICBhdXRv
IGludGVnZXJWYWx1ZSA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIElETExvbmc6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmludGVnZXIpKTsKICAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJp
bnRlZ2VyIiksIGludGVnZXJWYWx1ZSk7CiAgICAgfQotICAgIGF1dG8gaW50ZWdlcldpdGhEZWZh
dWx0VmFsdWUgPSB0b0pTPElETExvbmc+KGRpY3Rpb25hcnkuaW50ZWdlcldpdGhEZWZhdWx0KTsK
KyAgICBhdXRvIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExMb25nPihzdGF0ZSwg
dGhyb3dTY29wZSwgZGljdGlvbmFyeS5pbnRlZ2VyV2l0aERlZmF1bHQpOwogICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW50ZWdlcldp
dGhEZWZhdWx0IiksIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETExvbmdM
b25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmxhcmdlSW50ZWdlcikpIHsKLSAgICAgICAgYXV0
byBsYXJnZUludGVnZXJWYWx1ZSA9IHRvSlM8SURMTG9uZ0xvbmc+KElETExvbmdMb25nOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5sYXJnZUludGVnZXIpKTsKKyAgICAgICAg
YXV0byBsYXJnZUludGVnZXJWYWx1ZSA9IHRvSlM8SURMTG9uZ0xvbmc+KHN0YXRlLCB0aHJvd1Nj
b3BlLCBJRExMb25nTG9uZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkubGFy
Z2VJbnRlZ2VyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAibGFyZ2VJbnRlZ2VyIiksIGxhcmdlSW50ZWdlclZhbHVlKTsK
ICAgICB9Ci0gICAgYXV0byBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExM
b25nTG9uZz4oZGljdGlvbmFyeS5sYXJnZUludGVnZXJXaXRoRGVmYXVsdCk7CisgICAgYXV0byBs
YXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExMb25nTG9uZz4oc3RhdGUsIHRo
cm93U2NvcGUsIGRpY3Rpb25hcnkubGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQpOwogICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibGFyZ2VJ
bnRlZ2VyV2l0aERlZmF1bHQiKSwgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7Ci0gICAg
YXV0byBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJ
RExMb25nPj4oZGljdGlvbmFyeS5udWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCk7CisgICAgYXV0
byBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJRExM
b25nPj4oc3RhdGUsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkubnVsbGFibGVJbnRlZ2VyV2l0aERl
ZmF1bHQpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAibnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQiKSwgbnVsbGFibGVJbnRlZ2Vy
V2l0aERlZmF1bHRWYWx1ZSk7Ci0gICAgYXV0byBudWxsYWJsZU5vZGVWYWx1ZSA9IHRvSlM8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgZGljdGlv
bmFyeS5udWxsYWJsZU5vZGUpOworICAgIGF1dG8gbnVsbGFibGVOb2RlVmFsdWUgPSB0b0pTPElE
TE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGRpY3Rpb25hcnkubnVsbGFibGVOb2RlKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm51bGxhYmxlTm9kZSIpLCBudWxs
YWJsZU5vZGVWYWx1ZSk7Ci0gICAgYXV0byBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUg
PSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KHN0YXRlLCBkaWN0aW9uYXJ5Lm51bGxh
YmxlU3RyaW5nV2l0aERlZmF1bHQpOworICAgIGF1dG8gbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVs
dFZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PihzdGF0ZSwgdGhyb3dTY29w
ZSwgZGljdGlvbmFyeS5udWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm51bGxhYmxlU3Ry
aW5nV2l0aERlZmF1bHQiKSwgbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKTsKLSAgICBh
dXRvIG51bGxhYmxlVW5pb25NZW1iZXJWYWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMVW5pb248
SURMTG9uZywgSURMSW50ZXJmYWNlPE5vZGU+Pj4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIGRpY3Rp
b25hcnkubnVsbGFibGVVbmlvbk1lbWJlcik7CisgICAgYXV0byBudWxsYWJsZVVuaW9uTWVtYmVy
VmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxO
b2RlPj4+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5Lm51bGxh
YmxlVW5pb25NZW1iZXIpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAibnVsbGFibGVVbmlvbk1lbWJlciIpLCBudWxsYWJsZVVuaW9u
TWVtYmVyVmFsdWUpOwotICAgIGF1dG8gcmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZVZhbHVlID0g
dG9KUzxJRExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPj4oc3RhdGUs
IGdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS5yZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlKTsKKyAg
ICBhdXRvIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IHRvSlM8SURMVW5pb248SURM
QXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGRpY3Rpb25hcnkucmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZSk7CiAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyZXF1
aXJlZEJ1ZmZlclNvdXJjZVZhbHVlIiksIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSk7
CiAgICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucmVzdHJpY3RlZERv
dWJsZSkpIHsKLSAgICAgICAgYXV0byByZXN0cmljdGVkRG91YmxlVmFsdWUgPSB0b0pTPElETERv
dWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5yZXN0
cmljdGVkRG91YmxlKSk7CisgICAgICAgIGF1dG8gcmVzdHJpY3RlZERvdWJsZVZhbHVlID0gdG9K
UzxJRExEb3VibGU+KHN0YXRlLCB0aHJvd1Njb3BlLCBJRExEb3VibGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShkaWN0aW9uYXJ5LnJlc3RyaWN0ZWREb3VibGUpKTsKICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyZXN0cmlj
dGVkRG91YmxlIiksIHJlc3RyaWN0ZWREb3VibGVWYWx1ZSk7CiAgICAgfQotICAgIGF1dG8gcmVz
dHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETERvdWJsZT4oZGljdGlvbmFy
eS5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQpOworICAgIGF1dG8gcmVzdHJpY3RlZERvdWJs
ZVdpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETERvdWJsZT4oc3RhdGUsIHRocm93U2NvcGUsIGRp
Y3Rpb25hcnkucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJlc3RyaWN0ZWREb3Vi
bGVXaXRoRGVmYXVsdCIpLCByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAg
aWYgKCFJRExGbG9hdDo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5yZXN0cmljdGVkRmxvYXQpKSB7
Ci0gICAgICAgIGF1dG8gcmVzdHJpY3RlZEZsb2F0VmFsdWUgPSB0b0pTPElETEZsb2F0PihJRExG
bG9hdDo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucmVzdHJpY3RlZEZsb2F0
KSk7CisgICAgICAgIGF1dG8gcmVzdHJpY3RlZEZsb2F0VmFsdWUgPSB0b0pTPElETEZsb2F0Pihz
dGF0ZSwgdGhyb3dTY29wZSwgSURMRmxvYXQ6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LnJlc3RyaWN0ZWRGbG9hdCkpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJlc3RyaWN0ZWRGbG9hdCIpLCByZXN0
cmljdGVkRmxvYXRWYWx1ZSk7CiAgICAgfQotICAgIGF1dG8gcmVzdHJpY3RlZEZsb2F0V2l0aERl
ZmF1bHRWYWx1ZSA9IHRvSlM8SURMRmxvYXQ+KGRpY3Rpb25hcnkucmVzdHJpY3RlZEZsb2F0V2l0
aERlZmF1bHQpOworICAgIGF1dG8gcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9IHRv
SlM8SURMRmxvYXQ+KHN0YXRlLCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LnJlc3RyaWN0ZWRGbG9h
dFdpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgInJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0IiksIHJlc3RyaWN0
ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUpOwogICAgIGlmICghSURMU2VxdWVuY2U8SURMRE9NU3Ry
aW5nPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zZXF1ZW5jZU9mU3RyaW5ncykpIHsKLSAgICAg
ICAgYXV0byBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlID0gdG9KUzxJRExTZXF1ZW5jZTxJRExET01T
dHJpbmc+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Ojpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zZXF1ZW5jZU9mU3RyaW5ncykpOwor
ICAgICAgICBhdXRvIHNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUgPSB0b0pTPElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETFNlcXVlbmNl
PElETERPTVN0cmluZz46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnNlcXVl
bmNlT2ZTdHJpbmdzKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic2VxdWVuY2VPZlN0cmluZ3MiKSwgc2VxdWVuY2VPZlN0
cmluZ3NWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQ2xhbXBBZGFwdG9yPElETEJ5dGU+Ojpp
c051bGxWYWx1ZShkaWN0aW9uYXJ5LnNtYWxsSW50ZWdlckNsYW1wZWQpKSB7Ci0gICAgICAgIGF1
dG8gc21hbGxJbnRlZ2VyQ2xhbXBlZFZhbHVlID0gdG9KUzxJRExDbGFtcEFkYXB0b3I8SURMQnl0
ZT4+KElETENsYW1wQWRhcHRvcjxJRExCeXRlPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkuc21hbGxJbnRlZ2VyQ2xhbXBlZCkpOworICAgICAgICBhdXRvIHNtYWxsSW50ZWdl
ckNsYW1wZWRWYWx1ZSA9IHRvSlM8SURMQ2xhbXBBZGFwdG9yPElETEJ5dGU+PihzdGF0ZSwgdGhy
b3dTY29wZSwgSURMQ2xhbXBBZGFwdG9yPElETEJ5dGU+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUoZGljdGlvbmFyeS5zbWFsbEludGVnZXJDbGFtcGVkKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAic21hbGxJbnRlZ2Vy
Q2xhbXBlZCIpLCBzbWFsbEludGVnZXJDbGFtcGVkVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlE
TEJ5dGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuc21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpKSB7
Ci0gICAgICAgIGF1dG8gc21hbGxJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMQnl0
ZT4oSURMQnl0ZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc21hbGxJbnRl
Z2VyV2l0aERlZmF1bHQpKTsKKyAgICAgICAgYXV0byBzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZh
bHVlID0gdG9KUzxJRExCeXRlPihzdGF0ZSwgdGhyb3dTY29wZSwgSURMQnl0ZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpKTsKICAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJzbWFsbEludGVnZXJXaXRoRGVmYXVsdCIpLCBzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZh
bHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExFbmZvcmNlUmFuZ2VBZGFwdG9yPElETE9jdGV0Pjo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2Up
KSB7Ci0gICAgICAgIGF1dG8gc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUg
PSB0b0pTPElETEVuZm9yY2VSYW5nZUFkYXB0b3I8SURMT2N0ZXQ+PihJRExFbmZvcmNlUmFuZ2VB
ZGFwdG9yPElETE9jdGV0Pjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc21h
bGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlKSk7CisgICAgICAgIGF1dG8gc21hbGxVbnNp
Z25lZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUgPSB0b0pTPElETEVuZm9yY2VSYW5nZUFkYXB0
b3I8SURMT2N0ZXQ+PihzdGF0ZSwgdGhyb3dTY29wZSwgSURMRW5mb3JjZVJhbmdlQWRhcHRvcjxJ
RExPY3RldD46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnNtYWxsVW5zaWdu
ZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZSkpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2VyRW5m
b3JjZWRSYW5nZSIpLCBzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2VWYWx1ZSk7CiAg
ICAgfQotICAgIGF1dG8gc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9K
UzxJRExPY3RldD4oZGljdGlvbmFyeS5zbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KTsK
KyAgICBhdXRvIHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURM
T2N0ZXQ+KHN0YXRlLCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LnNtYWxsVW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHQpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAic21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIpLCBzbWFs
bFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgIGlmICghSURMVHJlYXROdWxs
QXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zdHJp
bmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nKSkgewotICAgICAgICBhdXRvIHN0cmluZ1RyZWF0TnVs
bEFzRW1wdHlTdHJpbmdWYWx1ZSA9IHRvSlM8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURM
RE9NU3RyaW5nPj4oc3RhdGUsIElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmlu
Zz46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFz
RW1wdHlTdHJpbmcpKTsKKyAgICAgICAgYXV0byBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5n
VmFsdWUgPSB0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KHN0
YXRlLCB0aHJvd1Njb3BlLCBJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJpbmc+
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdUcmVhdE51bGxBc0Vt
cHR5U3RyaW5nKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAic3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyIpLCBzdHJp
bmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUpOwogICAgIH0KLSAgICBhdXRvIHN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGRpY3Rpb25hcnkuc3Ry
aW5nV2l0aERlZmF1bHQpOworICAgIGF1dG8gc3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5zdHJpbmdXaXRoRGVm
YXVsdCk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJzdHJpbmdXaXRoRGVmYXVsdCIpLCBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlKTsK
ICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zdHJpbmdXaXRo
b3V0RGVmYXVsdCkpIHsKLSAgICAgICAgYXV0byBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ1dpdGhvdXREZWZhdWx0KSk7CisgICAgICAgIGF1dG8g
c3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhy
b3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5zdHJpbmdXaXRob3V0RGVmYXVsdCkpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInN0cmluZ1dpdGhvdXREZWZhdWx0Iiks
IHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETFVuaW9uPElE
TExvbmcsIElETEludGVyZmFjZTxOb2RlPj46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkudW5pb25N
ZW1iZXIpKSB7Ci0gICAgICAgIGF1dG8gdW5pb25NZW1iZXJWYWx1ZSA9IHRvSlM8SURMVW5pb248
SURMTG9uZywgSURMSW50ZXJmYWNlPE5vZGU+Pj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgSURMVW5p
b248SURMTG9uZywgSURMSW50ZXJmYWNlPE5vZGU+Pjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkudW5pb25NZW1iZXIpKTsKKyAgICAgICAgYXV0byB1bmlvbk1lbWJlclZhbHVl
ID0gdG9KUzxJRExVbmlvbjxJRExMb25nLCBJRExJbnRlcmZhY2U8Tm9kZT4+PihzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbmlvbjxJRExMb25nLCBJRExJbnRlcmZhY2U8Tm9k
ZT4+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS51bmlvbk1lbWJlcikpOwog
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInVuaW9uTWVtYmVyIiksIHVuaW9uTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAo
IUlETFVucmVzdHJpY3RlZERvdWJsZTo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS51bnJlc3RyaWN0
ZWREb3VibGUpKSB7Ci0gICAgICAgIGF1dG8gdW5yZXN0cmljdGVkRG91YmxlVmFsdWUgPSB0b0pT
PElETFVucmVzdHJpY3RlZERvdWJsZT4oSURMVW5yZXN0cmljdGVkRG91YmxlOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS51bnJlc3RyaWN0ZWREb3VibGUpKTsKKyAgICAgICAg
YXV0byB1bnJlc3RyaWN0ZWREb3VibGVWYWx1ZSA9IHRvSlM8SURMVW5yZXN0cmljdGVkRG91Ymxl
PihzdGF0ZSwgdGhyb3dTY29wZSwgSURMVW5yZXN0cmljdGVkRG91YmxlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS51bnJlc3RyaWN0ZWREb3VibGUpKTsKICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ1bnJl
c3RyaWN0ZWREb3VibGUiKSwgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUpOwogICAgIH0KLSAgICBh
dXRvIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETFVucmVzdHJp
Y3RlZERvdWJsZT4oZGljdGlvbmFyeS51bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCk7Cisg
ICAgYXV0byB1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExVbnJl
c3RyaWN0ZWREb3VibGU+KHN0YXRlLCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LnVucmVzdHJpY3Rl
ZERvdWJsZVdpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Iiks
IHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUpOwogICAgIGlmICghSURMVW5yZXN0
cmljdGVkRmxvYXQ6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkudW5yZXN0cmljdGVkRmxvYXQpKSB7
Ci0gICAgICAgIGF1dG8gdW5yZXN0cmljdGVkRmxvYXRWYWx1ZSA9IHRvSlM8SURMVW5yZXN0cmlj
dGVkRmxvYXQ+KElETFVucmVzdHJpY3RlZEZsb2F0OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
ZGljdGlvbmFyeS51bnJlc3RyaWN0ZWRGbG9hdCkpOworICAgICAgICBhdXRvIHVucmVzdHJpY3Rl
ZEZsb2F0VmFsdWUgPSB0b0pTPElETFVucmVzdHJpY3RlZEZsb2F0PihzdGF0ZSwgdGhyb3dTY29w
ZSwgSURMVW5yZXN0cmljdGVkRmxvYXQ6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LnVucmVzdHJpY3RlZEZsb2F0KSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidW5yZXN0cmljdGVkRmxvYXQiKSwgdW5y
ZXN0cmljdGVkRmxvYXRWYWx1ZSk7CiAgICAgfQotICAgIGF1dG8gdW5yZXN0cmljdGVkRmxvYXRX
aXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExVbnJlc3RyaWN0ZWRGbG9hdD4oZGljdGlvbmFyeS51
bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0KTsKKyAgICBhdXRvIHVucmVzdHJpY3RlZEZsb2F0
V2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMVW5yZXN0cmljdGVkRmxvYXQ+KHN0YXRlLCB0aHJv
d1Njb3BlLCBkaWN0aW9uYXJ5LnVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpOwogICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidW5y
ZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCIpLCB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0
VmFsdWUpOwogICAgIGlmICghSURMVW5zaWduZWRMb25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5
LnVuc2lnbmVkSW50ZWdlcikpIHsKLSAgICAgICAgYXV0byB1bnNpZ25lZEludGVnZXJWYWx1ZSA9
IHRvSlM8SURMVW5zaWduZWRMb25nPihJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LnVuc2lnbmVkSW50ZWdlcikpOworICAgICAgICBhdXRvIHVuc2ln
bmVkSW50ZWdlclZhbHVlID0gdG9KUzxJRExVbnNpZ25lZExvbmc+KHN0YXRlLCB0aHJvd1Njb3Bl
LCBJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnVu
c2lnbmVkSW50ZWdlcikpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInVuc2lnbmVkSW50ZWdlciIpLCB1bnNpZ25lZEludGVn
ZXJWYWx1ZSk7CiAgICAgfQotICAgIGF1dG8gdW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1
ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nPihkaWN0aW9uYXJ5LnVuc2lnbmVkSW50ZWdlcldpdGhE
ZWZhdWx0KTsKKyAgICBhdXRvIHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSB0b0pT
PElETFVuc2lnbmVkTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkudW5zaWduZWRJ
bnRlZ2VyV2l0aERlZmF1bHQpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiKSwgdW5z
aWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExVbnNpZ25lZExvbmdM
b25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnVuc2lnbmVkTGFyZ2VJbnRlZ2VyKSkgewotICAg
ICAgICBhdXRvIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9u
Z0xvbmc+KElETFVuc2lnbmVkTG9uZ0xvbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LnVuc2lnbmVkTGFyZ2VJbnRlZ2VyKSk7CisgICAgICAgIGF1dG8gdW5zaWduZWRMYXJn
ZUludGVnZXJWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oc3RhdGUsIHRocm93U2Nv
cGUsIElETFVuc2lnbmVkTG9uZ0xvbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LnVuc2lnbmVkTGFyZ2VJbnRlZ2VyKSk7CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidW5zaWduZWRMYXJnZUludGVnZXIi
KSwgdW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZSk7CiAgICAgfQotICAgIGF1dG8gdW5zaWduZWRM
YXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihk
aWN0aW9uYXJ5LnVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQpOworICAgIGF1dG8gdW5z
aWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExVbnNpZ25lZExvbmdM
b25nPihzdGF0ZSwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS51bnNpZ25lZExhcmdlSW50ZWdlcldp
dGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQiKSwgdW5zaWdu
ZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMjAxMiw3ICsyMDEyLDcgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdChK
U09iagogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAg
ICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewot
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4o
KnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9k
KGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETE51bGxh
YmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChpbmRleC52YWx1ZSgpKSk7CiAgICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CkBAIC0yMDI2LDcgKzIwMjYsNyBAQCBib29sIEpTVGVzdE9iajo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRlCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lO
REVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0
cmluZz4+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lh
bE1ldGhvZChpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKGluZGV4KSk7CiAgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0yMDUzLDcgKzIwNTMsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNhbGxKU1Rlc3RPCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIHBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmxlZ2FjeUNhbGxlck5hbWVkKFdURk1vdmUocGFyYW0p
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwubGVnYWN5Q2FsbGVyTmFtZWQoV1RGTW92ZShwYXJhbSkpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0yMDY3LDcg
KzIwNjcsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPCiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHBhcmFtID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBsLmxlZ2FjeUNhbGxl
ck9wZXJhdGlvbkZyb21CaW5kaW5ncyhXVEZNb3ZlKHBhcmFtKSkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxlZ2Fj
eUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncyhXVEZNb3ZlKHBhcmFtKSkpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0T2JqMyhFeGVjU3RhdGUqIHN0YXRl
KQpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxs
SlNUZXN0TwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUt
PmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJv
bUJpbmRpbmdzKCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5n
cygpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC00ODMxLDcgKzQ4MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92
ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZN
b3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC00ODQ1LDcgKzQ4NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
KFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDg4OSw3ICs0ODg5LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJs
ZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBh
cmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTQ5MDcsNyArNDkwNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJh
bSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC53b3JsZFNwZWNpZmljTWV0aG9kKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLndvcmxkU3BlY2lmaWNNZXRob2QoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkyMSw3ICs0
OTIxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jYWxjdWxhdGVTZWNy
ZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNlY3JldFJl
c3VsdChXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkzNSw3ICs0OTM1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGlt
cGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkdldFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTQ5NDksNyArNDk0
OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhy
b3dTY29wZSwgaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZl
YXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC00OTY0LDcgKzQ5NjQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLnZvaWRNZXRob2QoKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwudm9pZE1ldGhvZCgpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC00OTg2LDcgKzQ5ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50
ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
dm9pZE1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnZvaWRNZXRob2RX
aXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC52b2lkTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTAwMCw3ICs1MDAwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1ldGhv
ZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KCpzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC5ieXRlTWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRl
KiBzdGF0ZSkKQEAgLTUwMjEsNyArNTAyMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLCBbXShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9k
V2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZN
b3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEJ5dGU+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RG
TW92ZShieXRlQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhv
ZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MDM0LDcgKzUwMzQsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0
ZXQ+KGltcGwub2N0ZXRNZXRob2QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExPY3RldD4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm9jdGV0TWV0aG9kKCkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MDU1LDcgKzUwNTUsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iakFyZyA9IGNv
bnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRl
c3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kV2l0aEFy
Z3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
aW1wbC5vY3RldE1ldGhvZFdpdGhBcmdzKFdURk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFy
ZyksICpvYmpBcmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUp
CkBAIC01MDY4LDcgKzUwNjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmxvbmdNZXRob2QoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpA
QCAtNTA4OSw3ICs1MDg5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMiksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImxvbmdNZXRob2RXaXRoQXJncyIs
ICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+
KGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdB
cmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxMDIsNyArNTEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhv
ZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0
T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwub2JqTWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTEy
Myw3ICs1MTIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMiksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RP
YmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRl
c3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRo
b2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4o
KnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2Jq
TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJn
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxMzYsNyAr
NTEzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExMb25nPihpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBs
LnVuZm9yZ2VhYmxlTWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoRXhlY1N0YXRlKiBz
dGF0ZSkKQEAgLTUxNTMsNyArNTE1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZyA9
IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKGFyZykpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RX
aXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKGFyZykpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MTcxLDcgKzUx
NzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byByZXNvbHZlciA9IGNvbnZlcnQ8SURMWFBh
dGhOU1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZlcj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJyZXNvbHZlciIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIiLCAiWFBh
dGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFy
YW1ldGVyKCpyZXNvbHZlcik7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQ
YXJhbWV0ZXIoKnJlc29sdmVyKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNTE4NSw3ICs1MTg1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERP
TVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTE5Nyw3ICs1MTk3LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIFRlc3RP
Ymo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxl
U3RyaW5nU3RhdGljTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MjE0LDcgKzUyMTQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLm51
bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGluZGV4KSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGluZGV4
KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpA
QCAtNTIzMSw3ICs1MjMxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZW51bUFyZyA9IGNv
bnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0
aEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUyNDksNyArNTI0OSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIGVudW1BcmcgPSBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFs
b25lRW51bWVyYXRpb24+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoU3RhbmRhbG9uZUVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhTdGFuZGFsb25lRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTI2NSw3ICs1MjY1LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBlbnVtQXJnID0gc3RhdGUtPmFy
Z3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25h
bDxDb252ZXJ0ZXI8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlw
ZT4oY29udmVydDxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihzdGF0ZSwg
c2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51
bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOyB9
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTUyODEsNyArNTI4MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51
bUFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gVGVzdE9iajo6RW51bVR5
cGU6OkVudW1WYWx1ZTEgOiBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBl
Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51
bUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoZW51bUFyZykpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoZW51bUFyZykp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01MzE4LDcgKzUzMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0
PElETFVTVlN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJnKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1l
dGhvZFdpdGhVU1ZTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTMzNiw3ICs1MzM2LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExOdWxsYWJsZTxJRExVU1ZTdHJp
bmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTM1NCw3ICs1MzU0LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExUcmVhdE51bGxBc0Vt
cHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUzNzIsNyArNTM3Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMQnl0ZVN0cmluZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQnl0
ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmlu
Z0FyZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01MzkwLDcgKzUzOTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBzdHIgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEJ5dGVTdHJpbmc+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUJ5
dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxl
Qnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NDA4LDcgKzU0MDgsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElE
TEJ5dGVTdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBp
bXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZN
b3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTQyNiw3ICs1NDI2LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gc2VyaWFsaXplZEFyZyA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlw
dFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGltcGwuc2VyaWFsaXplZFZhbHVlKFdURk1vdmUoc2VyaWFsaXplZEFy
ZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5zZXJpYWxpemVkVmFsdWUoV1RGTW92ZShzZXJpYWxpemVkQXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTU0NDQsNyArNTQ0NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHJlY29yZFBhcmFtZXRl
ciA9IGNvbnZlcnQ8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMTG9uZz4+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aFJlY29yZChXVEZN
b3ZlKHJlY29yZFBhcmFtZXRlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoUmVjb3JkKFdURk1v
dmUocmVjb3JkUGFyYW1ldGVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTU0NTgsNyArNTQ1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwu
bWV0aG9kV2l0aEV4Y2VwdGlvbigpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbigp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01NTI2LDcgKzU1MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGlt
cGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwucHJp
dmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTU1NDMsNyArNTU0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGFyZ3VtZW50ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQp
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1l
bnQpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAt
NTU2NCw3ICs1NTY0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgYXV0byB1c2VDYXB0dXJlID0gY29udmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmFkZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwg
V1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5hZGRF
dmVudExpc3RlbmVyKFdURk1vdmUodHlwZSksIFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVz
ZUNhcHR1cmUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtNTU4Niw3ICs1NTg2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgYXV0byB1c2VDYXB0dXJlID0gY29udmVydDxJRExCb29sZWFuPigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5yZW1vdmVFdmVudExpc3RlbmVyKFdURk1vdmUodHlwZSksIFdURk1vdmUobGlz
dGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTYwMCw3ICs1NjAwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWQoKnN0YXRlKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTYxNCw3ICs1NjE0LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwud2l0aFNjcmlwdFN0YXRlT2JqKCpzdGF0ZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0U3RhdGVPYmooKnN0
YXRlKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NjI3
LDcgKzU2MjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBwcm9wYWdhdGVFeGNl
cHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRp
b24oKnN0YXRlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0
YXRlKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNTY1Nyw3ICs1NjU3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgq
Y29udGV4dCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNTY3NCw3ICs1Njc0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlKCpzdGF0ZSwgKmNvbnRleHQpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCpzdGF0ZSwgKmNvbnRleHQpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NzA3LDcgKzU3MDcs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygqc3RhdGUsICpjb250ZXh0KSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpz
dGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKCpzdGF0ZSwgKmNv
bnRleHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlcyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTcyNSw3ICs1NzI1LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkp
OwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAg
ICBpbXBsLndpdGhEb2N1bWVudEFyZ3VtZW50KGRvY3VtZW50KTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwud2l0aERv
Y3VtZW50QXJndW1lbnQoZG9jdW1lbnQpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NzQyLDcgKzU3NDIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byogaW5jdW1iZW50RG9jdW1lbnQg
PSBpbmN1bWJlbnRET01XaW5kb3coKnN0YXRlKS5kb2N1bWVudCgpOwogICAgIGlmICghaW5jdW1i
ZW50RG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgaW1wbC53aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCgqaW5jdW1iZW50RG9jdW1l
bnQpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC53aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCgqaW5jdW1iZW50RG9j
dW1lbnQpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC01NzU2LDcgKzU3NTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBp
bXBsLndpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChpbmN1bWJlbnRET01XaW5kb3coKnN0YXRlKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLndpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChpbmN1bWJlbnRET01XaW5kb3co
KnN0YXRlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTU3NzIsNyArNTc3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlv
bmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29u
dmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFy
ZyhXVEZNb3ZlKG9wdCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBcmcoV1RGTW92
ZShvcHQpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNTc4OCw3ICs1Nzg4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNvbnZl
cnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShvcHQpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUob3B0
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTU4MDgsNyArNTgwOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0
aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RG
TW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01ODMwLDcgKzU4MzAsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9wdDIgPSBzdGF0ZS0+YXJn
dW1lbnQoMikuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+
OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVy
blR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MikpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdz
KFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQxKSwgV1RGTW92ZShvcHQyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhXVEZNb3ZlKG5v
bk9wdCksIFdURk1vdmUob3B0MSksIFdURk1vdmUob3B0MikpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01ODQ2LDcgKzU4NDYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgw
KS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTU4NjIsNyArNTg2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBT
dHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNWU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhXVEZNb3Zl
KHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoV1RGTW92ZShz
dHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNTg3OCw3ICs1ODc4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IG51bGxBdG9tKCkgOiBj
b252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9t
aWNTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRv
bWljU3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4OTQsNyArNTg5NCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
KCkgPyBBU0NJSUxpdGVyYWwoImZvbyIpIDogY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKHN0cikpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTEwLDcgKzU5
MTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQXRvbWljU3RyaW5nKCJmb28iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IGNvbnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRv
cjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZN
b3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmRE
ZWZhdWx0VmFsdWUoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTkyNiw3ICs1OTI2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNO
dWxsKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lz
TnVsbChXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01OTQyLDcgKzU5NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZp
bmVkKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lz
VW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5NTgsNyArNTk1OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
KCkgPyBudWxsQXRvbSgpIDogY29udmVydDxJRExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0
cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01
OTc0LDcgKzU5NzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9
IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZN
b3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC01OTkwLDcgKzU5OTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJp
bmcoKSA6IGNvbnZlcnQ8SURMVVNWU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJp
bmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5n
SXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MDA2LDcgKzYwMDYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gZW1wdHlBdG9tKCkgOiBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURM
RE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3Ry
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJp
bmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjAyMiw3ICs2MDIyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PElETFVucmVzdHJpY3RlZERvdWJsZT4oKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3Vi
bGVJc05hTihXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxE
b3VibGVJc05hTihXVEZNb3ZlKG51bWJlcikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MDM4LDcgKzYwMzgsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVk
RmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsRmxvYXRJc05hTihXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxGbG9hdElzTmFOKFdURk1vdmUobnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYwNTQsNyArNjA1NCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46
OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUo
bnVtYmVyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUo
bnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTYwNzAsNyArNjA3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gY29udmVydDxJRExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhXVEZNb3Zl
KG51bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhX
VEZNb3ZlKG51bWJlcikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC02MDg2LDcgKzYwODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
c3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+
KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnNpZ25lZExvbmdMb25nPjo6UmV0dXJu
VHlwZT4oY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdM
b25nKFdURk1vdmUobnVtYmVyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVuc2ln
bmVkTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjEwMiw3ICs2MTAyLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9u
Z0xvbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRP
cGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVy
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTYxMTgsNyArNjExOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
YXJyYXkgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZXsgfSA6IGNvbnZlcnQ8SURMU2VxdWVu
Y2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShXVEZNb3ZlKGFycmF5KSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoYXJyYXkpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjEzNCw3
ICs2MTM0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0
YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+OjpSZXR1cm5UeXBleyB9IDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01T
dHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYx
NTAsNyArNjE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IHN0
YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8
SURMQm9vbGVhbj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExC
b29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFu
KFdURk1vdmUoYikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKFdURk1v
dmUoYikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC02MTY2LDcgKzYxNjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIGIgPSBjb252ZXJ0PElETEJvb2xlYW4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoV1RGTW92ZShiKSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKFdURk1vdmUoYikpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
MTgyLDcgKzYxODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEgPSBj
b252ZXJ0PElETEFueT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxBbnkoV1RGTW92ZShhKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbEFueShXVEZNb3ZlKGEpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNjE5OCw3ICs2MTk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExPYmplY3Q+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpv
cHRpb25hbDxDb252ZXJ0ZXI8SURMT2JqZWN0Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExPYmpl
Y3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbE9iamVjdChXVEZNb3ZlKGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsT2JqZWN0KFdURk1vdmUoYSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjE0LDcgKzYyMTQsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG9iaiA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJm
YWNlPFRlc3RPYmo+Pj4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlciIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoV1RGTW92ZShvYmopKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKFdURk1vdmUob2JqKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYyMzAsNyArNjIzMCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JqID0gY29udmVydDxJRExO
dWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAib2JqIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChXVEZN
b3ZlKG9iaikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJ
c051bGwoV1RGTW92ZShvYmopKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNjI0Niw3ICs2MjQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byByZXNvbHZlciA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMWFBhdGhO
U1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZlcj4+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCAiWFBhdGhOU1Jlc29sdmVy
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoV1RGTW92
ZShyZXNvbHZlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2
ZXIoV1RGTW92ZShyZXNvbHZlcikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjYyLDcgKzYyNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIHJlY29yZCA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpudWxsb3B0IDogY29udmVydDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9N
U3RyaW5nLCBJRExMb25nPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKFdURk1vdmUocmVjb3JkKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChXVEZNb3ZlKHJlY29yZCkpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjgwLDcg
KzYyODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURM
Q2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0
aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzAwLDcgKzYz
MDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRv
IGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2Nv
cGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdB
bmRDYWxsYmFja0FyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
KFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjMxNiw3
ICs2MzE2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+Pj4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzM0LDcgKzYzMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRl
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJh
Y2tGdW5jdGlvbkFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjM1NCw3ICs2MzU0LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBjYWxs
YmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMSwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShub25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VO
b25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02MzcwLDcgKzYzNzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0
YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxi
YWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxi
YWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFj
aykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC02Mzg1LDcgKzYzODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlPj4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIFtdKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
InN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgVGVzdE9i
ajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFj
aykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC02NDAyLDcgKzY0MDIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBb
XShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBUZXN0
T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2su
cmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTY0MTcsNyArNjQxNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5jb25kaXRpb25h
bE1ldGhvZDEoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCkBA
IC02NDMzLDcgKzY0MzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNv
bmRpdGlvbmFsTWV0aG9kMigpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjQ1
MCw3ICs2NDUwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25kaXRp
b25hbE1ldGhvZDMoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxNZXRob2QzKCk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0NzAsNyAr
NjQ3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1
dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyks
IFdURk1vdmUoc3RyQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShv
YmpBcmcpLCBXVEZNb3ZlKHN0ckFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NDgzLDcgKzY0ODMsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJn
dW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+
OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVy
blR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUo
bG9uZ0FyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwg
V1RGTW92ZShsb25nQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTY0OTQsNyArNjQ5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZN
b3ZlKHN0ckFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJn
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTY1MDUsNyArNjUwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
bG9uZ0FyZyA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUobG9uZ0FyZykpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUobG9uZ0FyZykpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTE2LDcgKzY1MTYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVy
dDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY1MjcsNyArNjUyNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbGlzdEFyZyA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMSW50ZXJmYWNlPERPTVN0cmluZ0xpc3Q+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImxpc3RB
cmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkRPTVN0cmluZ0xpc3QiKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShsaXN0QXJnKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShsaXN0QXJnKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY1MzgsNyArNjUzOCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElE
TE51bGxhYmxlPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+Pigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJh
eUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NjU0OSw3ICs2NTQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpB
cmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iakFy
ZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9iaiIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2JqQXJnKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1l
dGhvZCgqb2JqQXJnKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNjU2MCw3ICs2NTYwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byB3aW5kb3cgPSBjb252ZXJ0PElETEludGVyZmFjZTxET01XaW5kb3c+Pigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJE
T01XaW5kb3ciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKndpbmRvdyk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKndpbmRvdyk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY1NzEsNyArNjU3MSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElETFNlcXVl
bmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTgyLDcgKzY1ODIsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGFycmF5QXJnID0gY29udmVydDxJRExT
ZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjU5Myw3ICs2NTkz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJnKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjYwNCw3ICs2NjA0LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBibG9iQXJncyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3Vt
ZW50czxJRExJbnRlcmZhY2U8QmxvYj4+KCpzdGF0ZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRN
ZXRob2QoV1RGTW92ZShibG9iQXJncykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUoYmxvYkFyZ3MpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjY2OSw3ICs2NjY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxl
PElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpLCBbXShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJv
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShzdHJB
cmcpLCBXVEZNb3ZlKG9iakFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9w
dGlvbmFsUGFyYW1ldGVyKFdURk1vdmUoc3RyQXJnKSwgV1RGTW92ZShvYmpBcmcpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjY4Miw3
ICs2NjgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byBsb25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9w
dGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8
Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3Zl
KG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NzI0LDcgKzY3MjQsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9iamVjdE9yTm9kZSA9IGNvbnZlcnQ8SURMVW5pb248
SURMSW50ZXJmYWNlPFRlc3RPYmo+LCBJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0
aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JO
b2RlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTY3MzUsNyArNjczNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gdmFsdWUgPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9u
KFdURk1vdmUodmFsdWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5n
dWlzaGluZ1VuaW9uKFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjc3MSw3ICs2NzcxLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmplY3RPck5vZGUgPSBjb252ZXJ0PElETFVuaW9u
PElETEludGVyZmFjZTxUZXN0T2JqPiwgSURMSW50ZXJmYWNlPFRlc3ROb2RlPj4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdp
dGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZShvYmpl
Y3RPck5vZGUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtNjc4Miw3ICs2NzgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RJbnRlcmZh
Y2U+LCBJRExET01TdHJpbmcsIElETExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5p
b25zKFdURk1vdmUodmFsdWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlz
dGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZSh2YWx1ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02ODIyLDcgKzY4MjIsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9IGNv
bnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAib2JqZWN0IiwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uIiwg
IlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vp
c2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSksICpvYmplY3QpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RP
ck5vZGUpLCAqb2JqZWN0KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjgzNSw3ICs2ODM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8
VGVzdE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAibm9kZSIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIsICJUZXN0Tm9kZSIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUo
b2JqZWN0T3JOb2RlKSwgKm5vZGUpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5v
bkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpLCAqbm9kZSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY4Njgs
NyArNjg2OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JqZWN0T3JO
b2RlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdE9iaj4s
IElETEludGVyZmFjZTxUZXN0Tm9kZT4+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUob2JqZWN0
T3JOb2RlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShv
YmplY3RPck5vZGUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNjg3OSw3ICs2ODc5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1v
dmUoaW5kZXgpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihXVEZNb3Zl
KGluZGV4KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTY5MTcsNyArNjkxNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gb2JqZWN0T3JOb2RlID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyB0
cnVlIDogY29udmVydDxJRExVbmlvbjxJRExET01TdHJpbmcsIElETEJvb2xlYW4+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE9wdGlv
bmFsVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRo
T3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02OTI4LDcgKzY5MjgsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShpbmRleCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZFdp
dGhPcHRpb25hbFVuaW9uKFdURk1vdmUoaW5kZXgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjk2OSw3ICs2OTY5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBub2RlID0gY29udmVy
dDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAibm9kZSIsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiLCAi
VGVzdE5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vp
c2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShvYmopLCAqbm9kZSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2Fk
V2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShvYmopLCAqbm9k
ZSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTY5ODIsNyArNjk4Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0
aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3ZlKG5vZGUpLCBXVEZNb3ZlKGluZGV4KSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RG
TW92ZShub2RlKSwgV1RGTW92ZShpbmRleCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MDEzLDcgKzcwMTMsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVGVzdE9iajo6Y2xhc3NNZXRo
b2QoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIFRlc3RPYmo6OmNsYXNzTWV0aG9kKCk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcwMjgsNyArNzAyOCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDog
c3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURM
TG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRp
b25hbChXVEZNb3ZlKGFyZykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TExvbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9u
YWwoV1RGTW92ZShhcmcpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3Rh
dGUqIHN0YXRlKQpAQCAtNzA1NSw3ICs3MDU1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
IGFyZyA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoV1RGTW92ZShhcmcpKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUoYXJnKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcwNjgsNyArNzA2OCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byB0eXBlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFRlc3RPYmo6Om92ZXJs
b2FkZWRNZXRob2QxKFdURk1vdmUodHlwZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gVGVzdE9iajo6b3ZlcmxvYWRlZE1l
dGhvZDEoV1RGTW92ZSh0eXBlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTcxMTQsNyArNzExNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElE
TENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wKFdURk1vdmUob2JqQXJn
c1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9uZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jbGFzc01ldGhvZFdp
dGhDbGFtcChXVEZNb3ZlKG9iakFyZ3NTaG9ydCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzEz
MCw3ICs3MTMwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmdz
TG9uZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChXVEZN
b3ZlKG9iakFyZ3NMb25nKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRp
b25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcxNTAsNyArNzE1MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252
ZXJ0PElETEVuZm9yY2VSYW5nZUFkYXB0b3I8SURMVW5zaWduZWRMb25nPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNl
UmFuZ2UoV1RGTW92ZShvYmpBcmdzU2hvcnQpLCBXVEZNb3ZlKG9iakFyZ3NMb25nKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShXVEZNb3ZlKG9iakFyZ3NTaG9ydCks
IFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzE2Niw3ICs3MTY2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMRW5mb3JjZVJhbmdl
QWRhcHRvcjxJRExMb25nPj4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5j
bGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChXVEZN
b3ZlKG9iakFyZ3NMb25nKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTcxODQsNyArNzE4NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIHVuc2lnbmVkTG9uZ1NlcXVlbmNlID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExVbnNpZ25l
ZExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShXVEZNb3ZlKHVuc2lnbmVkTG9uZ1NlcXVlbmNl
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShXVEZNb3ZlKHVu
c2lnbmVkTG9uZ1NlcXVlbmNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTcyMzQsNyArNzIzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gb3B0aW9uYWxVbmlvbiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5n
LCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KCkgOiBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNl
PElETFVucmVzdHJpY3RlZERvdWJsZT4+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbmlvbjxJ
RExET01TdHJpbmcsIElETFNlcXVlbmNlPElETFVucmVzdHJpY3RlZERvdWJsZT4+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoT3B0
aW9uYWxVbmlvblBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFsVW5pb24pKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
b3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoV1RGTW92ZShvcHRpb25hbFVuaW9u
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTcyNTQsNyArNzI1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gbnVsbGFibGVBcnJheUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
U2VxdWVuY2U8SURMVW5zaWduZWRMb25nPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKFdU
Rk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKFdURk1vdmUoYXJyYXlBcmcpLCBX
VEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzI3Miw3ICs3MjcyLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gZWxlbWVudElkID0gY29udmVydDxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWlj
U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURM
SW50ZXJmYWNlPEVsZW1lbnQ+Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRF
bGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChFeGVj
U3RhdGUqIHN0YXRlKQpAQCAtNzMwMiw3ICs3MzAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gdmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0Tm9kZT4+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAs
ICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQxIiwgIlRlc3ROb2RlIik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5jb252ZXJ0MSgqdmFsdWUpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb252ZXJ0MSgqdmFsdWUpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MzIw
LDcgKzczMjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJ2YWx1ZSIs
ICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252
ZXJ0MihXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbnZlcnQyKFdURk1vdmUodmFsdWUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNzMzOCw3ICs3MzM4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5jb252ZXJ0MyhXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbnZlcnQzKFdU
Rk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNzM1Niw3ICs3MzU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
dmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuY29udmVydDQoV1RGTW92ZSh2YWx1ZSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5jb252ZXJ0NChXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTczNzAsNyArNzM3MCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03MzgzLDcg
KzczODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmJhbmFuYSgpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5iYW5hbmEoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNzQwMyw3ICs3NDAzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJn
dW1lbnRzPElETERPTVN0cmluZz4oKnN0YXRlLCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudmFyaWFkaWNTdHJpbmdN
ZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnZhcmlhZGlj
U3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NDIzLDcgKzc0MjMs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHRh
aWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3Rh
dGUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC52YXJpYWRpY0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZN
b3ZlKHRhaWwpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwudmFyaWFkaWNEb3VibGVNZXRob2QoV1RGTW92ZShoZWFk
KSwgV1RGTW92ZSh0YWlsKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTc0NDMsNyArNzQ0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3Vt
ZW50czxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnZhcmlhZGljTm9k
ZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnZhcmlhZGljTm9kZU1l
dGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0NjMsNyArNzQ2Myw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJp
YWRpY0FyZ3VtZW50czxJRExVbmlvbjxJRExJbnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+
KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwg
V1RGTW92ZSh0YWlsKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZSho
ZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0ODMsNyArNzQ4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5hbnkoV1RGTW92ZShh
KSwgV1RGTW92ZShiKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmFueShXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzQ5Nyw3ICs3NDk3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0
UHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJvbWlz
ZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NTE1LDcgKzc1MTUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExGbG9hdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJn
dW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2Up
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNzUyOSw3ICs3NTI5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcHJvcGFn
YXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aEV4Y2VwdGlvbihXVEZNb3ZlKHByb21pc2UpKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NTQ1LDcgKzc1NDUsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1
cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+
KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KFdURk1v
dmUoYSksIFdURk1vdmUocHJvbWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc1
NjEsNyArNzU2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IGNv
bnZlcnQ8SURMRmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oV1RGTW92ZShhKSwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKFdURk1v
dmUoYSksIFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NTcyLDcgKzc1NzIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIHJlcXVlc3QgPSBjb252ZXJ0PElETEludGVyZmFjZTxGZXRj
aFJlcXVlc3Q+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAicmVxdWVzdCIsICJUZXN0T2JqZWN0IiwgInRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIiwgIkZldGNoUmVxdWVzdCIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
dGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oKnJlcXVlc3QsIFdURk1vdmUocHJvbWlzZSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbigqcmVxdWVzdCwgV1RG
TW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTc2MDMsNyArNzYwMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBUZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0
aW9uKFdURk1vdmUocHJvbWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VG
dW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzYxNiw3ICs3NjE2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigq
c3RhdGUsIHRocm93U2NvcGUsIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRo
RXhjZXB0aW9uKFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRlc3RPYmo6OnRlc3RTdGF0aWNQ
cm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NjY2LDcgKzc2
NjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMUHJvbWlzZTxJRExWb2lkPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwudGVzdFJldHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rp
b24oKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFZv
aWQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1w
bC50ZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbigpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQpAQCAtNzY4Miw3ICs3NjgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBzdHIgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzY5Niw3ICs3
Njk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gY29udmVydDxJ
RExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNv
bmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsT3Zl
cmxvYWQoV1RGTW92ZShhKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTc3MzgsNyArNzczOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuc2luZ2xlQ29uZGl0aW9uYWxPdmVybG9h
ZChXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdU
Rk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTc3NTAsNyArNzc1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaW1wbC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03Nzg4
LDcgKzc3ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbml0ID0gY29udmVydDxJRExE
aWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLmF0dGFjaFNoYWRvd1Jvb3QoV1RGTW92ZShpbml0KSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLmF0dGFjaFNoYWRvd1Jvb3QoV1RGTW92ZShpbml0KSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc4MDYsNyArNzgwNiw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGRpY3QgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8
RGljdGlvbmFyeUltcGxOYW1lPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKFdURk1v
dmUoZGljdCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5vcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFy
YW1ldGVyKFdURk1vdmUoZGljdCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC03ODI0LDcgKzc4MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBkYXRhID0gY29udmVydDxJRExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFy
cmF5QnVmZmVyPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5idWZmZXJTb3VyY2VQYXJhbWV0ZXIoV1RGTW92ZShkYXRhKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmJ1ZmZl
clNvdXJjZVBhcmFtZXRlcihXVEZNb3ZlKGRhdGEpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzg0Miw3ICs3ODQyLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gcGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubGVnYWN5Q2FsbGVyTmFtZWQoV1RGTW92
ZShwYXJhbSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5sZWdhY3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTc4NjMsNyArNzg2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAx
LCAiYiIsICJUZXN0T2JqZWN0IiwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIsICJOb2Rl
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC50ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oKmEsICpiKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwudGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKCphLCAqYik7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmV0dXJuVmFsdWUpOwogfQogCkBAIC03ODg0LDcgKzc4ODQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGIg
PSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMSwgImIiLCAiVGVzdE9i
amVjdCIsICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uIiwgIk5vZGUi
KTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRl
c3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oKmEsICpiKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oKmEsICpiKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTc4OTgs
NyArNzg5OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwuY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsbHlF
eHBvc2VkVG9XaW5kb3dGdW5jdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03OTEyLDcgKzc5MTIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlv
bigpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzkyNiw3ICs3OTI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24oKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uKCk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc5NDAsNyAr
Nzk0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0
ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVTVlN0cmluZz4oKnN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw3ICsxNTMsNyBAQCBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3Bl
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
WWVzPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAq
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRl
LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzMsNyArMTczLDcgQEAgYm9v
bCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKnN0YXRlLCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMjI2LDcgKzIyNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxO
b2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubmFtZWRJdGVt
KFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETElu
dGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93
U2NvcGUsIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9u
TmFtZWRJdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw3ICsz
MTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMU2VyaWFs
aXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZnVuY3Rpb24oV1RGTW92ZSh2YWx1ZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5mdW5jdGlvbihXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTMyNyw3ICszMjcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
U2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmZ1bmN0aW9uUmV0dXJuaW5nKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCB0aHJvd1Njb3BlLCBpbXBsLmZ1bmN0aW9uUmV0dXJuaW5nKCkpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGlt
cGwudG9TdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmcoKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
aW1wbC50b1N0cmluZygpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5n
KEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZpZXIoKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
QEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmll
cigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuYWx0ZXJu
YXRlSWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmFsdGVybmF0ZUlkZW50aWZpZXIoKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihFeGVjU3RhdGUq
IHN0YXRlKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5h
bHRlcm5hdGVJZGVudGlmaWVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmll
cigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3Rh
dGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5nKCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwu
dG9TdHJpbmcoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaWRlbnRp
ZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRl
KiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIHggPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRl
cjxJRExTZXF1ZW5jZTxJRExMb25nPj46OlJldHVyblR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVl
bmNlPElETExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBp
bXBsLmZ1bmMoV1RGTW92ZSh4KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmZ1bmMoV1RGTW92ZSh4KSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUwOCw3
ICs1MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBh
dXRvIGFscGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlv
bmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KCkgOiBzdGQ6
Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KGNv
bnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDQpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLnNldFNoYWRvdyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWln
aHQpLCBXVEZNb3ZlKGJsdXIpLCBXVEZNb3ZlKGNvbG9yKSwgV1RGTW92ZShhbHBoYSkpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5zZXRTaGFkb3coV1RGTW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92
ZShibHVyKSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUoYWxwaGEpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTI2LDcgKzUyNiw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5j
ZTxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhX
VEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNl
cXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVl
bmNlPElETERPTVN0cmluZz4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTYxLDcg
KzU2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJ
RExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5zZXF1ZW5jZU9mTnVsbGFibGVzQXJnKFdURk1v
dmUoc2VxdWVuY2VBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2VxdWVuY2VPZk51bGxhYmxlc0FyZyhXVEZN
b3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTU3OSw3ICs1NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNl
QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhXVEZNb3Zl
KHNlcXVlbmNlQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBz
ZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMVW5pb248SURM
RE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pj4+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0Fy
ZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZlVu
aW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxNSw3ICs2MTUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byB1bmlvbkFyZyA9IGNvbnZlcnQ8SURMVW5pb248SURMRE9NU3RyaW5nLCBJ
RExMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC51
bmlvbkFyZyhXVEZNb3ZlKHVuaW9uQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnVuaW9uQXJnKFdURk1vdmUo
dW5pb25BcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIGF1dG8gYXJnMiA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVk
TG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETENs
YW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURM
Q2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgxKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5mdW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdU
Rk1vdmUoYXJnMikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdU
Rk1vdmUoYXJnMikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJn
ID0gY29udmVydDxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZnVuY1dpdGhDbGFtcEluVHlwZWRlZihXVEZNb3Zl
KGFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5mdW5jV2l0aENsYW1wSW5UeXBlZGVmKFdURk1vdmUoYXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTY2Nyw3ICs2NjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9pbnRGdW5jdGlvbigpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnBvaW50RnVuY3Rpb24o
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03MTgsNyAr
NzE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElE
TFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0RXZlbnRUYXJnZXQ+Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEJvb2xlYW4+KGltcGwuY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RGTW92
ZShzZXF1ZW5jZUFyZykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJv
b2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVp
cmVzSW5jbHVkZShXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1
ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTczMSw3ICs3MzEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKnN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhFeGNlcHRpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNr
RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NCwxMiArNzQsMTIgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVm9p
ZDo6SW1wbGVtZQogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExGbG9hdDMyQXJyYXk+KHN0
YXRlLCBnbG9iYWxPYmplY3QsIGFycmF5UGFyYW0pKTsKLSAgICBhcmdzLmFwcGVuZCh0b0pTPElE
TFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBzcnpQYXJhbSkpOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRE9NU3RyaW5n
PihzdGF0ZSwgc3RyQXJnKSk7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExCb29sZWFuPihib29s
UGFyYW0pKTsKLSAgICBhcmdzLmFwcGVuZCh0b0pTPElETExvbmc+KGxvbmdQYXJhbSkpOwotICAg
IGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4oc3RhdGUsIGdsb2JhbE9i
amVjdCwgdGVzdE5vZGVQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRmxvYXQzMkFy
cmF5PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBhcnJheVBhcmFtKSk7CisgICAg
YXJncy5hcHBlbmQodG9KUzxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgc3J6UGFyYW0pKTsKKyAg
ICBhcmdzLmFwcGVuZCh0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIHN0ckFy
ZykpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMQm9vbGVhbj4oc3RhdGUsIHRocm93U2NvcGUs
IGJvb2xQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93
U2NvcGUsIGxvbmdQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPFRl
c3ROb2RlPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGVzdE5vZGVQYXJhbSkp
OwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU01lZGlhUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU01l
ZGlhUnVsZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
ZWRpYVJ1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw2IEBAIGludGVyZmFjZSBD
U1NNZWRpYVJ1bGUgOiBDU1NSdWxlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFMaXN0
IG1lZGlhOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKG9wdGlvbmFs
IERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5k
ZXggPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZShvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxl
KG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgaW5kZXggPSAwKTsKKyAgICB2b2lkIGRlbGV0ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBpbmRleCA9IDApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBA
CiAKICAgICBET01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1v
dmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIERP
TVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBET01T
dHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByb3BlcnR5KERPTVN0
cmluZyBwcm9wZXJ0eU5hbWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZh
bHVlLCBvcHRpb25hbCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0
eSA9ICIiKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9w
dGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIp
OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdl
dHRlciBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDEz
IEBAIGludGVyZmFjZSBDU1NTdHlsZVNoZWV0IDogU3R5bGVTaGVldCB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIENTU1J1bGUgb3duZXJSdWxlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NS
dWxlTGlzdCBjc3NSdWxlczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9u
ZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4
ID0gMCk7CisgICAgdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxlLCBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIGRlbGV0ZVJ1
bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVs
ZUxpc3QgcnVsZXM7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBvcGVyYXRpb25zIGFyZSBX
ZWJLaXQtc3BlY2lmaWMuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGFkZFJ1bGUob3B0
aW9uYWwgRE9NU3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0cmlu
ZyBzdHlsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBs
b25nIGluZGV4ID0gMCk7CisgICAgbG9uZyBhZGRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBzZWxl
Y3RvciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJpbmcgc3R5bGUgPSAidW5kZWZpbmVk
Iiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCByZW1vdmVSdWxlKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDYg
QEAgaW50ZXJmYWNlIENTU1N1cHBvcnRzUnVsZSA6IENTU1J1bGUgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGNvbmRpdGlvblRleHQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVk
IGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBp
bmRleCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxlKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcg
cnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIHZvaWQgZGVsZXRl
UnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiAgXSBpbnRlcmZhY2UgRE9N
TWF0cml4IDogRE9NTWF0cml4UmVhZE9ubHkgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3
T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5p
dCBvdGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01N
YXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0NjRBcnJh
eShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJp
eCBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOworICAgIFtOZXdPYmpl
Y3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkz
Mik7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQ2NEFycmF5KEZs
b2F0NjRBcnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBs
ZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4CiAgICAgaW5o
ZXJpdCBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAvLyBBbGlhcyBmb3IgbTExLgpA
QCAtNjIsOCArNjIsOCBAQAogICAgIGluaGVyaXQgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3Vi
bGUgbTQ0OwogCiAgICAgLy8gTXV0YWJsZSB0cmFuc2Zvcm0gbWV0aG9kcwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRE9NTWF0cml4IG11bHRpcGx5U2VsZihvcHRpb25hbCBET01NYXRyaXhJbml0
IG90aGVyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTU1hdHJpeCBwcmVNdWx0aXBseVNl
bGYob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgRE9NTWF0cml4IG11bHRpcGx5
U2VsZihvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBET01NYXRyaXggcHJlTXVs
dGlwbHlTZWxmKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwogICAgIERPTU1hdHJpeCB0
cmFuc2xhdGVTZWxmKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgdHggPSAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgdHkgPSAw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgdHogPSAwKTsKQEAgLTkwLDUgKzkwLDUgQEAKICAgICBET01NYXRyaXggc2tld1lTZWxmKG9w
dGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgc3kgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVl
cy4KICAgICBET01NYXRyaXggaW52ZXJ0U2VsZigpOwogCi0gICAgW0V4cG9zZWQ9V2luZG93LCBN
YXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1zZXRNYXRyaXhWYWx1ZUZvckJpbmRpbmdz
XSBET01NYXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRyYW5zZm9ybUxpc3QpOworICAg
IFtFeHBvc2VkPVdpbmRvdywgSW1wbGVtZW50ZWRBcz1zZXRNYXRyaXhWYWx1ZUZvckJpbmRpbmdz
XSBET01NYXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRyYW5zZm9ybUxpc3QpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIp
LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIERPTU1hdHJpeFJl
YWRPbmx5IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1h
dHJpeFJlYWRPbmx5IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25s
eSBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9hdDY0
QXJyYXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01N
YXRyaXhSZWFkT25seSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwor
ICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5
KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4
UmVhZE9ubHkgZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CiAKICAgICAv
LyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50
cyBvZiB0aGUgNHg0IG1hdHJpeAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGE7IC8vIEFsaWFzIGZvciBtMTEuCkBAIC04OCwxNSArODgsMTUgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBk
b3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBbTmV3T2JqZWN0
XSBET01NYXRyaXggc2tld1gob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCA9IDApOyAv
LyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBza2V3WShv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3Jl
ZXMuCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIERPTU1hdHJpeCBtdWx0aXBs
eShvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBbTmV3T2JqZWN0XSBET01NYXRy
aXggbXVsdGlwbHkob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CiAgICAgW05ld09iamVj
dF0gRE9NTWF0cml4IGZsaXBYKCk7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGZsaXBZKCk7
CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGludmVyc2UoKTsKIAogICAgIFtOZXdPYmplY3Rd
IERPTVBvaW50IHRyYW5zZm9ybVBvaW50KG9wdGlvbmFsIERPTVBvaW50SW5pdCBwb2ludCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBGbG9hdDMyQXJyYXkgdG9GbG9hdDMyQXJyYXkoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEZsb2F0NjRBcnJheSB0b0Zsb2F0NjRBcnJheSgpOworICAg
IEZsb2F0MzJBcnJheSB0b0Zsb2F0MzJBcnJheSgpOworICAgIEZsb2F0NjRBcnJheSB0b0Zsb2F0
NjRBcnJheSgpOwogCi0gICAgW0V4cG9zZWQ9V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3Ry
aW5naWZpZXI7CisgICAgW0V4cG9zZWQ9V2luZG93XSBzdHJpbmdpZmllcjsKICAgICBzZXJpYWxp
emVyID0geyBhdHRyaWJ1dGUgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwxMyBAQAogICAgIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwcmltaXRpdmVUeXBlOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9IE5hTik7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0RmxvYXRWYWx1ZShv
cHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOworICAgIHZvaWQgc2V0RmxvYXRW
YWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDAsIG9wdGlvbmFsIHVucmVz
dHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKKyAgICB1bnJlc3RyaWN0ZWQgZmxvYXQg
Z2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFN0cmluZ1ZhbHVlKG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nVmFsdWUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCk7Cisg
ICAgdm9pZCBzZXRTdHJpbmdWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBzdHJpbmdUeXBl
ID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlKTsKKyAgICBET01TdHJpbmcgZ2V0
U3RyaW5nVmFsdWUoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGVwcmVjYXRlZENTU09N
Q291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERlcHJl
Y2F0ZWRDU1NPTVJlY3QgZ2V0UmVjdFZhbHVlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBE
ZXByZWNhdGVkQ1NTT01SR0JDb2xvciBnZXRSR0JDb2xvclZhbHVlKCk7CisgICAgRGVwcmVjYXRl
ZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKKyAgICBEZXByZWNhdGVkQ1NTT01SZWN0
IGdldFJlY3RWYWx1ZSgpOworICAgIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yIGdldFJHQkNvbG9y
VmFsdWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSBGb250RmFjZVNldExvYWRTdGF0dXMgewogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZXJyb3I7CiAKICAgICBQcm9taXNlPHNl
cXVlbmNlPEZvbnRGYWNlPj4gbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5n
IHRleHQgPSAiICIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBjaGVjayhET01T
dHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiICIpOworICAgIGJvb2xlYW4g
Y2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0gIiAiKTsKIAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPEZvbnRGYWNlU2V0PiByZWFkeTsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1czsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNiBAQAogCiAg
ICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9sZE1lZGl1bSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZE1lZGl1bShET01TdHJpbmcgbmV3
TWVkaXVtKTsKKyAgICB2b2lkIGRlbGV0ZU1lZGl1bShET01TdHJpbmcgb2xkTWVkaXVtKTsKKyAg
ICB2b2lkIGFwcGVuZE1lZGl1bShET01TdHJpbmcgbmV3TWVkaXVtKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDEzICs1NywxMyBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG00NDsKIAog
ICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1
ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4VmFsdWUo
b3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZyA9ICJ1bmRlZmluZWQiKTsKKyAgICB2b2lkIHNldE1h
dHJpeFZhbHVlKG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmcgPSAidW5kZWZpbmVkIik7CiAgICAg
CiAgICAgLy8gTXVsdGlwbHkgdGhpcyBtYXRyaXggYnkgc2Vjb25kTWF0cml4LCBvbiB0aGUgcmln
aHQgKHJlc3VsdCA9IHRoaXMgKiBzZWNvbmRNYXRyaXgpCiAgICAgV2ViS2l0Q1NTTWF0cml4IG11
bHRpcGx5KG9wdGlvbmFsIFdlYktpdENTU01hdHJpeD8gc2Vjb25kTWF0cml4ID0gbnVsbCk7CiAg
ICAgCiAgICAgLy8gUmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoaXMgbWF0cml4LiBUaHJvdyBhbiBl
eGNlcHRpb24gaWYgdGhlIG1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZQotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gV2ViS2l0Q1NTTWF0cml4IGludmVyc2UoKTsKKyAgICBXZWJLaXRDU1NNYXRyaXgg
aW52ZXJzZSgpOwogICAgIAogICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5
IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1
ZSBvZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25z
CkBAIC05Miw1ICs5Miw1IEBACiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVl
IG9mIDAuCiAgICAgV2ViS2l0Q1NTTWF0cml4IHNrZXdZKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBk
b3VibGUgYW5nbGUgPSBOYU4pOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBzdHJpbmdpZmll
cjsKKyAgICBzdHJpbmdpZmllcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRh
dGEuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMSBAQAogaW50ZXJmYWNlIENo
YXJhY3RlckRhdGEgOiBOb2RlIHsKICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgZGF0YTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc3Vic3RyaW5nRGF0
YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgRE9NU3Ry
aW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291
bnQpOwogICAgIHZvaWQgYXBwZW5kRGF0YShET01TdHJpbmcgZGF0YSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIGluc2VydERhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIERPTVN0cmlu
ZyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlRGF0YSh1bnNpZ25l
ZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25n
IGNvdW50LCBET01TdHJpbmcgZGF0YSk7CisgICAgdm9pZCBpbnNlcnREYXRhKHVuc2lnbmVkIGxv
bmcgb2Zmc2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgdm9pZCBkZWxldGVEYXRhKHVuc2lnbmVk
IGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICB2b2lkIHJlcGxhY2VEYXRh
KHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50LCBET01TdHJpbmcgZGF0
YSk7CiB9OwogCiBDaGFyYWN0ZXJEYXRhIGltcGxlbWVudHMgQ2hpbGROb2RlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiBbCiAg
ICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGlsZE5vZGUgewotICAgIFtDRVJl
YWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYmVmb3JlKChOb2Rl
IG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rl
cyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFj
dGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOworICAg
IFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdm9pZCBiZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB2b2lkIGFmdGVyKChO
b2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJs
ZV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBb
Q0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZvaWQgcmVtb3ZlKCk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiBdIGludGVyZmFjZSBDdXN0b21FbGVtZW50UmVn
aXN0cnkgewogICAgIFtDRVJlYWN0aW9ucywgQ3VzdG9tXSB2b2lkIGRlZmluZShET01TdHJpbmcg
bmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3IpOwogICAgIGFueSBnZXQoRE9NU3RyaW5nIG5hbWUp
OwotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJv
bWlzZTx2b2lkPiB3aGVuRGVmaW5lZChET01TdHJpbmcgbmFtZSk7CisgICAgW0N1c3RvbSwgUmV0
dXJuc093blByb21pc2VdIFByb21pc2U8dm9pZD4gd2hlbkRlZmluZWQoRE9NU3RyaW5nIG5hbWUp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVy
ZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRp
b25dIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAgICBbTmV3T2Jq
ZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOworICAg
IFtOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKKyAg
ICBbTmV3T2JqZWN0XSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CiAgICAgW05ld09iamVj
dF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0
bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVzZWxlc3M7IGFsd2F5cyByZXR1
cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRSZWFkT25seS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRSZWFkT25seS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW50ZXJmYWNlIERPTVBvaW50UmVh
ZE9ubHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHo7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgdzsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NUG9pbnQgbWF0cml4VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJp
eEluaXQgbWF0cml4KTsKKyAgICBET01Qb2ludCBtYXRyaXhUcmFuc2Zvcm0ob3B0aW9uYWwgRE9N
TWF0cml4SW5pdCBtYXRyaXgpOwogCiAgICAgc2VyaWFsaXplciA9IHsgYXR0cmlidXRlIH07CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxp
c3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERhdGFUcmFuc2Zlckl0ZW0gaXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGF0YVRyYW5z
ZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBET01TdHJpbmcgdHlwZSk7CisgICAgRGF0YVRy
YW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBET01TdHJpbmcgdHlwZSk7CiAgICAgRGF0
YVRyYW5zZmVySXRlbT8gYWRkKEZpbGUgZmlsZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgcmVtb3ZlKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwogCiAgICAgdm9pZCBjbGVhcigpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjEgKzU4LDIxIEBAIHR5cGVkZWYgKAog
ICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoRE9NU3RyaW5nIGNsYXNzTmFtZXMpOwogCi0gICAgW05ld09iamVj
dCwgTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlRWxlbWVudEZvckJpbmRp
bmdzXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoRE9NU3RyaW5nIGxvY2FsTmFtZSk7IC8vIEZJWE1F
OiBtaXNzaW5nIG9wdGlvbnMgcGFyYW1ldGVyLgotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhj
ZXB0aW9uXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwg
RE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFt
ZXRlci4KKyAgICBbTmV3T2JqZWN0LCBJbXBsZW1lbnRlZEFzPWNyZWF0ZUVsZW1lbnRGb3JCaW5k
aW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KERPTVN0cmluZyBsb2NhbE5hbWUpOyAvLyBGSVhN
RTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KKyAgICBbTmV3T2JqZWN0XSBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnROUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmll
ZE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KICAgICBbTmV3T2Jq
ZWN0XSBEb2N1bWVudEZyYWdtZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBbTmV3
T2JqZWN0XSBUZXh0IGNyZWF0ZVRleHROb2RlKERPTVN0cmluZyBkYXRhKTsKLSAgICBbTmV3T2Jq
ZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQ0RBVEFTZWN0aW9uIGNyZWF0ZUNEQVRBU2VjdGlvbihE
T01TdHJpbmcgZGF0YSk7CisgICAgW05ld09iamVjdF0gQ0RBVEFTZWN0aW9uIGNyZWF0ZUNEQVRB
U2VjdGlvbihET01TdHJpbmcgZGF0YSk7CiAgICAgW05ld09iamVjdF0gQ29tbWVudCBjcmVhdGVD
b21tZW50KERPTVN0cmluZyBkYXRhKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihET01T
dHJpbmcgdGFyZ2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgW05ld09iamVjdF0gUHJvY2Vzc2lu
Z0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihET01TdHJpbmcgdGFyZ2V0
LCBET01TdHJpbmcgZGF0YSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
LCBOZXdPYmplY3RdIE5vZGUgaW1wb3J0Tm9kZShOb2RlIG5vZGUsIG9wdGlvbmFsIGJvb2xlYW4g
ZGVlcCA9IGZhbHNlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2Rl
IGFkb3B0Tm9kZShOb2RlIG5vZGUpOworICAgIFtDRVJlYWN0aW9ucywgTmV3T2JqZWN0XSBOb2Rl
IGltcG9ydE5vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGRlZXAgPSBmYWxzZSk7Cisg
ICAgW0NFUmVhY3Rpb25zXSBOb2RlIGFkb3B0Tm9kZShOb2RlIG5vZGUpOwogCi0gICAgW05ld09i
amVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgY3JlYXRlQXR0cmlidXRlKERPTVN0cmluZyBs
b2NhbE5hbWUpOwotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIGNyZWF0
ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSk7CisgICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRyaWJ1dGUoRE9NU3RyaW5nIGxv
Y2FsTmFtZSk7CisgICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhET01TdHJp
bmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIEV2ZW50IGNyZWF0ZUV2ZW50KERPTVN0cmluZyB0eXBl
KTsKKyAgICBbTmV3T2JqZWN0XSBFdmVudCBjcmVhdGVFdmVudChET01TdHJpbmcgdHlwZSk7CiAK
ICAgICBbTmV3T2JqZWN0XSBSYW5nZSBjcmVhdGVSYW5nZSgpOwogCkBAIC0xMDYsMTEgKzEwNiwx
MSBAQCB0eXBlZGVmICgKICAgICAvLyBGSVhNRTogVGhlIEhUTUwgc3BlYyBzYXlzIHRoaXMgc2hv
dWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIuIFdlIHNob3VsZCBlbnN1cmUK
ICAgICAvLyB0aGF0IHRoZSBjYWxsZXIgZG9jdW1lbnQgbWF0Y2hlcyB0aG9zZSBzZW1hbnRpY3Mu
IEl0IGlzIHBvc3NpYmxlIHdlIHNob3VsZCByZXBsYWNlIGl0IHdpdGgKICAgICAvLyB0aGUgZXhp
c3RpbmcgJ2luY3VtYmVudCBkb2N1bWVudCcgY29uY2VwdC4KLSAgICBbQ0VSZWFjdGlvbnMsIENh
bGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIEltcGxlbWVudGVkQXM9b3BlbkZvckJpbmRpbmdz
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01TdHJpbmcgdHlw
ZSA9ICJ0ZXh0L2h0bWwiLCBvcHRpb25hbCBET01TdHJpbmcgcmVwbGFjZSA9ICIiKTsKLSAgICBb
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JC
aW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVdpbmRvdyBvcGVuKFVTVlN0cmluZyB1cmws
IERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMpOwotICAgIFtDRVJlYWN0aW9ucywg
SW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
bG9zZSgpOwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudCwg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd3JpdGUoRE9NU3RyaW5nLi4uIHRleHQpOwotICAgIFtD
RVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgd3JpdGVsbihET01TdHJpbmcuLi4gdGV4dCk7CisgICAgW0NFUmVhY3Rpb25zLCBD
YWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5n
c10gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ0ZXh0L2h0bWwiLCBv
cHRpb25hbCBET01TdHJpbmcgcmVwbGFjZSA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2lu
ZG93JkZpcnN0V2luZG93LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5nc10gRE9NV2luZG93
IG9wZW4oVVNWU3RyaW5nIHVybCwgRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyBmZWF0dXJlcyk7
CisgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb3NlRm9yQmluZGluZ3NdIHZvaWQg
Y2xvc2UoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnRd
IHZvaWQgd3JpdGUoRE9NU3RyaW5nLi4uIHRleHQpOworICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdp
dGg9UmVzcG9uc2libGVEb2N1bWVudF0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsK
IAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdp
bmRvdz8gZGVmYXVsdFZpZXc7CkBAIC0xMzgsOSArMTM4LDkgQEAgdHlwZWRlZiAoCiAgICAgRE9N
U2VsZWN0aW9uPyBnZXRTZWxlY3Rpb24oKTsKIAogICAgIC8vIFhQYXRoIGV4dGVuc2lvbnMgKGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1YUGF0aC94cGF0aC5odG1sI1hQYXRoRXZh
bHVhdG9yKS4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVF
eHByZXNzaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOyAvLyBGSVhNRTogVXNpbmcgInVuZGVm
aW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCisgICAgWFBhdGhFeHBy
ZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAi
dW5kZWZpbmVkIiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7IC8vIEZJWE1F
OiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4K
ICAgICBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihOb2RlPyBub2RlUmVzb2x2ZXIp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwg
RE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgTm9kZT8gY29udGV4
dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOyAvLyBG
SVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jv
bmcuCisgICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Np
b24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQ
YXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAw
LCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOyAvLyBGSVhNRTogVXNpbmcgInVuZGVm
aW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCiAKICAgICAvLyBFeHRl
bnNpb25zIGZyb20gRnVsbFNjcmVlbiBBUEkgKGh0dHBzOi8vZnVsbHNjcmVlbi5zcGVjLndoYXR3
Zy5vcmcvI2FwaSkuCiAgICAgLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBiZSB1bnByZWZpeGVk
LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBA
CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRBdHRyaWJ1dGVOYW1lcygpOwogICAgIFtET01K
SVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VV
UkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJp
bmcgdmFsdWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lLCBET01TdHJpbmcgdmFsdWUpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBzZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7CisgICAgW0NFUmVh
Y3Rpb25zXSB2b2lkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbQ0VSZWFjdGlvbnNd
IHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAgICBbQ0VS
ZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlKERPTVN0cmlu
ZyBxdWFsaWZpZWROYW1lKTsKQEAgLTQ5LDIzICs0OSwyMyBAQAogCiAgICAgW0RPTUpJVD1SZWFk
RE9NXSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAg
ICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0
cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0
dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRo
cm93RXhjZXB0aW9uXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciBhdHRyKTsKLSAgICBb
Q0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUo
QXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0
ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRy
IGF0dHIpOworICAgIFtDRVJlYWN0aW9uc10gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKEF0dHIg
YXR0cik7CiAKLSAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET00sIE1heVRocm93RXhjZXB0
aW9uXSBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhTaGFkb3dSb290SW5pdCBpbml0KTsKKyAgICBb
RW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01dIFNoYWRvd1Jvb3QgYXR0YWNoU2hhZG93KFNoYWRv
d1Jvb3RJbml0IGluaXQpOwogICAgIFtFbmFibGVkQXRSdW50aW1lPVNoYWRvd0RPTSwgSW1wbGVt
ZW50ZWRBcz1zaGFkb3dSb290Rm9yQmluZGluZ3MsIENhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFk
b25seSBhdHRyaWJ1dGUgU2hhZG93Um9vdD8gc2hhZG93Um9vdDsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gbWF0Y2hlcyhET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAg
ICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB3ZWJr
aXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7IC8vIEhpc3RvcmljYWwgYWxp
YXMgb2YgLm1hdGNoZXMuCisgICAgRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcgc2VsZWN0b3Jz
KTsKKyAgICBib29sZWFuIG1hdGNoZXMoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW0ltcGxl
bWVudGVkQXM9bWF0Y2hlc10gYm9vbGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5n
IHNlbGVjdG9ycyk7IC8vIEhpc3RvcmljYWwgYWxpYXMgb2YgLm1hdGNoZXMuCiAKICAgICBbRE9N
SklUPVJlYWRET01dIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmlu
ZyBxdWFsaWZpZWROYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFt
ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICBI
VE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKERPTVN0cmluZyBuYW1lKTsKIAot
ICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVsZW1lbnQ/IGluc2VydEFkamFj
ZW50RWxlbWVudChET01TdHJpbmcgd2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3Rvcmlj
YWwuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydEFkamFjZW50VGV4dChET01T
dHJpbmcgd2hlcmUsIERPTVN0cmluZyBkYXRhKTsgLy8gSGlzdG9yaWNhbC4KKyAgICBbQ0VSZWFj
dGlvbnNdIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hlcmUsIEVs
ZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCisgICAgdm9pZCBpbnNlcnRBZGphY2VudFRl
eHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgZGF0YSk7IC8vIEhpc3RvcmljYWwuCiAKICAg
ICAvLyBDU1NPTS12aWV3IGV4dGVuc2lvbnMgKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Nv
bS12aWV3LyNleHRlbnNpb24tdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlKS4KICAgICBET01SZWN0
TGlzdCBnZXRDbGllbnRSZWN0cygpOwpAQCAtOTAsNyArOTAsNyBAQAogICAgIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10aGUtZWxlbWVudC1pbnRl
cmZhY2UKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyBpbm5lckhUTUw7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJIVE1MOwotICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKERPTVN0cmlu
ZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBpbnNl
cnRBZGphY2VudEhUTUwoRE9NU3RyaW5nIHBvc2l0aW9uLCBET01TdHJpbmcgdGV4dCk7CiAKICAg
ICAvLyBFeHRlbnNpb25zIGZyb20gRnVsbCBTY3JlZW4gQVBJIChodHRwczovL2Z1bGxzY3JlZW4u
c3BlYy53aGF0d2cub3JnLyNhcGkpLgogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIHVucHJl
Zml4ZWQgdmVyc2lvbnM/CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKICAg
ICBbSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHZvaWQgYWRkRXZl
bnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lcj8g
Y2FsbGJhY2ssIG9wdGlvbmFsIChBZGRFdmVudExpc3RlbmVyT3B0aW9ucyBvciBib29sZWFuKSBv
cHRpb25zID0gZmFsc2UpOwogICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJG
b3JCaW5kaW5nc10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIERPTVN0
cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBjYWxsYmFjaywgb3B0aW9uYWwgKEV2ZW50TGlzdGVu
ZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7Ci0gICAgW0ltcGxlbWVudGVk
QXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRjaEV2
ZW50Rm9yQmluZGluZ3NdIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7CiB9Owog
CiBkaWN0aW9uYXJ5IEV2ZW50TGlzdGVuZXJPcHRpb25zIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Pci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb25Pci5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uT3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw5IEBAIGlubGluZSBFeGNlcHRp
b25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXgKICAgICByZXR1cm4geyB9OwogfQogCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0V4Y2VwdGlvbk9yIDogcHVibGljIHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxUPiwgRXhjZXB0
aW9uT3I+Ojp2YWx1ZT4geyB9OworCiB9CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAog
XSBpbnRlcmZhY2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2Fn
ZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdp
dGg9U2NyaXB0U3RhdGVdIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNl
cXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZv
aWQgY2xvc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmlk
bAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgTGVnYWN5V2luZG93
QWxpYXM9V2ViS2l0TXV0YXRpb25PYnNlcnZlciwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgog
XSBpbnRlcmZhY2UgTXV0YXRpb25PYnNlcnZlciB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIG9ic2VydmUoTm9kZSB0YXJnZXQsIG9wdGlvbmFsIE11dGF0aW9uT2JzZXJ2ZXJJbml0IG9w
dGlvbnMpOworICAgIHZvaWQgb2JzZXJ2ZShOb2RlIHRhcmdldCwgb3B0aW9uYWwgTXV0YXRpb25P
YnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAgICAgc2VxdWVu
Y2U8TXV0YXRpb25SZWNvcmQ+IHRha2VSZWNvcmRzKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkTm9kZU1hcC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAgICAg
Z2V0dGVyIEF0dHI/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgZ2V0dGVyIEF0dHI/
IGdldE5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgQXR0cj8gZ2V0TmFt
ZWRJdGVtTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwot
ICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldE5hbWVkSXRlbShB
dHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9c2V0TmFtZWRJdGVtXSBBdHRyPyBzZXROYW1lZEl0ZW1OUyhBdHRyIGF0dHIpOwotICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlTmFtZWRJdGVtKERP
TVN0cmluZyBxdWFsaWZpZWROYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgbG9jYWxOYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldE5hbWVkSXRlbShB
dHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1zZXROYW1lZEl0ZW1d
IEF0dHI/IHNldE5hbWVkSXRlbU5TKEF0dHIgYXR0cik7CisgICAgW0NFUmVhY3Rpb25zXSBBdHRy
IHJlbW92ZU5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAgW0NFUmVhY3Rp
b25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgbG9jYWxOYW1lKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDcgKzYwLDcgQEAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJpbmc/IHRleHRD
b250ZW50OwogICAgIFtDRVJlYWN0aW9uc10gdm9pZCBub3JtYWxpemUoKTsKIAotICAgIFtDRVJl
YWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNl
cHRpb24sIE5ld09iamVjdF0gTm9kZSBjbG9uZU5vZGUob3B0aW9uYWwgYm9vbGVhbiBkZWVwID0g
ZmFsc2UpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5k
aW5ncywgTmV3T2JqZWN0XSBOb2RlIGNsb25lTm9kZShvcHRpb25hbCBib29sZWFuIGRlZXAgPSBm
YWxzZSk7CiAgICAgYm9vbGVhbiBpc0VxdWFsTm9kZShOb2RlPyBvdGhlcik7CiAgICAgYm9vbGVh
biBpc1NhbWVOb2RlKE5vZGU/IG90aGVyKTsgLy8gSGlzdG9yaWNhbCBhbGlhcyBvZiA9PT0uCiAK
QEAgLTc3LDEwICs3NywxMCBAQAogICAgIERPTVN0cmluZz8gbG9va3VwTmFtZXNwYWNlVVJJKERP
TVN0cmluZz8gcHJlZml4KTsKICAgICBib29sZWFuIGlzRGVmYXVsdE5hbWVzcGFjZShET01TdHJp
bmc/IG5hbWVzcGFjZVVSSSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSwgTm9kZT8gY2hpbGQp
OwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgYXBwZW5kQ2hpbGQo
W1JldHVyblZhbHVlXSBOb2RlIG5vZGUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIE5vZGUgcmVwbGFjZUNoaWxkKE5vZGUgbm9kZSwgW1JldHVyblZhbHVlXSBOb2RlIGNo
aWxkKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2RlIHJlbW92ZUNo
aWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIGlu
c2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSwgTm9kZT8gY2hpbGQpOworICAgIFtD
RVJlYWN0aW9uc10gTm9kZSBhcHBlbmRDaGlsZChbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSk7Cisg
ICAgW0NFUmVhY3Rpb25zXSBOb2RlIHJlcGxhY2VDaGlsZChOb2RlIG5vZGUsIFtSZXR1cm5WYWx1
ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIHJlbW92ZUNoaWxkKFtSZXR1
cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CiB9OwogCiBkaWN0aW9uYXJ5IEdldFJvb3ROb2RlT3B0aW9u
cyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDggKzI5LDggQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3
aGF0VG9TaG93OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlRmlsdGVyPyBmaWx0ZXI7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHROb2RlKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05vZGUoKTsKKyAgICBOb2RlPyBuZXh0Tm9kZSgpOwor
ICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOwogCiAgICAgdm9pZCBkZXRhY2goKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkg
QEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gbGFzdEVsZW1lbnRDaGlsZDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAot
ICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcHJl
cGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVu
c2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZvaWQgcHJlcGVu
ZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2Nv
cGFibGVdIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBxdWVyeVNlbGVjdG9yKERPTVN0cmluZyBzZWxl
Y3RvcnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBOb2RlTGlzdCBxdWVy
eVNlbGVjdG9yQWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIEVsZW1lbnQ/IHF1ZXJ5U2Vs
ZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW05ld09iamVjdF0gTm9kZUxpc3QgcXVl
cnlTZWxlY3RvckFsbChET01TdHJpbmcgc2VsZWN0b3JzKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDM1ICszMSwzNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGNvbGxhcHNlZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSBjb21tb25B
bmNlc3RvckNvbnRhaW5lcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFy
dChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0RW5kKE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFydEJlZm9yZShOb2RlIG5vZGUpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFydEFmdGVyKE5vZGUgbm9kZSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVuZEJlZm9yZShOb2RlIG5vZGUpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRFbmRBZnRlcihOb2RlIG5vZGUpOworICAgIHZvaWQgc2V0
U3RhcnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgdm9pZCBzZXRFbmQo
Tm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgdm9pZCBzZXRTdGFydEJlZm9y
ZShOb2RlIG5vZGUpOworICAgIHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlIG5vZGUpOworICAgIHZv
aWQgc2V0RW5kQmVmb3JlKE5vZGUgbm9kZSk7CisgICAgdm9pZCBzZXRFbmRBZnRlcihOb2RlIG5v
ZGUpOwogICAgIHZvaWQgY29sbGFwc2Uob3B0aW9uYWwgYm9vbGVhbiB0b1N0YXJ0ID0gZmFsc2Up
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZWxlY3ROb2RlKE5vZGUgbm9kZSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbGVjdE5vZGVDb250ZW50cyhOb2RlIG5vZGUp
OworICAgIHZvaWQgc2VsZWN0Tm9kZShOb2RlIG5vZGUpOworICAgIHZvaWQgc2VsZWN0Tm9kZUNv
bnRlbnRzKE5vZGUgbm9kZSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFSVF9UT19T
VEFSVCA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBUlRfVE9fRU5EID0gMTsKICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fRU5EID0gMjsKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBFTkRfVE9fU1RBUlQgPSAzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVt
ZW50ZWRBcz1jb21wYXJlQm91bmRhcnlQb2ludHNGb3JCaW5kaW5nc10gc2hvcnQgY29tcGFyZUJv
dW5kYXJ5UG9pbnRzKHVuc2lnbmVkIHNob3J0IGhvdywgUmFuZ2Ugc291cmNlUmFuZ2UpOworICAg
IFtJbXBsZW1lbnRlZEFzPWNvbXBhcmVCb3VuZGFyeVBvaW50c0ZvckJpbmRpbmdzXSBzaG9ydCBj
b21wYXJlQm91bmRhcnlQb2ludHModW5zaWduZWQgc2hvcnQgaG93LCBSYW5nZSBzb3VyY2VSYW5n
ZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZUNv
bnRlbnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0
XSBEb2N1bWVudEZyYWdtZW50IGV4dHJhY3RDb250ZW50cygpOwotICAgIFtDRVJlYWN0aW9ucywg
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRl
bnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnRO
b2RlKE5vZGUgbm9kZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzdXJyb3VuZENvbnRlbnRzKE5vZGUgbmV3UGFyZW50KTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZv
aWQgZGVsZXRlQ29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVjdF0gRG9jdW1l
bnRGcmFnbWVudCBleHRyYWN0Q29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVj
dF0gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7CisgICAgW0NFUmVhY3Rpb25zXSB2
b2lkIGluc2VydE5vZGUoTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgc3Vycm91
bmRDb250ZW50cyhOb2RlIG5ld1BhcmVudCk7CiAKICAgICBbTmV3T2JqZWN0XSBSYW5nZSBjbG9u
ZVJhbmdlKCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
Ym9vbGVhbiBpc1BvaW50SW5SYW5nZShOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNvbXBhcmVQb2ludChOb2RlIG5vZGUsIHVu
c2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBib29sZWFuIGlzUG9pbnRJblJhbmdlKE5vZGUgbm9k
ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHNob3J0IGNvbXBhcmVQb2ludChOb2RlIG5v
ZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9v
bGVhbiBpbnRlcnNlY3RzTm9kZShOb2RlIG5vZGUpOworICAgIGJvb2xlYW4gaW50ZXJzZWN0c05v
ZGUoTm9kZSBub2RlKTsKIAogICAgIHN0cmluZ2lmaWVyOwogCkBAIC02OCwxMyArNjgsMTMgQEAK
ICAgICBbTmV3T2JqZWN0XSBET01SZWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAg
Ly8gRXh0ZW5zaW9ucyBmcm9tIERPTVBhcnNpbmcgYW5kIFNlcmlhbGl6YXRpb24gc3BlY2lmaWNh
dGlvbiAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNpb25zLXRvLXRo
ZS1yYW5nZS1pbnRlcmZhY2UpLgotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24s
IE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoRE9N
U3RyaW5nIGZyYWdtZW50KTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVjdF0gRG9jdW1lbnRG
cmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoRE9NU3RyaW5nIGZyYWdtZW50KTsKIAog
ICAgIC8vIE5vbiBzdGFuZGFyZC4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZXhwYW5k
KG9wdGlvbmFsIERPTVN0cmluZyB1bml0ID0gIiIpOworICAgIHZvaWQgZXhwYW5kKG9wdGlvbmFs
IERPTVN0cmluZyB1bml0ID0gIiIpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsaWtlbHkg
ZHJvcCB0aGlzIHNpbmNlIG5vIG90aGVyIGJyb3dzZXIgc3VwcG9ydHMgaXQuCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJlTm9kZShOb2RlIG5vZGUpOworICAgIHNob3J0IGNv
bXBhcmVOb2RlKE5vZGUgbm9kZSk7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9ERV9CRUZP
UkUgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQUZURVIgPSAxOwogICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQkVGT1JFX0FORF9BRlRFUiA9IDI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICAgICBDb25zdHJ1Y3RvckNhbGxX
aXRoPURvY3VtZW50LAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBUZXh0IDog
Q2hhcmFjdGVyRGF0YSB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBUZXh0IHNwbGl0VGV4dCh1
bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgVGV4dCBzcGxpdFRleHQodW5zaWduZWQgbG9uZyBv
ZmZzZXQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2hvbGVUZXh0OwogfTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw1ICs0MSw1IEBAIGRpY3Rpb25hcnkgVGV4dERlY29kZU9wdGlvbnMgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gZmF0YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaWdub3JlQk9NOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVVNWU3RyaW5nIGRlY29kZShvcHRpb25hbCBCdWZmZXJT
b3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0RGVjb2RlT3B0aW9ucyBvcHRpb25zKTsKKyAgICBV
U1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIEJ1ZmZlclNvdXJjZT8gaW5wdXQsIG9wdGlvbmFsIFRl
eHREZWNvZGVPcHRpb25zIG9wdGlvbnMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlV2Fsa2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtl
ci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2Vy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIE5vZGVGaWx0ZXI/IGZpbHRlcjsKICAgICBhdHRyaWJ1dGUgTm9kZSBjdXJyZW50Tm9k
ZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcGFyZW50Tm9kZSgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gZmlyc3RDaGlsZCgpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gTm9kZT8gbGFzdENoaWxkKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBw
cmV2aW91c1NpYmxpbmcoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHRTaWJs
aW5nKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05vZGUoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHROb2RlKCk7CisgICAgTm9kZT8gcGFyZW50
Tm9kZSgpOworICAgIE5vZGU/IGZpcnN0Q2hpbGQoKTsKKyAgICBOb2RlPyBsYXN0Q2hpbGQoKTsK
KyAgICBOb2RlPyBwcmV2aW91c1NpYmxpbmcoKTsKKyAgICBOb2RlPyBuZXh0U2libGluZygpOwor
ICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOworICAgIE5vZGU/IG5leHROb2RlKCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC00MywxMCArNDMsMTAgQEAKIAogICAgIC8vIEZJWE1FOiBJbiBhbGwgZm91ciBtZXRob2RzIGZv
dW5kIGJlbG93LCB0aGUgYmxvYiBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAg
ICAvLyBhc3luYyByZWFkIG1ldGhvZHMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVh
ZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iPyBibG9iKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcmVhZEFzVGV4dChCbG9iPyBibG9iLCBvcHRpb25hbCBET01TdHJpbmcgZW5jb2Rpbmcp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZWFkQXNEYXRhVVJMKEJsb2I/IGJsb2Ip
OworICAgIHZvaWQgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7CisgICAgdm9pZCByZWFk
QXNCaW5hcnlTdHJpbmcoQmxvYj8gYmxvYik7CisgICAgdm9pZCByZWFkQXNUZXh0KEJsb2I/IGJs
b2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyk7CisgICAgdm9pZCByZWFkQXNEYXRhVVJM
KEJsb2I/IGJsb2IpOwogCiAgICAgdm9pZCBhYm9ydCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDggKzMzLDggQEAKICAgICBFeHBvc2VkPVdvcmtlciwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgRmlsZVJlYWRlclN5bmMgewotICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXJyYXlCdWZmZXIgcmVhZEFz
QXJyYXlCdWZmZXIoQmxvYiBibG9iKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZWFkQXNCaW5hcnlTdHJpbmcoQmxv
YiBibG9iKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyByZWFkQXNUZXh0KEJsb2IgYmxvYiwgb3B0aW9uYWwgRE9NU3Ry
aW5nIGVuY29kaW5nID0gIiIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlYWRBc0RhdGFVUkwoQmxvYiBibG9iKTsK
KyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gQXJyYXlCdWZmZXIgcmVhZEFz
QXJyYXlCdWZmZXIoQmxvYiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gRE9NU3RyaW5nIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iIGJsb2IpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcgcmVhZEFzVGV4dChCbG9iIGJs
b2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJlYWRBc0RhdGFVUkwoQmxvYiBibG9iKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDExICszMCwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5nPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwogICAgIGJvb2xlYW4gY29udGFpbnMoRE9NU3RyaW5nIHRva2VuKTsKLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZChET01TdHJpbmcuLi4gdG9rZW5zKTsK
LSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZShET01TdHJp
bmcuLi4gdG9rZW5zKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBib29s
ZWFuIHRvZ2dsZShET01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2UpOwotICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVwbGFjZShET01TdHJpbmcg
dG9rZW4sIERPTVN0cmluZyBuZXdUb2tlbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29s
ZWFuIHN1cHBvcnRzKERPTVN0cmluZyB0b2tlbik7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGFk
ZChET01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlKERP
TVN0cmluZy4uLiB0b2tlbnMpOworICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiB0b2dnbGUoRE9N
U3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKKyAgICBbQ0VSZWFjdGlvbnNd
IHZvaWQgcmVwbGFjZShET01TdHJpbmcgdG9rZW4sIERPTVN0cmluZyBuZXdUb2tlbik7CisgICAg
Ym9vbGVhbiBzdXBwb3J0cyhET01TdHJpbmcgdG9rZW4pOwogICAgIFtDRVJlYWN0aW9uc10gc3Ry
aW5naWZpZXIgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKICAgICBpdGVyYWJsZTxET01TdHJp
bmc+OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRs
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIHR5cGVkZWYgKAogICAg
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGhlaWdodDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIFJlbmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoRE9NU3RyaW5nIGNvbnRleHRJZCwgYW55
Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBSZW5kZXJpbmdDb250
ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFueS4uLiBhcmd1bWVudHMpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9EYXRhVVJMKG9wdGlvbmFsIERP
TVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHRvQmxvYihCbG9iQ2Fs
bGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVh
bGl0eSk7CisgICAgRE9NU3RyaW5nIHRvRGF0YVVSTChvcHRpb25hbCBET01TdHJpbmcgdHlwZSwg
b3B0aW9uYWwgYW55IHF1YWxpdHkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSB2b2lkIHRvQmxvYihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmlu
ZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7CiAKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlv
biwgTmV3T2JqZWN0XSBNZWRpYVN0cmVhbSBjYXB0dXJlU3RyZWFtKG9wdGlvbmFsIGRvdWJsZSBm
cmFtZVJlcXVlc3RSYXRlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIE1lZGlhU3RyZWFtIGNhcHR1cmVT
dHJlYW0ob3B0aW9uYWwgZG91YmxlIGZyYW1lUmVxdWVzdFJhdGUpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNSArMjgsNSBAQAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7
CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgd2lkdGg7CiAKLSAgICBbQ2hlY2tT
ZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVu
dCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQo
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVs
ZW1lbnQgOiBIVE1MRWxlbWVudAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CiAK
LSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBn
ZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0
U1ZHRG9jdW1lbnQoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHdpZHRoOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGhlaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksNSAr
MzksNSBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVuCiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CiAKLSAgICBbQ2hlY2tT
ZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVu
dCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQo
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAKICAgICBhdHRyaWJ1dGUgRGF0ZT8g
dmFsdWVBc0RhdGU7CiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgdmFsdWVBc051
bWJlcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdGVwVXAob3B0aW9uYWwgbG9u
ZyBuID0gMSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0ZXBEb3duKG9wdGlvbmFs
IGxvbmcgbiA9IDEpOworICAgIHZvaWQgc3RlcFVwKG9wdGlvbmFsIGxvbmcgbiA9IDEpOworICAg
IHZvaWQgc3RlcERvd24ob3B0aW9uYWwgbG9uZyBuID0gMSk7CiAKICAgICBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyB3aWR0aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3aWxsVmFs
aWRhdGU7CkBAIC04MSwxMCArODEsMTAgQEAKICAgICBbSW1wbGVtZW50ZWRBcz1zZWxlY3Rpb25F
bmRGb3JCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgc2VsZWN0aW9uRW5kOwogICAgIFtJbXBsZW1l
bnRlZEFzPXNlbGVjdGlvbkRpcmVjdGlvbkZvckJpbmRpbmdzXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHNlbGVjdGlvbkRpcmVjdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRS
YW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQgbG9uZyBz
dGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rpb25Nb2Rl
KTsKKyAgICB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQpOworICAgIHZv
aWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQgbG9uZyBzdGFy
dCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rpb25Nb2RlKTsK
IAotICAgIFtJbXBsZW1lbnRlZEFzPXNldFNlbGVjdGlvblJhbmdlRm9yQmluZGluZ3MsIE1heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGxvbmcgc3RhcnQsIGxvbmcgZW5k
LCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zZXRT
ZWxlY3Rpb25SYW5nZUZvckJpbmRpbmdzXSB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGxvbmcgc3Rh
cnQsIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKIAogICAgIFtSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHVzZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHR5cGVkZWYg
KAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJsZWRBdFJ1bnRpbWU9RW5j
cnlwdGVkTWVkaWFBUEldIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253YWl0aW5nZm9ya2V5Owog
ICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJsZWRBdFJ1bnRpbWU9RW5jcnlw
dGVkTWVkaWFBUEldIFByb21pc2U8dm9pZD4gc2V0TWVkaWFLZXlzKE1lZGlhS2V5cz8gbWVkaWFL
ZXlzKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5VGhyb3dFeGNlcHRpb25d
IFRleHRUcmFjayBhZGRUZXh0VHJhY2soRE9NU3RyaW5nIGtpbmQsIG9wdGlvbmFsIERPTVN0cmlu
ZyBsYWJlbCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgbGFuZ3VhZ2UgPSAiIik7CisgICAgW0Nv
bmRpdGlvbmFsPVZJREVPX1RSQUNLXSBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKERPTVN0cmluZyBr
aW5kLCBvcHRpb25hbCBET01TdHJpbmcgbGFiZWwgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGxh
bmd1YWdlID0gIiIpOwogICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0
cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOwogICAgIFtDb25kaXRpb25hbD1WSURF
T19UUkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIHJlYWRvbmx5IGF0dHJpYnV0ZSBWaWRlb1RyYWNr
TGlzdCB2aWRlb1RyYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNSArNDcsNSBAQAogCiAgICAg
W0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVu
dERvY3VtZW50OwogCi0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiBdIGludGVyZmFjZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gOiBI
VE1MQ29sbGVjdGlvbiB7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7CiAgICAgW0NFUmVhY3Rpb25zXSBzZXR0ZXIgdm9pZCAodW5zaWduZWQgbG9uZyBp
bmRleCwgSFRNTE9wdGlvbkVsZW1lbnQ/IG9wdGlvbik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoKEhUTUxPcHRpb25FbGVtZW50IG9yIEhUTUxPcHRHcm91
cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVudCBvciBsb25nKT8gYmVmb3Jl
ID0gbnVsbCk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQg
b3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9y
IGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlKGxv
bmcgaW5kZXgpOwogCiAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOCArMzcsOCBAQAogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNp
Z25lZCBsb25nIGluZGV4KTsgLy8gRklYTUU6IFRoZSBzcGVjIGhhcyB0aGlzIHJldHVybmluZyBF
bGVtZW50Py4KICAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1l
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZCgoSFRNTE9w
dGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhU
TUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUgb3ZlcmxvYWQKKyAg
ICBbQ0VSZWFjdGlvbnNdIHZvaWQgYWRkKChIVE1MT3B0aW9uRWxlbWVudCBvciBIVE1MT3B0R3Jv
dXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9y
ZSA9IG51bGwpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmUoKTsgLy8gQ2hpbGROb2Rl
IG92ZXJsb2FkCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZShsb25nIGluZGV4KTsKICAg
ICBbQ0VSZWFjdGlvbnNdIHNldHRlciB2b2lkICh1bnNpZ25lZCBsb25nIGluZGV4LCBIVE1MT3B0
aW9uRWxlbWVudD8gb3B0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw2IEBAIGludGVy
ZmFjZSBIVE1MVGFibGVFbGVtZW50IDogSFRNTEVsZW1lbnQKICAgICBIVE1MRWxlbWVudCBjcmVh
dGVDYXB0aW9uKCk7CiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRlbGV0ZUNhcHRpb24oKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSFRNTEVsZW1lbnQgaW5zZXJ0Um93KG9wdGlvbmFsIGxv
bmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CisgICAgSFRNTEVsZW1lbnQgaW5zZXJ0Um93KG9wdGlv
bmFsIGxvbmcgaW5kZXggPSAtMSk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRlbGV0ZVJvdyhs
b25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0Vs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93
RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUm93RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDYgQEAgaW50
ZXJmYWNlIEhUTUxUYWJsZVJvd0VsZW1lbnQgOiBIVE1MRWxlbQogICAgIFtSZWZsZWN0PWNoYXJd
IGF0dHJpYnV0ZSBET01TdHJpbmcgY2g7CiAgICAgW1JlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRl
IERPTVN0cmluZyBjaE9mZjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB2QWxp
Z247Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBIVE1MRWxlbWVudCBpbnNlcnRDZWxsKG9wdGlv
bmFsIGxvbmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBkZWxldGVDZWxsKGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydENl
bGwob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgZGVs
ZXRlQ2VsbChsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDYgQEAKICAgICBbUmVmbGVjdD1jaGFyb2ZmXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGNoT2ZmOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93czsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBsb25nIGluZGV4ID0gLTEp
OwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUm93KGxv
bmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBsb25nIGluZGV4
ID0gLTEpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIGludGVyZmFjZSBIVE1MVGV4
dEFyZWFFbGVtZW50IDogSFRNTEVsZW0KICAgICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3Rpb25FbmQ7
CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Rpb25EaXJlY3Rpb247CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVw
bGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBvcHRpb25h
bCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CisgICAgdm9pZCBzZXRSYW5nZVRleHQoRE9NU3Ry
aW5nIHJlcGxhY2VtZW50KTsKKyAgICB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFj
ZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBvcHRpb25hbCBE
T01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CiAKICAgICB2b2lkIHNldFNlbGVjdGlvblJhbmdlKG9w
dGlvbmFsIGxvbmcgc3RhcnQgPSAwLCBvcHRpb25hbCBsb25nIGVuZCA9IDAsIG9wdGlvbmFsIERP
TVN0cmluZyBkaXJlY3Rpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMiBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbjsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbjsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oKTsK
KyAgICB2b2lkIHdlYmtpdEVudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgd2Via2l0RXhpdEZ1
bGxzY3JlZW4oKTsKIAogICAgIC8vIE1haW50YWluICJGdWxsU2NyZWVuIiBjYXBpdGFsaXphdGlv
biBzY2hlbWUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA4MQotICAgIFtJbXBsZW1lbnRlZEFzPXdl
YmtpdEVudGVyRnVsbHNjcmVlbiwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd2Via2l0RW50ZXJG
dWxsU2NyZWVuKCk7CisgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RW50ZXJGdWxsc2NyZWVuXSB2
b2lkIHdlYmtpdEVudGVyRnVsbFNjcmVlbigpOwogICAgIFtJbXBsZW1lbnRlZEFzPXdlYmtpdEV4
aXRGdWxsc2NyZWVuXSB2b2lkIHdlYmtpdEV4aXRGdWxsU2NyZWVuKCk7CiAKICAgICBbQ29uZGl0
aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBl
bnVtIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlCiAgICAgYXR0cmlidXRlIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgYXR0cmlidXRlIFtFbmZvcmNlUmFuZ2Vd
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlU
aHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9V0VCR0xdIFdlYkdMUmVuZGVyaW5nQ29udGV4dD8g
Z2V0Q29udGV4dChPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgYW55
Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBDb25kaXRpb25hbD1X
RUJHTF0gV2ViR0xSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KE9mZnNjcmVlblJlbmRlcmlu
Z0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBhbnkuLi4gYXJndW1lbnRzKTsKICAgICBJbWFnZUJp
dG1hcCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKICAgICAvLyBQcm9taXNlPEJsb2I+IGNvbnZl
cnRUb0Jsb2Iob3B0aW9uYWwgSW1hZ2VFbmNvZGVPcHRpb25zIG9wdGlvbnMpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDYg
QEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgVGltZVJhbmdl
cyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBsb25n
IGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBkb3VibGUgZW5k
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnQodW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQodW5zaWduZWQg
bG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
RHJhd0ltYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNEcmF3SW1hZ2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAgICAvLyBG
SVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnRzIGJlbG93IHNob3VsZCBi
ZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KIAogICAgIC8vIGRyYXdpbmcgaW1hZ2VzCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBzeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBzdywgdW5yZXN0cmljdGVkIGRvdWJsZSBzaCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVk
IGRvdWJsZSBkaCk7CisgICAgdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2Us
IHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHkpOworICAgIHZv
aWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR3LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIGRoKTsKKyAgICB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJj
ZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRvdWJsZSBzaCwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGwJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJv
a2VTdHlsZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHR5cGVkZWYgKEhU
TUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAgICBhdHRyaWJ1dGUgKERPTVN0cmluZyBv
ciBDYW52YXNHcmFkaWVudCBvciBDYW52YXNQYXR0ZXJuKSBmaWxsU3R5bGU7IC8vIChkZWZhdWx0
IGJsYWNrKQogCiAgICAgLy8gRklYTUU6IEFsbCB0aGUgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBz
aG91bGQgYmUgZG91Ymxlcy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50
IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0
IHkxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlh
bEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5
MSwgZmxvYXQgcjEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybj8gY3Jl
YXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgcmVwZXRpdGlvbik7CisgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlTGlu
ZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOworICAg
IENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwg
ZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOworICAgIENhbnZhc1BhdHRl
cm4/IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtUcmVhdE51bGxBcz1F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNSArMzAsNSBAQAogICAgIC8vIEZJWE1FOiBUaGUgZmxvYXQgcGFyYW1l
dGVycyBiZWxvdyBzaG91bGQgYmUgYSBkb3VibGUuCiAKICAgICAvLyBvcGFxdWUgb2JqZWN0Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZENvbG9yU3RvcChmbG9hdCBvZmZzZXQsIERP
TVN0cmluZyBjb2xvcik7CisgICAgdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQgb2Zmc2V0LCBET01T
dHJpbmcgY29sb3IpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSAr
MzAsOSBAQAogICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91
bGQgYmUgbG9uZ3MuCiAKICAgICAvLyBwaXhlbCBtYW5pcHVsYXRpb24KLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoZmxvYXQgc3csIGZsb2F0IHNoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoSW1hZ2VE
YXRhPyBpbWFnZWRhdGEpOyAvLyBGSVhNRTogaW1hZ2VkYXRhIHNob3VsZCBub3QgYmUgb3B0aW9u
YWwKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoZmxvYXQg
c3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOworICAgIEltYWdlRGF0YSBjcmVhdGVJ
bWFnZURhdGEoZmxvYXQgc3csIGZsb2F0IHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VE
YXRhKEltYWdlRGF0YT8gaW1hZ2VkYXRhKTsgLy8gRklYTUU6IGltYWdlZGF0YSBzaG91bGQgbm90
IGJlIG9wdGlvbmFsCisgICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0YShmbG9hdCBzeCwgZmxvYXQg
c3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRh
IGltYWdlZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJ
bWFnZURhdGEgaW1hZ2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxv
YXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAKICAgICB2b2lkIGxpbmVUbyh1bnJlc3RyaWN0
ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CiAgICAgdm9pZCBxdWFkcmF0aWND
dXJ2ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUgY3B4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNweSwg
dW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOwogICAgIHZvaWQg
YmV6aWVyQ3VydmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXgsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgY3AxeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDJ4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNw
MnksIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5y
ZXN0cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5yZXN0cmljdGVk
IGRvdWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMpOwotICAgIC8vIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7CisgICAgdm9pZCBhcmNUbyh1bnJl
c3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJh
ZGl1cyk7CisgICAgLy8gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUg
cmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7CiAgICAgdm9pZCByZWN0KHVu
cmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHcsIHVucmVzdHJpY3RlZCBkb3VibGUgaCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGFyYyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMsIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnRBbmds
ZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xv
Y2t3aXNlID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBlbGxpcHNlKHVu
cmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWSwgdW5yZXN0cmljdGVk
IGRvdWJsZSByb3RhdGlvbiwgdW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydEFuZ2xlLCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFuIGFudGljbG9ja3dpc2UgPSBm
YWxzZSk7CisgICAgdm9pZCBhcmModW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xl
YW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKKyAgICB2b2lkIGVsbGlwc2UodW5yZXN0cmljdGVk
IGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzWCwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNZLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJv
dGF0aW9uLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKIAog
ICAgIFtFbmFibGVkQXRSdW50aW1lPUluc3BlY3RvckFkZGl0aW9uc10gcmVhZG9ubHkgYXR0cmli
dXRlIGZsb2F0IGN1cnJlbnRYOwogICAgIFtFbmFibGVkQXRSdW50aW1lPUluc3BlY3RvckFkZGl0
aW9uc10gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRZOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw1ICsyOCw1IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQog
XSBpbnRlcmZhY2UgQ2FudmFzUGF0dGVybiB7CiAgICAgLy8gb3BhcXVlIG9iamVjdAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4MkRJ
bml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4
MkRJbml0IHRyYW5zZm9ybSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiAKICAgICAvLyBOb24tc3Rh
bmRhcmQgZnVuY3Rpb25hbGl0eSAoQ2FudmFzSW1hZ2VEYXRhKS4KICAgICByZWFkb25seSBhdHRy
aWJ1dGUgZmxvYXQgd2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpbzsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEltYWdlRGF0YSB3ZWJraXRHZXRJbWFnZURhdGFIRChmbG9hdCBzeCwgZmxvYXQg
c3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CisgICAgSW1hZ2VEYXRhIHdlYmtpdEdldEltYWdlRGF0
YUhEKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoKTsKICAgICB2b2lkIHdl
YmtpdFB1dEltYWdlRGF0YUhEKEltYWdlRGF0YSBpbWFnZWRhdGEsIGZsb2F0IGR4LCBmbG9hdCBk
eSk7CiAgICAgdm9pZCB3ZWJraXRQdXRJbWFnZURhdGFIRChJbWFnZURhdGEgaW1hZ2VkYXRhLCBm
bG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0
eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNiArMzcsNiBAQAogCiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGdldFRyYW5z
Zm9ybSgpOwogICAgIHZvaWQgc2V0VHJhbnNmb3JtKHVucmVzdHJpY3RlZCBmbG9hdCBhLCB1bnJl
c3RyaWN0ZWQgZmxvYXQgYiwgdW5yZXN0cmljdGVkIGZsb2F0IGMsIHVucmVzdHJpY3RlZCBmbG9h
dCBkLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZSwgdW5yZXN0cmljdGVkIGZsb2F0IGYpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4MkRJ
bml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4
MkRJbml0IHRyYW5zZm9ybSk7CiAgICAgdm9pZCByZXNldFRyYW5zZm9ybSgpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNiBAQAogXSBpbnRlcmZhY2UgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHRyYW5zZmVyRnJvbUltYWdlQml0bWFwKElt
YWdlQml0bWFwPyBiaXRtYXApOworICAgIHZvaWQgdHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAoSW1h
Z2VCaXRtYXA/IGJpdG1hcCk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9QYXRoMkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bh
dGgyRC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1BhdGgyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBFeHBvc2Vk
PShXaW5kb3csV29ya2VyKSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVAogXSBpbnRl
cmZhY2UgUGF0aDJEIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWRkUGF0aChQYXRo
MkQgcGF0aCwgb3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBh
ZGRQYXRoKFBhdGgyRCBwYXRoLCBvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNmb3JtKTsK
IH07CiAKIFBhdGgyRCBpbXBsZW1lbnRzIENhbnZhc1BhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1MCwxMCArMzUwLDEwIEBAIHR5cGVk
ZWYgKEltYWdlRGF0YSBvciBIVE1MSW1hZ2VFbGVtZW50IG8KIAogICAgIC8vIFdlYkdMMSBsZWdh
Y3kgZW50cnlwb2ludHM6CiAgICAgdm9pZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZl
clZpZXc/IHBpeGVscyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHRleEltYWdlMkQo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2UpOworICAgIHZvaWQg
dGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/IHNvdXJjZSk7
CiAKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3PyBwaXhlbHMpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/IHNvdXJjZSk7CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/IHNvdXJj
ZSk7CiAKICAgICAvLyBXZWJHTDIgZW50cnlwb2ludHM6CiAgICAgdm9pZCB0ZXhJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIEdMaW50cHRyIHBib09mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0NiwxMCBAQCB0eXBlZGVmIChJbWFnZURhdGEg
b3IgSFRNTEltYWdlRWxlbWVudCBvCiAgICAgLy8gY29uZmljdHMgd2l0aCBvdmVybG9hZHMgaW4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC4KIAogICAgIHZvaWQgdGV4SW1hZ2UyRChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
QXJyYXlCdWZmZXJWaWV3PyBwaXhlbHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0
ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZT8gc291cmNlKTsK
KyAgICB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNl
PyBzb3VyY2UpOwogCiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldz8g
cGl4ZWxzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdGV4U3ViSW1hZ2UyRChHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2UpOworICAgIHZv
aWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291
cmNlPyBzb3VyY2UpOwogCiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxMyArNDMsMTMgQEAgZW51bSBUZXh0VHJhY2tLaW5kIHsgInN1YnRpdGxl
cyIsICJjYXB0aQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0PyBjdWVz
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0PyBhY3RpdmVDdWVzOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZEN1ZShUZXh0VHJhY2tDdWUgY3VlKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSBjdWUp
OworICAgIHZvaWQgYWRkQ3VlKFRleHRUcmFja0N1ZSBjdWUpOworICAgIHZvaWQgcmVtb3ZlQ3Vl
KFRleHRUcmFja0N1ZSBjdWUpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmN1ZWNo
YW5nZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWVFRSZWdpb25MaXN0IHJlZ2lvbnM7CiAg
ICAgLy8gRklYTUU6IHJlZ2lvbiBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxsYWJsZSBpbiBh
ZGRSZWdpb24gYW5kIHJlbW92ZVJlZ2lvbi4KICAgICB2b2lkIGFkZFJlZ2lvbihWVFRSZWdpb24/
IHJlZ2lvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVJlZ2lvbihWVFRS
ZWdpb24/IHJlZ2lvbik7CisgICAgdm9pZCByZW1vdmVSZWdpb24oVlRUUmVnaW9uPyByZWdpb24p
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzcsOCArMzcsOCBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE9CU09MRVRFID0g
NTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHVwZGF0ZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzd2FwQ2FjaGUoKTsKKyAgICB2b2lkIHVwZGF0ZSgpOworICAgIHZvaWQgc3dhcENh
Y2hlKCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmNoZWNraW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1
ICszMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwKIF0gaW50ZXJmYWNlIENyeXB0byB7CiAgICAgW0NvbmRpdGlvbmFsPVNVQlRMRV9DUllQ
VE9dIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdWJ0bGVDcnlwdG8gc3VidGxlOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gQXJyYXlCdWZmZXJWaWV3IGdldFJhbmRvbVZhbHVlcyhbUmV0dXJuVmFsdWVd
IEFycmF5QnVmZmVyVmlldyBhcnJheSk7CisgICAgQXJyYXlCdWZmZXJWaWV3IGdldFJhbmRvbVZh
bHVlcyhbUmV0dXJuVmFsdWVdIEFycmF5QnVmZmVyVmlldyBhcnJheSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiAr
NDEsMTYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyByYW5nZUNvdW50
OwogCiAgICAgdm9pZCBjb2xsYXBzZShOb2RlPyBub2RlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjb2xsYXBzZVRvRW5k
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbGxhcHNlVG9TdGFydCgpOworICAg
IHZvaWQgY29sbGFwc2VUb0VuZCgpOworICAgIHZvaWQgY29sbGFwc2VUb1N0YXJ0KCk7CiAKICAg
ICBbQ0VSZWFjdGlvbnNdIHZvaWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CiAgICAgYm9vbGVhbiBj
b250YWluc05vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGFsbG93UGFydGlhbCA9IGZh
bHNlKTsKICAgICB2b2lkIHNlbGVjdEFsbENoaWxkcmVuKE5vZGUgbm9kZSk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgZXh0ZW5kKE5vZGUgbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvZmZzZXQgPSAwKTsKKyAgICB2b2lkIGV4dGVuZChOb2RlIG5vZGUsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdl
IGdldFJhbmdlQXQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgUmFuZ2UgZ2V0UmFuZ2VBdCh1
bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2b2lkIHJlbW92ZUFsbFJhbmdlcygpOwogICAgIHZv
aWQgYWRkUmFuZ2UoUmFuZ2UgcmFuZ2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NT
T01TdHJpbmc7CiAgICAgbG9uZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2sgY2FsbGJhY2spOyAvLyBGSVhNRTogU2hvdWxkIHJldHVybiBhbiB1bnNp
Z25lZCBsb25nLgogICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9uRnJhbWUobG9uZyBoYW5kbGUpOyAv
LyBGSVhNRTogaGFuZGxlIHNob3VsZCBiZSBhbiB1bnNpZ25lZCBsb25nLgogCi0gICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlJkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3
YXJkRGVjbGFyZUluSGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2Jq
ZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmSW5jdW1iZW50
V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQg
cG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFs
IHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAKICAgICAvLyBPYnNvbGV0ZSBtZW1i
ZXJzLCBzdGlsbCBwYXJ0IG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvI1dpbmRvdy1wYXJ0aWFsKS4KICAgICB2b2lkIGNhcHR1cmVFdmVudHMo
KTsgLy8gTm90IGltcGxlbWVudGVkLiBBbHNvIG5vdCBpbiBtb2Rlcm4gc3RhbmRhcmRzLiBFbXB0
eSBmdW5jdGlvbiBtYXkgaGVscCBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNvbnRlbnQuCkBA
IC0xNzksOCArMTc5LDggQEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgV2Vi
S2l0UG9pbnQgd2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2Uob3B0aW9uYWwgTm9kZT8g
bm9kZSA9IG51bGwsIG9wdGlvbmFsIFdlYktpdFBvaW50PyBwID0gbnVsbCk7CiAKICAgICAvLyBJ
bnRlcm5hbCBvcGVyYXRpb25zLCBub3QgZXhwb3NlZCB0byB0aGUgV2ViLgotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbiwgRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jvb3RJc0Fsd2F5c09wZW5dIE5vZGVM
aXN0IGNvbGxlY3RNYXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJlZShOb2RlIHNjb3BlLCBET01TdHJp
bmcgc2VsZWN0b3JzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEVuYWJsZWRGb3JXb3JsZD1z
aGFkb3dSb290SXNBbHdheXNPcGVuXSBFbGVtZW50PyBtYXRjaGluZ0VsZW1lbnRJbkZsYXRUcmVl
KE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtFbmFibGVkRm9yV29ybGQ9
c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gTm9kZUxpc3QgY29sbGVjdE1hdGNoaW5nRWxlbWVudHNJ
bkZsYXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtFbmFibGVk
Rm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gRWxlbWVudD8gbWF0Y2hpbmdFbGVtZW50
SW5GbGF0VHJlZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKIAogICAgIC8vIGlP
UyBHZXN0dXJlIEFQSSBldmVudCBoYW5kbGVycy4KICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0
aW9uYWw9SU9TX0dFU1RVUkVfRVZFTlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZ2VzdHVy
ZWNoYW5nZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OCArMzQsOCBAQAogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRl
cl0gdm9pZCBmb3J3YXJkKCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyXSB2b2lkIGdvKG9wdGlvbmFsIGxvbmcgZGlzdGFuY2UgPSAwKTsKIAotICAgIFtD
dXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHB1c2hTdGF0ZShhbnkgZGF0YSwgRE9NU3Ry
aW5nIHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOwotICAgIFtDdXN0b20s
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VTdGF0ZShhbnkgZGF0YSwgRE9NU3RyaW5n
IHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOworICAgIFtDdXN0b21dIHZv
aWQgcHVzaFN0YXRlKGFueSBkYXRhLCBET01TdHJpbmcgdGl0bGUsIG9wdGlvbmFsIFVTVlN0cmlu
Zz8gdXJsID0gbnVsbCk7CisgICAgW0N1c3RvbV0gdm9pZCByZXBsYWNlU3RhdGUoYW55IGRhdGEs
IERPTVN0cmluZyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKIH07CiAK
IGVudW0gU2Nyb2xsUmVzdG9yYXRpb24geyAiYXV0byIsICJtYW51YWwiIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKIF0gaW50
ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0
V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRl
IFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRv
dywgTWF5VGhyb3dFeGNlcHRpb24sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgYXNzaWdu
KFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOwogICAg
IFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywg
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwogICAg
IFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgcmVs
b2FkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNTUsOSArNTUsOSBAQCB0eXBlZGVmIGRvdWJsZSBET01IaWdoUmVzVGltZVN0YW1w
OwogICAgIFtFbmFibGVkQXRSdW50aW1lPVJlc291cmNlVGltaW5nXSBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9ucmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsOwogCiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3VzZXItdGltaW5nLwotICAgIFtFbmFibGVkQXRSdW50aW1lPVVzZXJUaW1pbmcs
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIG1hcmsoRE9NU3RyaW5nIG1hcmtOYW1lKTsKKyAgICBb
RW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2b2lkIG1hcmsoRE9NU3RyaW5nIG1hcmtOYW1l
KTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2b2lkIGNsZWFyTWFya3Mob3B0
aW9uYWwgRE9NU3RyaW5nIG1hcmtOYW1lKTsKLSAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGlt
aW5nLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBtZWFzdXJlKERPTVN0cmluZyBtZWFzdXJlTmFt
ZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0YXJ0TWFyaywgb3B0aW9uYWwgRE9NU3RyaW5nIGVuZE1h
cmspOworICAgIFtFbmFibGVkQXRSdW50aW1lPVVzZXJUaW1pbmddIHZvaWQgbWVhc3VyZShET01T
dHJpbmcgbWVhc3VyZU5hbWUsIG9wdGlvbmFsIERPTVN0cmluZyBzdGFydE1hcmssIG9wdGlvbmFs
IERPTVN0cmluZyBlbmRNYXJrKTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2
b2lkIGNsZWFyTWVhc3VyZXMob3B0aW9uYWwgRE9NU3RyaW5nIG1lYXN1cmVOYW1lKTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogICAgIEV4cG9zZWQ9KFdpbmRv
dyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBQ
ZXJmb3JtYW5jZU9ic2VydmVyIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgb2JzZXJ2
ZShQZXJmb3JtYW5jZU9ic2VydmVySW5pdCBvcHRpb25zKTsKKyAgICB2b2lkIG9ic2VydmUoUGVy
Zm9ybWFuY2VPYnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDUgKzI2LDUgQEAKIFsKICAgICBDb25kaXRpb25h
bD1VU0VSX01FU1NBR0VfSEFORExFUlMKIF0gaW50ZXJmYWNlIFVzZXJNZXNzYWdlSGFuZGxlciB7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBtZXNzYWdlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09yV29y
a2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDE1ICs0MCwxNSBAQCB0eXBlZGVmIChDYW52YXNJbWFnZVNvdXJjZSBvciBCbG9iIG9y
IEltCiAKICAgICAvLyBUaW1lcnMKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIFRp
bWVySGFuZGxlciAoYS5rLmEuIChET01TdHJpbmcgb3IgRnVuY3Rpb24pKSByYXRoZXIgdGhhbiBh
IFNjaGVkdWxlZEFjdGlvbi4KLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhj
ZXB0aW9uXSBsb25nIHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9uIGhhbmRsZXIsIG9wdGlvbmFs
IGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gbG9uZyBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiBoYW5kbGVyLCBvcHRpb25h
bCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFyVGlt
ZW91dChvcHRpb25hbCBsb25nIGhhbmRsZSA9IDApOwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB0YWtlIGEgVGltZXJIYW5kbGVyIChhLmsuYS4gKERPTVN0cmluZyBvciBGdW5jdGlvbikpIHJh
dGhlciB0aGFuIGEgU2NoZWR1bGVkQWN0aW9uLgotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwg
TWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgc2V0SW50ZXJ2YWwoU2NoZWR1bGVkQWN0aW9uIGhhbmRs
ZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZV0gbG9uZyBzZXRJbnRlcnZhbChTY2hlZHVsZWRBY3Rpb24gaGFu
ZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55Li4uIGFyZ3VtZW50cyk7CiAgICAg
dm9pZCBjbGVhckludGVydmFsKG9wdGlvbmFsIGxvbmcgaGFuZGxlID0gMCk7CiAKICAgICAvLyBC
YXNlNjQgdXRpbGl0eSBtZXRob2RzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5n
IGF0b2IoRE9NU3RyaW5nIHN0cmluZyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJp
bmcgYnRvYShET01TdHJpbmcgc3RyaW5nKTsKKyAgICBET01TdHJpbmcgYXRvYihET01TdHJpbmcg
c3RyaW5nKTsKKyAgICBET01TdHJpbmcgYnRvYShET01TdHJpbmcgc3RyaW5nKTsKIAogICAgIC8v
IFNlY3VyZSBDb250ZXh0cwogICAgIFtFbmFibGVkQXRSdW50aW1lPUlzU2VjdXJlQ29udGV4dEF0
dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNTZWN1cmVDb250ZXh0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1ICsz
Miw1IEBACiAgICAgZ2V0dGVyIERPTVN0cmluZz8gZ2V0SXRlbShET01TdHJpbmcga2V5KTsKICAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHNldHRlciB2b2lkIHNldEl0ZW0oRE9NU3RyaW5nIGtleSwg
RE9NU3RyaW5nIGRhdGEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZGVsZXRlciB2b2lkIHJl
bW92ZUl0ZW0oRE9NU3RyaW5nIGtleSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNs
ZWFyKCk7CisgICAgdm9pZCBjbGVhcigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmdsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlk
bAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNiBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIG5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJpY3RlZCBmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CisgICAgdm9p
ZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB2b2lkIGNvbnZlcnRUb1Nw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgaW50ZXJmYWNlIFNWR0dyYXBoaWNzRWxlbWVudCA6IFNWR0VsZW1l
bgogICAgIFtJbXBsZW1lbnRlZEFzPWdldFNjcmVlbkNUTUZvckJpbmRpbmdzLCBOZXdPYmplY3Rd
IFNWR01hdHJpeCBnZXRTY3JlZW5DVE0oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBp
biB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaGFzIGJlZW4gZHJvcHBlZCBieSBCbGluay4KLSAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4IGdldFRyYW5zZm9ybVRvRWxl
bWVudChvcHRpb25hbCBTVkdFbGVtZW50PyBlbGVtZW50ID0gbnVsbCk7CisgICAgW05ld09iamVj
dF0gU1ZHTWF0cml4IGdldFRyYW5zZm9ybVRvRWxlbWVudChvcHRpb25hbCBTVkdFbGVtZW50PyBl
bGVtZW50ID0gbnVsbCk7CiB9OwogCiBTVkdHcmFwaGljc0VsZW1lbnQgaW1wbGVtZW50cyBTVkdU
ZXN0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNiBAQCBpbnRlcmZhY2UgU1ZHTGVuZ3RoIHsgCiAgICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7CiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIG5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJpY3RlZCBmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CisgICAgdm9p
ZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB2b2lkIGNvbnZlcnRUb1Nw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwx
MSBAQAogXSBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIGluaXRpYWxp
emUoU1ZHTGVuZ3RoIGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIGdl
dEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdM
ZW5ndGggaW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGggcmVwbGFjZUl0ZW0oU1ZHTGVu
Z3RoIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U1ZHTGVuZ3RoIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5ndGggaXRlbSk7CisgICAgdm9p
ZCBjbGVhcigpOworICAgIFNWR0xlbmd0aCBpbml0aWFsaXplKFNWR0xlbmd0aCBpdGVtKTsKKyAg
ICBTVkdMZW5ndGggZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdMZW5ndGgg
aW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgU1ZHTGVuZ3RoIHJlcGxhY2VJdGVtKFNWR0xlbmd0aCBpdGVtLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBTVkdMZW5ndGggcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5ndGggaXRlbSk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hdHJpeC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTUgQEAKICAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGY7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBtdWx0aXBs
eShTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01h
dHJpeCBpbnZlcnNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggdHJhbnNs
YXRlKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggc2NhbGUodW5yZXN0cmljdGVkIGZsb2F0IHNjYWxl
RmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBzY2FsZU5vblVuaWZv
cm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5yZXN0cmljdGVkIGZsb2F0IHNj
YWxlRmFjdG9yWSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggcm90YXRlKHVu
cmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRy
aXggcm90YXRlRnJvbVZlY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZs
b2F0IHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IGZsaXBYKCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggZmxpcFkoKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFNWR01hdHJpeCBza2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHNrZXdZKHVucmVzdHJpY3RlZCBmbG9hdCBhbmds
ZSk7CisgICAgU1ZHTWF0cml4IG11bHRpcGx5KFNWR01hdHJpeCBzZWNvbmRNYXRyaXgpOworICAg
IFNWR01hdHJpeCBpbnZlcnNlKCk7CisgICAgU1ZHTWF0cml4IHRyYW5zbGF0ZSh1bnJlc3RyaWN0
ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworICAgIFNWR01hdHJpeCBzY2FsZSh1
bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3IpOworICAgIFNWR01hdHJpeCBzY2FsZU5vblVu
aWZvcm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5yZXN0cmljdGVkIGZsb2F0
IHNjYWxlRmFjdG9yWSk7CisgICAgU1ZHTWF0cml4IHJvdGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQg
YW5nbGUpOworICAgIFNWR01hdHJpeCByb3RhdGVGcm9tVmVjdG9yKHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CisgICAgU1ZHTWF0cml4IGZsaXBYKCk7CisgICAg
U1ZHTWF0cml4IGZsaXBZKCk7CisgICAgU1ZHTWF0cml4IHNrZXdYKHVucmVzdHJpY3RlZCBmbG9h
dCBhbmdsZSk7CisgICAgU1ZHTWF0cml4IHNrZXdZKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxMSArMjcsMTEgQEAKIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0IHsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBT
VkdOdW1iZXIgaW5pdGlhbGl6ZShTVkdOdW1iZXIgaXRlbSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBTVkdOdW1iZXIgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFNWR051bWJlciBpbnNlcnRJdGVtQmVmb3JlKFNWR051bWJlciBpdGVtLCB1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBy
ZXBsYWNlSXRlbShTVkdOdW1iZXIgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBhcHBlbmRJdGVtKFNWR051bWJl
ciBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgU1ZHTnVtYmVyIGluaXRpYWxpemUoU1ZH
TnVtYmVyIGl0ZW0pOworICAgIFNWR051bWJlciBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIFNWR051bWJlciBpbnNlcnRJdGVtQmVmb3JlKFNWR051bWJlciBpdGVtLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgcmVwbGFjZUl0ZW0oU1ZHTnVtYmVyIGl0ZW0s
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciByZW1vdmVJdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciBhcHBlbmRJdGVtKFNWR051bWJlciBpdGVtKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDExICsyNywxMSBAQAogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaXN0IHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdQYXRoU2VnIGluaXRpYWxpemUoU1ZHUGF0aFNlZyBuZXdJdGVtKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgaW5zZXJ0SXRlbUJlZm9yZShTVkdQYXRo
U2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU1ZHUGF0aFNlZyByZXBsYWNlSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyByZW1vdmVJdGVt
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNl
ZyBhcHBlbmRJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSk7CisgICAgdm9pZCBjbGVhcigpOworICAg
IFNWR1BhdGhTZWcgaW5pdGlhbGl6ZShTVkdQYXRoU2VnIG5ld0l0ZW0pOworICAgIFNWR1BhdGhT
ZWcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQYXRoU2VnIGluc2VydEl0
ZW1CZWZvcmUoU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBT
VkdQYXRoU2VnIHJlcGxhY2VJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgU1ZHUGF0aFNlZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFNWR1BhdGhTZWcgYXBwZW5kSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0pOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNiBAQAogICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgeDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGZsb2F0IHk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUG9p
bnQgbWF0cml4VHJhbnNmb3JtKFNWR01hdHJpeCBtYXRyaXgpOworICAgIFtOZXdPYmplY3RdIFNW
R1BvaW50IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXggbWF0cml4KTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2
LDExIEBACiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCBpbml0aWFsaXpl
KFNWR1BvaW50IGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgZ2V0SXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50
IGluc2VydEl0ZW1CZWZvcmUoU1ZHUG9pbnQgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCByZXBsYWNlSXRlbShTVkdQb2ludCBpdGVt
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50
IHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdQb2ludCBhcHBlbmRJdGVtKFNWR1BvaW50IGl0ZW0pOworICAgIHZvaWQgY2xlYXIoKTsK
KyAgICBTVkdQb2ludCBpbml0aWFsaXplKFNWR1BvaW50IGl0ZW0pOworICAgIFNWR1BvaW50IGdl
dEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9pbnQgaW5zZXJ0SXRlbUJlZm9y
ZShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQb2ludCByZXBs
YWNlSXRlbShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQb2lu
dCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1BvaW50IGFwcGVuZEl0
ZW0oU1ZHUG9pbnQgaXRlbSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmlu
Z0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTEgQEAKIGludGVyZmFjZSBTVkdT
dHJpbmdMaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJP
Zkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5pdGlhbGl6ZShET01TdHJpbmcgaXRlbSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBpbnNlcnRJdGVtQmVmb3Jl
KERPTVN0cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyByZXBsYWNlSXRlbShET01TdHJpbmcgaXRlbSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVtb3ZlSXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBh
cHBlbmRJdGVtKERPTVN0cmluZyBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgRE9NU3Ry
aW5nIGluaXRpYWxpemUoRE9NU3RyaW5nIGl0ZW0pOworICAgIERPTVN0cmluZyBnZXRJdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBpbnNlcnRJdGVtQmVmb3JlKERPTVN0
cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcgcmVwbGFjZUl0
ZW0oRE9NU3RyaW5nIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBy
ZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBhcHBlbmRJdGVt
KERPTVN0cmluZyBpdGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICsz
NCwxMyBAQCBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50IDogU1ZHR3JhCiAKICAgICBs
b25nIGdldE51bWJlck9mQ2hhcnMoKTsKICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Q29tcHV0
ZWRUZXh0TGVuZ3RoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxv
YXQgZ2V0U3ViU3RyaW5nTGVuZ3RoKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b24sIE5ld09iamVjdF0gU1ZHUG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2Jq
ZWN0XSBTVkdQb2ludCBnZXRFbmRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdSZWN0
IGdldEV4dGVudE9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdldFJvdGF0aW9uT2ZDaGFy
KG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdW5yZXN0cmljdGVkIGZs
b2F0IGdldFN1YlN0cmluZ0xlbmd0aChvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAs
IG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7CisgICAgW05ld09iamVjdF0gU1ZH
UG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNl
dCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IGdldEVuZFBvc2l0aW9uT2ZDaGFyKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgW05ld09iamVjdF0gU1ZHUmVj
dCBnZXRFeHRlbnRPZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAg
ICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Um90YXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvZmZzZXQgPSAwKTsKICAgICBsb25nIGdldENoYXJOdW1BdFBvc2l0aW9uKFNWR1BvaW50
IHBvaW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2VsZWN0U3ViU3RyaW5nKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBs
ZW5ndGggPSAwKTsKKyAgICB2b2lkIHNlbGVjdFN1YlN0cmluZyhvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7CiB9Owog
CiAvLyBGSVhNRTogU1ZHVGV4dENvbnRlbnRFbGVtZW50IGlzIG5vdCBzdXBwb3NlZCB0byBpbXBs
ZW1lbnQgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm0uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDExIEBACiAgICAg
W05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR01hdHJpeCBtYXRyaXg7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZTsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRNYXRyaXgoU1ZHTWF0cml4IG1hdHJpeCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFRyYW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgdHgsIHVu
cmVzdHJpY3RlZCBmbG9hdCB0eSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNj
YWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Um90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBhbmds
ZSwgdW5yZXN0cmljdGVkIGZsb2F0IGN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3kpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTa2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTa2V3WSh1bnJlc3RyaWN0ZWQgZmxv
YXQgYW5nbGUpOworICAgIHZvaWQgc2V0TWF0cml4KFNWR01hdHJpeCBtYXRyaXgpOworICAgIHZv
aWQgc2V0VHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB0eCwgdW5yZXN0cmljdGVkIGZsb2F0
IHR5KTsKKyAgICB2b2lkIHNldFNjYWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHN5KTsKKyAgICB2b2lkIHNldFJvdGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5n
bGUsIHVucmVzdHJpY3RlZCBmbG9hdCBjeCwgdW5yZXN0cmljdGVkIGZsb2F0IGN5KTsKKyAgICB2
b2lkIHNldFNrZXdYKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7CisgICAgdm9pZCBzZXRTa2V3
WSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCArMjcs
MTQgQEAKIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gaW5p
dGlhbGl6ZShTVkdUcmFuc2Zvcm0gaXRlbSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdU
cmFuc2Zvcm0gZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFNWR1RyYW5zZm9ybSBpbnNlcnRJdGVtQmVmb3JlKFNWR1RyYW5zZm9ybSBpdGVtLCB1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9y
bSByZXBsYWNlSXRlbShTVkdUcmFuc2Zvcm0gaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gcmVtb3ZlSXRlbSh1bnNpZ25lZCBs
b25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBhcHBlbmRJ
dGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgU1ZHVHJhbnNm
b3JtIGluaXRpYWxpemUoU1ZHVHJhbnNmb3JtIGl0ZW0pOworICAgIFNWR1RyYW5zZm9ybSBnZXRJ
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5zZm9ybSBpbnNlcnRJdGVtQmVm
b3JlKFNWR1RyYW5zZm9ybSBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdUcmFu
c2Zvcm0gcmVwbGFjZUl0ZW0oU1ZHVHJhbnNmb3JtIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIFNWR1RyYW5zZm9ybSByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IFNWR1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3Jt
RnJvbU1hdHJpeChTVkdNYXRyaXggbWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5l
d09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CisgICAgW05ld09iamVjdF0gU1ZH
VHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4IG1hdHJpeCk7
CisgICAgW05ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw1OCArMzMsNTggQEAgZW51bSBGb250TG9hZFRpbWluZ092ZXJy
aWRlIHsgIkJsb2NrIiwgIgogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgSW50ZXJuYWxTZXR0
aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwor
ICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsK
IAogICAgIC8vIEZvbnRzLCB0ZXh0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFN0
YW5kYXJkRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBm
YW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRTYW5zU2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoRE9NU3Ry
aW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3Jp
cHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShE
T01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3Ry
aW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZvbnRGYWxsYmFj
a1ByZWZlcnNQaWN0b2dyYXBocyhib29sZWFuIHByZWZlclBpY3RvZ3JhcGhzKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9udExvYWRUaW1pbmdPdmVycmlkZShGb250TG9hZFRp
bWluZ092ZXJyaWRlIG92ZXJyaWRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
U2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucyhib29sZWFuIGlnbm9yZSk7CisgICAgdm9p
ZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlw
dCk7CisgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3Ry
aW5nIHNjcmlwdCk7CisgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBm
YW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0Rml4ZWRGb250RmFtaWx5KERP
TVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0Q3Vyc2l2ZUZv
bnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdm9pZCBz
ZXRGYW50YXN5Rm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsK
KyAgICB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KGJvb2xlYW4gcHJlZmVyUGljdG9ncmFwaHMpOworICAgIHZvaWQgc2V0Rm9udExvYWRUaW1pbmdP
dmVycmlkZShGb250TG9hZFRpbWluZ092ZXJyaWRlIG92ZXJyaWRlKTsKKyAgICB2b2lkIHNldFNo
b3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoYm9vbGVhbiBpZ25vcmUpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUZXh0QXV0b3NpemluZ1dp
bmRvd1NpemVPdmVycmlkZShsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CisgICAgdm9pZCBzZXRU
ZXh0QXV0b3NpemluZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNldFRleHRB
dXRvc2l6aW5nV2luZG93U2l6ZU92ZXJyaWRlKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKIAog
ICAgIC8vIE1lZGlhCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldENhblN0YXJ0TWVk
aWEoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIE1heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9NU3RyaW5nIGtp
bmQsIGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzaG91bGREaXNwbGF5VHJhY2tLaW5kKERPTVN0cmluZyB0
cmFja0tpbmQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWZhdWx0VmlkZW9Q
b3N0ZXJVUkwoRE9NU3RyaW5nIHBvc3Rlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNldFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKHVucmVzdHJp
Y3RlZCBkb3VibGUgdGltZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1lZGlh
VHlwZU92ZXJyaWRlKERPTVN0cmluZyBtZWRpYVR5cGVPdmVycmlkZSk7CisgICAgdm9pZCBzZXRD
YW5TdGFydE1lZGlhKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RS
QUNLXSB2b2lkIHNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9NU3RyaW5nIGtpbmQsIGJvb2xl
YW4gZW5hYmxlZCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSBib29sZWFuIHNob3Vs
ZERpc3BsYXlUcmFja0tpbmQoRE9NU3RyaW5nIHRyYWNrS2luZCk7CisgICAgdm9pZCBzZXREZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwoRE9NU3RyaW5nIHBvc3Rlcik7CisgICAgdm9pZCBzZXRUaW1lV2l0
aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyh1bnJlc3RyaWN0ZWQgZG91Ymxl
IHRpbWUpOworICAgIHZvaWQgc2V0TWVkaWFUeXBlT3ZlcnJpZGUoRE9NU3RyaW5nIG1lZGlhVHlw
ZU92ZXJyaWRlKTsKICAgICB2b2lkIHNldEFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrKGJv
b2xlYW4gYXZhaWxhYmxlKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24o
Ym9vbGVhbiBlbmFibGUpOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHZvaWQgc2V0
TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJvb2xlYW4gZW5hYmxlKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGb3JjZVBlbmRpbmdXZWJHTFBvbGljeShi
b29sZWFuIGZvcmNlZCk7CisgICAgdm9pZCBzZXRGb3JjZVBlbmRpbmdXZWJHTFBvbGljeShib29s
ZWFuIGZvcmNlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldFlvdVR1YmVGbGFzaFBsdWdpblJlcGxhY2VtZW50RW5hYmxlZChi
b29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRF
bmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRZb3VUdWJlRmxhc2hQbHVnaW5S
ZXBsYWNlbWVudEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAogICAgIC8vIEVkaXRpbmcsIGZv
cm1zCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihET01T
dHJpbmcgYmVoYXZpb3IpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTaG91bGRD
b252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weShib29sZWFuIGNvbnZlcnRQb3NpdGlvbik7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKGJvb2xl
YW4gcHJlZmVyTWltZVR5cGVGb3JJbWFnZSk7CisgICAgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3Io
RE9NU3RyaW5nIGJlaGF2aW9yKTsKKyAgICB2b2lkIHNldFNob3VsZENvbnZlcnRQb3NpdGlvblN0
eWxlT25Db3B5KGJvb2xlYW4gY29udmVydFBvc2l0aW9uKTsKKyAgICB2b2lkIHNldFByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKGJvb2xlYW4gcHJlZmVyTWltZVR5cGVGb3JJbWFnZSk7CiAKICAgICAv
LyBPdGhlciBzd2l0Y2hlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5KERPTVN0cmluZyBwb2xpY3kp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6
ZVNob3J0aGFuZEJlaGF2aW9yKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEVuYWJsZWQoYm9vbGVhbiBlbmFi
bGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QmFja2dyb3VuZFNob3VsZEV4
dGVuZEJleW9uZFBhZ2UoYm9vbGVhbiBoYXNFeHRlbmRlZEJhY2tncm91bmQpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXMoYm9vbGVh
biBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QWxsb3dVbmNsYW1w
ZWRTY3JvbGxQb3NpdGlvbihib29sZWFuIGFsbG93VW5jbGFtcGVkKTsKLQotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh1bnJlc3RyaWN0ZWQgZG91
YmxlIGludGVydmFsSW5TZWNvbmRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayhib29sZWFuIGFsbG93cyk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3Jl
ZW4oYm9vbGVhbiBhbGxvd3MpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRJbmxp
bmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZShib29sZWFuIHJlcXVp
cmVzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nKEZy
YW1lRmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7CisgICAgdm9pZCBzZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7CisgICAgdm9pZCBzZXRJbWFnZXNFbmFi
bGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3ko
RE9NU3RyaW5nIHBvbGljeSk7CisgICAgdm9pZCBzZXRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNo
b3J0aGFuZEJlaGF2aW9yKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRBdXRvc2Nyb2xs
Rm9yRHJhZ0FuZERyb3BFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZShib29sZWFuIGhhc0V4dGVuZGVkQmFja2dyb3Vu
ZCk7CisgICAgdm9pZCBzZXRTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXMoYm9vbGVhbiBlbmFi
bGVkKTsKKyAgICB2b2lkIHNldEFsbG93VW5jbGFtcGVkU2Nyb2xsUG9zaXRpb24oYm9vbGVhbiBh
bGxvd1VuY2xhbXBlZCk7CisKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKHVucmVz
dHJpY3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOworICAgIHZvaWQgc2V0QWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjayhib29sZWFuIGFsbG93cyk7CisgICAgdm9pZCBzZXRBbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuKGJvb2xlYW4gYWxsb3dzKTsKKyAgICB2b2lk
IHNldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlKGJvb2xl
YW4gcmVxdWlyZXMpOworICAgIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nKEZyYW1lRmxhdHRlbmlu
Z1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7CiAKICAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LgogICAgIHZvaWQgc2V0SW5kZXhlZERCV29ya2Vyc0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsK
QEAgLTkzLDIxICs5MywyMSBAQCBlbnVtIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUgeyAiQmxvY2si
LCAiCiAgICAgdm9pZCBzZXRXZWJHUFVFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdm9p
ZCBzZXRXZWJWUkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeShET01T
dHJpbmcgcG9saWN5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzeXN0ZW1M
YXlvdXREaXJlY3Rpb24oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3lzdGVt
TGF5b3V0RGlyZWN0aW9uKERPTVN0cmluZyBkaXJlY3Rpb24pOworICAgIERPTVN0cmluZyB1c2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KCk7CisgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlRGly
ZWN0aW9uUG9saWN5KERPTVN0cmluZyBwb2xpY3kpOworICAgIERPTVN0cmluZyBzeXN0ZW1MYXlv
dXREaXJlY3Rpb24oKTsKKyAgICB2b2lkIHNldFN5c3RlbUxheW91dERpcmVjdGlvbihET01TdHJp
bmcgZGlyZWN0aW9uKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBkZWZlcnJl
ZENTU1BhcnNlckVuYWJsZWQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgYm9vbGVhbiBkZWZl
cnJlZENTU1BhcnNlckVuYWJsZWQoKTsKKyAgICB2b2lkIHNldERlZmVycmVkQ1NTUGFyc2VyRW5h
YmxlZChib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoYm9vbGVhbiBzaG91bGRN
b2NrKTsKKyAgICB2b2lkIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxp
dHkoYm9vbGVhbiBzaG91bGRNb2NrKTsKIAogICAgIGF0dHJpYnV0ZSBGb3JjZWRBY2Nlc3NpYmls
aXR5VmFsdWUgZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRBY2Nlc3NpYmlsaXR5VmFsdWU7CiAgICAg
YXR0cmlidXRlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3JjZWREaXNwbGF5SXNNb25vY2hy
b21lQWNjZXNzaWJpbGl0eVZhbHVlOwogICAgIGF0dHJpYnV0ZSBGb3JjZWRBY2Nlc3NpYmlsaXR5
VmFsdWUgZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWU7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0
ZWdvcnkoYm9vbGVhbiBzaG91bGQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRD
dXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNl
dFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KGJvb2xlYW4gc2hvdWxkKTsKKyAgICB2
b2lkIHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogfTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw3ICs5Nyw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIGJv
b2xlYW4gaXNQYWludGluZ0ZyZXF1ZW50bHkoRWxlbWVudCBlbGVtZW50KTsKICAgICB2b2lkIGlu
Y3JlbWVudEZyZXF1ZW50UGFpbnRDb3VudGVyKEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50
IGVsZW1lbnQpOworICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50
IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoRE9NU3RyaW5nIHVybCk7CiAgICAg
Ym9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoRE9NU3RyaW5nIHVybCk7CiAgICAgRE9N
U3RyaW5nIGZldGNoUmVzcG9uc2VTb3VyY2UoRmV0Y2hSZXNwb25zZSByZXNwb25zZSk7CkBAIC0x
MjUsOTMgKzEyNSw5MyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBsb25n
IGRlZmVycmVkR3JvdXBSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hlZXQpOwogICAgIGxvbmcgZGVm
ZXJyZWRLZXlmcmFtZXNSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hlZXQpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUoTm9kZSByb290KTsKKyAgICBE
T01TdHJpbmcgc2hhZG93Um9vdFR5cGUoTm9kZSByb290KTsKICAgICBET01TdHJpbmcgc2hhZG93
UHNldWRvSWQoRWxlbWVudCBlbGVtZW50KTsKICAgICB2b2lkIHNldFNoYWRvd1BzZXVkb0lkKEVs
ZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGlkKTsKICAgICBOb2RlIHRyZWVTY29wZVJvb3ROb2Rl
KE5vZGUgbm9kZSk7CiAgICAgTm9kZSBwYXJlbnRUcmVlU2NvcGUoTm9kZSBub2RlKTsKIAogICAg
IC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bnNpZ25lZCBsb25nIGxhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50KCk7CisgICAg
dW5zaWduZWQgbG9uZyBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpOwogCiAg
ICAgLy8gQ1NTIEFuaW1hdGlvbiB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN1c3BlbmRB
bmltYXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlc3VtZUFuaW1hdGlv
bnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gYW5pbWF0aW9uc0FyZVN1c3Bl
bmRlZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0
VGltZU9uRWxlbWVudChET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBi
b29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0cmluZyBhbmlt
YXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50
LCBET01TdHJpbmcgcHNldWRvSWQpOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAg
ICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBib29sZWFuIGFuaW1hdGlvbnNBcmVTdXNw
ZW5kZWQoKTsKKyAgICBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50KERPTVN0
cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVu
dCBlbGVtZW50KTsKKyAgICBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVt
ZW50KERPTVN0cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGlt
ZSwgRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQpOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgYW5pbWF0aW9uc0ludGVydmFsOwogCiAgICAgLy8gQ1NTIFRyYW5zaXRp
b24gdGVzdGluZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gcGF1c2VUcmFuc2l0
aW9uQXRUaW1lT25FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIHVucmVzdHJpY3RlZCBk
b3VibGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gYm9vbGVhbiBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoRE9NU3RyaW5n
IHByb3BlcnR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50
LCBET01TdHJpbmcgcHNldWRvSWQpOworICAgIGJvb2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRUaW1l
T25FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIHVucmVzdHJpY3RlZCBkb3VibGUgcGF1
c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOworICAgIGJvb2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRU
aW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHBzZXVkb0lkKTsKIAogICAg
IERPTVN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50KTsKICAgICB2b2lk
IHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0RWxlbWVudCBlbGVtZW50LCBET01T
dHJpbmcgY29sb3JWYWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxET01T
dHJpbmc+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5
SXRlbShzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5n
PiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCk7CisgICAgdm9pZCBzZXRG
b3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKHNlcXVlbmNlPERPTVN0cmluZz4g
dmFsdWVzKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBhYnNvbHV0ZUNhcmV0
Qm91bmRzKCk7CisgICAgRE9NUmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAKICAgICBET01S
ZWN0IGJvdW5kaW5nQm94KEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIERPTVJlY3RMaXN0IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgaW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KCk7CisgICAgRE9N
UmVjdExpc3QgaW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoKTsKKyAgICBET01TdHJpbmcgaW5zcGVj
dG9ySGlnaGxpZ2h0T2JqZWN0KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVk
IGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IG1hcmtlclJhbmdlRm9yTm9kZShOb2Rl
IG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9k
ZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZHVtcE1hcmtlclJlY3RzKERPTVN0cmluZyBt
YXJrZXJUeXBlKTsKKyAgICB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShOb2RlIG5v
ZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICBSYW5nZT8gbWFya2VyUmFuZ2VGb3JOb2Rl
KE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9kZSBub2RlLCBET01TdHJp
bmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgRE9NU3RyaW5nIGR1bXBN
YXJrZXJSZWN0cyhET01TdHJpbmcgbWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRUZXh0TWF0Y2hN
YXJrZXIoUmFuZ2UgcmFuZ2UsIGJvb2xlYW4gaXNBY3RpdmUpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2xlYW4gZmxh
Zyk7CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2xlYW4g
ZmxhZyk7CiAKICAgICB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKTsKICAgICB2b2lkIHNldEZv
bnRTbW9vdGhpbmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGxvbmcgeCwgbG9uZyB5KTsKKyAgICB2
b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihsb25nIHgsIGxvbmcgeSk7CiAKICAgICAvLyBMaWtl
IEVsZW1lbnQuc2Nyb2xsVG8oKSwgYnV0IHdpdGhvdXQgY29uc3RhaW50cywgZm9yIHRlc3Rpbmcg
cnViYmVyLWJhbmRpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHVuY29uc3RyYWlu
ZWRTY3JvbGxUbyhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0
cmljdGVkIGRvdWJsZSB5KTsKKyAgICB2b2lkIHVuY29uc3RyYWluZWRTY3JvbGxUbyhFbGVtZW50
IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgdmlzdWFsVmlld3BvcnRSZWN0KCk7Cisg
ICAgRE9NUmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKTsKKyAgICBET01SZWN0IHZpc3VhbFZpZXdw
b3J0UmVjdCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFZpZXdCYXNlQmFj
a2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsKKyAgICB2b2lkIHNldFZpZXdCYXNl
QmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBzZXRQYWdpbmF0aW9uKERPTVN0cmluZyBtb2RlLCBsb25nIGdhcCwgb3B0
aW9uYWwgbG9uZyBwYWdlTGVuZ3RoID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lk
IHNldFBhZ2luYXRpb24oRE9NU3RyaW5nIG1vZGUsIGxvbmcgZ2FwLCBvcHRpb25hbCBsb25nIHBh
Z2VMZW5ndGggPSAwKTsKKyAgICB2b2lkIHNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9v
bGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGNvbmZp
Z3VyYXRpb25Gb3JWaWV3cG9ydCh1bnJlc3RyaWN0ZWQgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywg
bG9uZyBkZXZpY2VXaWR0aCwgbG9uZyBkZXZpY2VIZWlnaHQsIGxvbmcgYXZhaWxhYmxlV2lkdGgs
IGxvbmcgYXZhaWxhYmxlSGVpZ2h0KTsKKyAgICBET01TdHJpbmcgY29uZmlndXJhdGlvbkZvclZp
ZXdwb3J0KHVucmVzdHJpY3RlZCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvLCBsb25nIGRldmljZVdp
ZHRoLCBsb25nIGRldmljZUhlaWdodCwgbG9uZyBhdmFpbGFibGVXaWR0aCwgbG9uZyBhdmFpbGFi
bGVIZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHdhc0xhc3RDaGFu
Z2VVc2VyRWRpdChFbGVtZW50IHRleHRGaWVsZCk7CisgICAgYm9vbGVhbiB3YXNMYXN0Q2hhbmdl
VXNlckVkaXQoRWxlbWVudCB0ZXh0RmllbGQpOwogICAgIGJvb2xlYW4gZWxlbWVudFNob3VsZEF1
dG9Db21wbGV0ZShIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCk7CiAgICAgdm9pZCBzZXRF
ZGl0aW5nVmFsdWUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIERPTVN0cmluZyB2YWx1
ZSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50
LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJ
bnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0
b25UeXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlT2ZTdHJpbmco
RE9NU3RyaW5nIHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2VxdWVuY2U8RE9NU3RyaW5n
PiBmaW5kT3B0aW9ucyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNv
dW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmlu
ZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNl
PERPTVN0cmluZz4gZmluZE9wdGlvbnMpOworICAgIFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0
cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmlu
ZE9wdGlvbnMpOworICAgIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJp
bmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtN
YXRjaGVzKTsKKyAgICB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRl
eHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBET01TdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCBmb3JtQ29udHJvbEVs
ZW1lbnQpOworICAgIERPTVN0cmluZyBhdXRvZmlsbEZpZWxkTmFtZShFbGVtZW50IGZvcm1Db250
cm9sRWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcGFpbnRDb250cm9s
VGludHMoKTsKKyAgICB2b2lkIHBhaW50Q29udHJvbFRpbnRzKCk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50IGVsZW1lbnQsIGxvbmcg
eCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CisgICAgdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0
KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoKTsKIAogICAg
IFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCBsb25nIHJh
bmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRp
b25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICBET01T
dHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIFJhbmdlIHN1YnJhbmdlKFJhbmdl
IHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24o
bG9uZyB4LCBsb25nIHkpOworICAgIFJhbmdlPyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFuZ2VPZlN0cmluZ05lYXJMb2Nh
dGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcgdGFyZ2V0T2Zmc2V0KTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbGVh
biBlbmFibGVkKTsKKyAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGluZyhib29sZWFuIGVuYWJs
ZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGxhc3RTcGVsbENoZWNrUmVxdWVz
dFNlcXVlbmNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGxhc3RTcGVsbENoZWNr
UHJvY2Vzc2VkU2VxdWVuY2UoKTsKKyAgICBsb25nIGxhc3RTcGVsbENoZWNrUmVxdWVzdFNlcXVl
bmNlKCk7CisgICAgbG9uZyBsYXN0U3BlbGxDaGVja1Byb2Nlc3NlZFNlcXVlbmNlKCk7CiAKICAg
ICBzZXF1ZW5jZTxET01TdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKICAgICB2b2lk
IHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoc2VxdWVuY2U8RE9NU3RyaW5nPiBsYW5ndWFnZXMp
OwpAQCAtMjE5LDEzICsyMTksMTMgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAg
ICAgc2VxdWVuY2U8RE9NU3RyaW5nPiB1c2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3Mo
KTsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljKERPTVN0cmlu
ZyBjaGFyYWN0ZXJpc3RpYyk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxv
bmcgd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5z
aWduZWQgbG9uZyB0b3VjaEV2ZW50SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWduZWQgbG9uZyB3
aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWduZWQgbG9uZyB0b3VjaEV2ZW50SGFu
ZGxlckNvdW50KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3RMaXN0IHRvdWNo
RXZlbnRSZWN0c0ZvckV2ZW50KERPTVN0cmluZyBldmVudE5hbWUpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRMaXN0ZW5lclJlY3RzKCk7Cisg
ICAgRE9NUmVjdExpc3QgdG91Y2hFdmVudFJlY3RzRm9yRXZlbnQoRE9NU3RyaW5nIGV2ZW50TmFt
ZSk7CisgICAgRE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRMaXN0ZW5lclJlY3RzKCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGVMaXN0PyBub2Rlc0Zyb21SZWN0KERvY3VtZW50
IGRvY3VtZW50LCBsb25nIHgsIGxvbmcgeSwKKyAgICBOb2RlTGlzdD8gbm9kZXNGcm9tUmVjdChE
b2N1bWVudCBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksCiAgICAgICAgIHVuc2lnbmVkIGxvbmcg
dG9wUGFkZGluZywgdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGxvbmcgYm90
dG9tUGFkZGluZywgdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKICAgICAgICAgYm9vbGVhbiBp
Z25vcmVDbGlwcGluZywgYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2xlYW4gYWxsb3dD
aGlsZEZyYW1lQ29udGVudCk7CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBlbnVtIEV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yIHsKIAogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZTY3JvbGxhYmxlQXJl
YXMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxl
KGxvbmcgcGFnZU51bWJlcik7CisgICAgYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxlKGxvbmcgcGFn
ZU51bWJlcik7CiAKICAgICB1bnNpZ25lZCBsb25nIGltYWdlRnJhbWVJbmRleChIVE1MSW1hZ2VF
bGVtZW50IGVsZW1lbnQpOwogICAgIHZvaWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24o
SFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHVyYXRpb24pOwpA
QCAtMjY2LDggKzI2Niw4IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBJbnRlcm5hbFNldHRpbmdzIHNldHRpbmdzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdvcmtlclRocmVhZENvdW50OwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhcmVTVkdBbmltYXRpb25z
UGF1c2VkOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZG91YmxlIHN2Z0FuaW1hdGlvbnNJbnRl
cnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIGFyZVNWR0FuaW1hdGlvbnNQYXVzZWQ7CisgICAgZG91YmxlIHN2Z0FuaW1hdGlvbnNJbnRl
cnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQpOwogCiAgICAgLy8gRmxhZ3MgZm9yIGxheWVyVHJl
ZUFzVGV4dC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJ
U0lCTEVfUkVDVFMgPSAxOwpAQCAtMjc3LDMxICsyNzcsMzEgQEAgZW51bSBFdmVudFRocm90dGxp
bmdCZWhhdmlvciB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURF
U19DT05URU5UX0xBWUVSUyA9IDE2OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RS
RUVfSU5DTFVERVNfQUNDRUxFUkFURVNfRFJBV0lORyA9IDMyOwogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfQkFDS0lOR19TVE9SRV9BVFRBQ0hFRCA9IDY0Owot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVu
dCBkb2N1bWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01T
dHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50IGRvY3VtZW50LCBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBmbGFncyA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBs
b25nIGxvbmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zKCk7IC8vIEZJWE1FOiByZW5hbWUgdG8gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCku
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCBub25GYXN0U2Nyb2xsYWJsZVJl
Y3RzKCk7CisgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgIERP
TVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpOyAvLyBGSVhNRTogcmVuYW1lIHRv
IHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpLgorICAgIERPTVJlY3RMaXN0IG5vbkZhc3RT
Y3JvbGxhYmxlUmVjdHMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJl
cGFpbnRSZWN0c0FzVGV4dCgpOworICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoKTsK
IAogICAgIC8vIFRoZXNlIHRocm93IGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBjb21w
b3NpdGluZyBsYXllci4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RWxlbWVudFVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHVzZXNEaXNwbGF5
TGlzdERyYXdpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRFbGVtZW50VHJh
Y2tzRGlzcGxheUxpc3RSZXBsYXkoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHRyYWNrUmVwbGF5
KTsKKyAgICB2b2lkIHNldEVsZW1lbnRVc2VzRGlzcGxheUxpc3REcmF3aW5nKEVsZW1lbnQgZWxl
bWVudCwgYm9vbGVhbiB1c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKKyAgICB2b2lkIHNldEVsZW1l
bnRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gdHJhY2tS
ZXBsYXkpOwogCiAgICAgLy8gRmxhZ3MgZm9yIGRpc3BsYXlMaXN0Rm9yRWxlbWVudC4KICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFU
SU9OUyA9IDE7CiAgICAgLy8gUmV0dXJucyB0aGUgcmVjb3JkZWQgZGlzcGxheSBsaXN0LgotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVt
ZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgRE9N
U3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAgICAgLy8gUmV0dXJucyB0aGUgZGlzcGxheSBsaXN0
IHRoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01T
dHJpbmcgcmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01TdHJpbmcgcmVwbGF5RGlzcGxh
eUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQg
ZmxhZ3MgPSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBnYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzKCk7CisgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVz
b3VyY2VzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QXV0aG9yQ1NT
KERPTVN0cmluZyBjc3MpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnRVc2Vy
Q1NTKERPTVN0cmluZyBjc3MpOworICAgIHZvaWQgaW5zZXJ0QXV0aG9yQ1NTKERPTVN0cmluZyBj
c3MpOworICAgIHZvaWQgaW5zZXJ0VXNlckNTUyhET01TdHJpbmcgY3NzKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVW5kZXJNZW1vcnlQcmVzc3VyZTsKICAgICB2b2lkIGJl
Z2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKQEAgLTMxMiwyNiArMzEyLDI2IEBAIGVudW0g
RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHVuc2lnbmVkIGxvbmcgcmVmZXJlbmNpbmdO
b2RlQ291bnQoRG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIERPTVdpbmRvdz8gb3BlbkR1bW15SW5z
cGVjdG9yRnJvbnRlbmQoRE9NU3RyaW5nIHVybCk7CiAgICAgdm9pZCBjbG9zZUR1bW15SW5zcGVj
dG9yRnJvbnRlbmQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0SW5zcGVjdG9y
SXNVbmRlclRlc3QoYm9vbGVhbiBpc1VuZGVyVGVzdCk7CisgICAgdm9pZCBzZXRJbnNwZWN0b3JJ
c1VuZGVyVGVzdChib29sZWFuIGlzVW5kZXJUZXN0KTsKIAogICAgIERPTVN0cmluZyBjb3VudGVy
VmFsdWUoRWxlbWVudCBlbGVtZW50KTsKICAgICBsb25nIHBhZ2VOdW1iZXIoRWxlbWVudCBlbGVt
ZW50LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZVdpZHRoID0gODAwLCBvcHRpb25h
bCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZUhlaWdodCA9IDYwMCk7CiAgICAgc2VxdWVuY2U8RE9N
U3RyaW5nPiBzaG9ydGN1dEljb25VUkxzKCk7CiAgICAgbG9uZyBudW1iZXJPZlBhZ2VzKG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMgPSA4MDAsIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzID0gNjAwKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYWdlUHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5
TmFtZSwgbG9uZyBwYWdlTnVtYmVyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhsb25nIHBhZ2VJbmRleCwgbG9uZyB3aWR0aCwg
bG9uZyBoZWlnaHQsIGxvbmcgbWFyZ2luVG9wLCBsb25nIG1hcmdpblJpZ2h0LCBsb25nIG1hcmdp
bkJvdHRvbSwgbG9uZyBtYXJnaW5MZWZ0KTsKKyAgICBET01TdHJpbmcgcGFnZVByb3BlcnR5KERP
TVN0cmluZyBwcm9wZXJ0eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7CisgICAgRE9NU3RyaW5nIHBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGxvbmcgcGFnZUluZGV4LCBsb25nIHdpZHRoLCBsb25n
IGhlaWdodCwgbG9uZyBtYXJnaW5Ub3AsIGxvbmcgbWFyZ2luUmlnaHQsIGxvbmcgbWFyZ2luQm90
dG9tLCBsb25nIG1hcmdpbkxlZnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dFBhZ2VTY2FsZUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3IsIGxvbmcgeCwg
bG9uZyB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcigp
OworICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZh
Y3RvciwgbG9uZyB4LCBsb25nIHkpOworICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFBhZ2Vab29tRmFjdG9yKHVucmVzdHJpY3Rl
ZCBmbG9hdCB6b29tRmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VGV4
dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOworICAgIHZvaWQgc2V0
UGFnZVpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOworICAgIHZvaWQg
c2V0VGV4dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2xlYW4gdXNlRml4
ZWRMYXlvdXQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGaXhlZExheW91dFNp
emUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgc2V0VXNlRml4ZWRMYXlvdXQo
Ym9vbGVhbiB1c2VGaXhlZExheW91dCk7CisgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUobG9u
ZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcobG9uZyB3aWR0aCwg
bG9uZyBoZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFZpZXdFeHBv
c2VkUmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVz
dHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7CisgICAgdm9p
ZCBzZXRWaWV3RXhwb3NlZFJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBm
bG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWln
aHQpOwogCiAgICAgdm9pZCBzZXRIZWFkZXJIZWlnaHQodW5yZXN0cmljdGVkIGZsb2F0IGhlaWdo
dCk7CiAgICAgdm9pZCBzZXRGb290ZXJIZWlnaHQodW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7
CkBAIC0zNTgsNDEgKzM1OCw0MSBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAog
ICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBib3RoIHJlc2V0IHRoZSB0cmFja2VkIHJlcGFpbnQgcmVj
dHMuIFRoZXkgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoK
ICAgICAvLyAgc3RhcnRUcmFja2luZ1JlcGFpbnRzLCByZXBhaW50UmVjdHNBc1RleHQsIHN0b3BU
cmFja2luZ1JlcGFpbnRzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdGFydFRyYWNr
aW5nUmVwYWludHMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RvcFRyYWNraW5n
UmVwYWludHMoKTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOworICAgIHZvaWQg
c3RvcFRyYWNraW5nUmVwYWludHMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
dGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNp
Z25lZCBsb25nIGxheWVyRmx1c2hDb3VudCgpOworICAgIHZvaWQgc3RhcnRUcmFja2luZ0xheWVy
Rmx1c2hlcygpOworICAgIHVuc2lnbmVkIGxvbmcgbGF5ZXJGbHVzaENvdW50KCk7CiAKICAgICAv
LyBRdWVyeSBpZiBhIHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRsZWQsIHRvIGRlYnVnIHRpbWVy
IHRocm90dGxpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGlzVGltZXJUaHJv
dHRsZWQobG9uZyB0aW1lckhhbmRsZSk7CisgICAgYm9vbGVhbiBpc1RpbWVyVGhyb3R0bGVkKGxv
bmcgdGltZXJIYW5kbGUpOwogCiAgICAgYm9vbGVhbiBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVRo
cm90dGxlZCgpOwogICAgIGJvb2xlYW4gYXJlVGltZXJzVGhyb3R0bGVkKCk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TG93UG93ZXJNb2RlRW5hYmxlZChib29sZWFuIGVuYWJs
ZWQpOworICAgIHZvaWQgc2V0TG93UG93ZXJNb2RlRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW50ZXJ2
YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc2NyaXB0ZWRBbmltYXRpb25zQXJl
U3VzcGVuZGVkOwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIFdlYlBhZ2U6OmV2
ZW50VGhyb3R0bGluZ0RlbGF5KCksIHdoaWNoIG9ubHkgYWZmZWN0cyBpT1MuCiAgICAgYXR0cmli
dXRlIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPyBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0YXJ0VHJhY2tpbmdTdHlsZVJl
Y2FsY3MoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNh
bGNDb3VudCgpOworICAgIHZvaWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygpOworICAgIHVu
c2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxhc3RTdHlsZVVwZGF0ZVNpemU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc3RhcnRUcmFja2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CisgICAg
dm9pZCBzdGFydFRyYWNraW5nQ29tcG9zaXRpbmdVcGRhdGVzKCk7CisgICAgdW5zaWduZWQgbG9u
ZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CiAKICAgICAvLyB8bm9kZXwgc2hvdWxkIGJlIERv
Y3VtZW50LCBIVE1MSUZyYW1lRWxlbWVudCwgb3IgdW5zcGVjaWZpZWQuCiAgICAgLy8gSWYgfG5v
ZGV8IGlzIGFuIEhUTUxJRnJhbWVFbGVtZW50LCBpdCBhc3N1bWVzIG5vZGUuY29udGVudERvY3Vt
ZW50IGlzCiAgICAgLy8gc3BlY2lmaWVkIHdpdGhvdXQgc2VjdXJpdHkgY2hlY2tzLiBVbnNwZWNp
ZmllZCBvciBudWxsIG1lYW5zIHRoaXMgZG9jdW1lbnQuCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0FuZFJ1blBvc3RMYXlv
dXRUYXNrcyhvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7CisgICAgdm9pZCB1cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5b3V0VGFza3Mob3B0aW9uYWwg
Tm9kZT8gbm9kZSA9IG51bGwpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGF5b3V0Q291bnQ7CiAKICAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggaW5mb3JtYXRp
b24gYWJvdXQgdGhlIG1vdXNlIGN1cnNvciB1c2VkIGF0IHRoZSBzcGVjaWZpZWQgY2xpZW50IGxv
Y2F0aW9uLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldEN1cnJlbnRDdXJz
b3JJbmZvKCk7CisgICAgRE9NU3RyaW5nIGdldEN1cnJlbnRDdXJzb3JJbmZvKCk7CiAKICAgICBE
T01TdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQgZWxlbWVudCk7CiAKQEAgLTQx
NCw3ICs0MTQsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHNlcXVlbmNlPERPTVN0cmluZz4gbWVkaWFSZXNwb25zZVNvdXJjZXMoSFRN
TE1lZGlhRWxlbWVudCBtZWRpYSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBzZXF1ZW5jZTxE
T01TdHJpbmc+IG1lZGlhUmVzcG9uc2VDb250ZW50UmFuZ2VzKEhUTUxNZWRpYUVsZW1lbnQgbWVk
aWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBzaW11bGF0ZUF1ZGlvSW50ZXJydXB0
aW9uKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBtZWRpYUVsZW1lbnRIYXNDaGFyYWN0ZXJpc3RpYyhI
VE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBjaGFyYWN0ZXJpc3RpYyk7CisgICAg
W0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIG1lZGlhRWxlbWVudEhhc0NoYXJhY3RlcmlzdGlj
KEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGNoYXJhY3RlcmlzdGljKTsKIAog
ICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBXSB2b2lkIGluaXRpYWxpemVN
b2NrQ0RNKCk7CiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV0gTW9ja0NETUZhY3Rv
cnkgcmVnaXN0ZXJNb2NrQ0RNKCk7CkBAIC00MjMsMTAgKzQyMywxMCBAQCBlbnVtIEV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIERPTVN0cmluZyBnZXRJbWFnZVNvdXJjZVVSTChFbGVt
ZW50IGVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7Ci0gICAgW0Nv
bmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRDYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZShET01TdHJpbmcgb3ZlcnJpZGUpOwotICAgIFtDb25kaXRpb25h
bD1WSURFT19UUkFDSywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UHJpbWFyeUF1ZGlvVHJh
Y2tMYW5ndWFnZU92ZXJyaWRlKERPTVN0cmluZyBsYW5ndWFnZSk7Ci0gICAgW0NvbmRpdGlvbmFs
PVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRDYXB0aW9uRGlzcGxheU1v
ZGUoRE9NU3RyaW5nIG1vZGUpOworICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gRE9NU3Ry
aW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVP
X1RSQUNLXSB2b2lkIHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKERPTVN0cmluZyBvdmVy
cmlkZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSB2b2lkIHNldFByaW1hcnlBdWRp
b1RyYWNrTGFuZ3VhZ2VPdmVycmlkZShET01TdHJpbmcgbGFuZ3VhZ2UpOworICAgIFtDb25kaXRp
b25hbD1WSURFT19UUkFDS10gdm9pZCBzZXRDYXB0aW9uRGlzcGxheU1vZGUoRE9NU3RyaW5nIG1v
ZGUpOwogCiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBUaW1lUmFuZ2VzIGNyZWF0ZVRpbWVSYW5n
ZXMoRmxvYXQzMkFycmF5IHN0YXJ0VGltZXMsIEZsb2F0MzJBcnJheQogICAgICBlbmRUaW1lcyk7
CkBAIC00MzQsMTcgKzQzNCwxNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAog
ICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUoSFRNTFNlbGVjdEVsZW1lbnQgZWxlbWVu
dCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNQbHVnaW5VbmF2YWlsYWJp
bGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CisgICAgYm9vbGVhbiBpc1Bs
dWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCBlbGVtZW50KTsKICAg
ICBib29sZWFuIGlzUGx1Z2luU25hcHNob3R0ZWQoRWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBzZWxlY3Rpb25Cb3VuZHMoKTsKKyAgICBET01SZWN0
IHNlbGVjdGlvbkJvdW5kcygpOwogCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NPVVJDRV0gdm9p
ZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NP
VVJDRV0gc2VxdWVuY2U8RE9NU3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNvdXJj
ZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lEKTsKICAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU09VUkNFXSBzZXF1ZW5jZTxET01TdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQo
U291cmNlQnVmZmVyIGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQpOwogICAgIFtDb25kaXRpb25h
bD1NRURJQV9TT1VSQ0VdIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKFNvdXJjZUJ1
ZmZlciBidWZmZXIsIGJvb2xlYW4gZmxhZyk7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0
cmluZyBpbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgYmVn
aW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oRE9NU3RyaW5nIGludGVycnVwdGlvblR5cGUpOwog
ICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBlbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24o
RE9NU3RyaW5nIGZsYWdzKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gdm9pZCBz
ZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElB
X1NFU1NJT05dIHZvaWQgc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KTsKQEAgLTQ1NSwx
MyArNDU1LDEzIEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIFtDb25kaXRp
b25hbD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogICAgIFtDb25k
aXRpb25hbD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQob3B0aW9u
YWwgYm9vbGVhbiBzdXNwZW5kZWRVbmRlckxvY2sgPSBmYWxzZSk7CiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKG9wdGlvbmFsIGJvb2xl
YW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0
cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25h
bD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmlj
dGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lk
IHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlLCBET01TdHJp
bmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBtZWRp
YVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAgW0NvbmRpdGlv
bmFsPVZJREVPXSB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVt
ZW50IGVsZW1lbnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1X
RUJfQVVESU9dIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBj
b250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8s
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChET01TdHJp
bmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50ID0gMCk7Cisg
ICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChET01T
dHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50ID0gMCk7
CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBb
Q29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VULCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0cmluZyBkZXZp
Y2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOworICAgIFtDb25kaXRpb25hbD1XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKICAgICBb
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIHNldE1vY2tNZWRpYUNhcHR1cmVEZXZpY2Vz
RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHZv
aWQgZW11bGF0ZVJUQ1BlZXJDb25uZWN0aW9uUGxhdGZvcm1FdmVudChSVENQZWVyQ29ubmVjdGlv
biBjb25uZWN0aW9uLCBET01TdHJpbmcgYWN0aW9uKTsKQEAgLTQ3NCw4ICs0NzQsOCBAQCBlbnVt
IEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQg
c2ltdWxhdGVTeXN0ZW1XYWtlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIGVs
ZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE1vY2tQYWdlT3ZlcmxheSBpbnN0YWxsTW9ja1BhZ2VP
dmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBwYWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dChvcHRpb25hbCB1bnNpZ25lZCBzaG9y
dCBmbGFncyA9IDApOworICAgIE1vY2tQYWdlT3ZlcmxheSBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5
KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKKyAgICBET01TdHJpbmcgcGFnZU92ZXJsYXlMYXllclRy
ZWVBc1RleHQob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAogICAgIHZvaWQg
c2V0UGFnZU11dGVkKERPTVN0cmluZyBtdXRlZFN0YXRlKTsKICAgICBET01TdHJpbmcgcGFnZU1l
ZGlhU3RhdGUoKTsKQEAgLTQ4OCwxMCArNDg4LDEwIEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3IgewogCiAgICAgW0NvbmRpdGlvbmFsPUNPTlRFTlRfRklMVEVSSU5HXSByZWFkb25seSBh
dHRyaWJ1dGUgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBtb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOwogCi0gICAgW0NvbmRpdGlvbmFsPUNTU19TQ1JPTExfU05BUCwgTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOworICAgIFtD
b25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhF
bGVtZW50IGVsZW1lbnQpOwogICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIHZvaWQg
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2xlYW4gZW5h
YmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYXRoU3RyaW5nV2l0
aFNocmlua1dyYXBwZWRSZWN0cyhzZXF1ZW5jZTxkb3VibGU+IHJlY3RDb21wb25lbnRzLCBkb3Vi
bGUgcmFkaXVzKTsKKyAgICBET01TdHJpbmcgcGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVj
dHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91YmxlIHJhZGl1cyk7CiAKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBnZXRDdXJyZW50TWVkaWFDb250cm9sc1N0
YXR1c0ZvckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKIApAQCAtNTA2LDcgKzUw
Niw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpOwogICAgIFtFbmFibGVkQnlT
ZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHZvaWQgc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3Mo
Ym9vbGVhbiB2YWx1ZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Q2FuU2hv
d01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxvdyk7CisgICAgdm9pZCBzZXRDYW5TaG93
TW9kYWxEaWFsb2dPdmVycmlkZShib29sZWFuIGFsbG93KTsKIAogICAgIERPTVN0cmluZyBjb21w
b3NlZFRyZWVBc1RleHQoTm9kZSBwYXJlbnQpOwogCkBAIC01NDksNyArNTQ5LDcgQEAgZW51bSBF
dmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0g
UHJvbWlzZTxJbWFnZURhdGE+IGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKCk7CiAgICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50OwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1d
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRyYWNrVmlkZW9TYW1wbGVDb3VudDsK
LSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRNZWRpYURldmljZVN0YXRlKERPTVN0cmluZyBkZXZpY2VJRCwgRE9NU3RyaW5nIHByb3BlcnR5
LCBib29sZWFuIHZhbHVlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIHNl
dE1lZGlhRGV2aWNlU3RhdGUoRE9NU3RyaW5nIGRldmljZUlELCBET01TdHJpbmcgcHJvcGVydHks
IGJvb2xlYW4gdmFsdWUpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHZvaWQgZGVs
YXlNZWRpYVN0cmVhbVRyYWNrU2FtcGxlcyhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBmbG9hdCBk
ZWxheSk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBzZXRNZWRpYVN0cmVh
bVRyYWNrTXV0ZWQoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgYm9vbGVhbiBtdXRlZCk7CiAgICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCByZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1l
ZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlk
bAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICAg
ICBHbG9iYWw9KFdvcmtlcixEZWRpY2F0ZWRXb3JrZXIpLAogICAgIEpTR2VuZXJhdGVUb05hdGl2
ZU9iamVjdCwKIF0gaW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIDogV29ya2Vy
R2xvYmFsU2NvcGUgewotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVj
dD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHBvc3RN
ZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0g
W10pOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiBdIGludGVyZmFjZSBXb3JrZXIgOiBFdmVudFRhcmdldCB7CiAgICAgdm9pZCB0ZXJtaW5hdGUo
KTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
cG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNm
ZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHBvc3RNZXNzYWdlKGFu
eSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKICAgICAvLyBXb3JrZXJVdGlscwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGltcG9ydFNjcmlwdHMoVVNWU3RyaW5nLi4uIHVybHMpOwor
ICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhVU1ZTdHJpbmcuLi4gdXJscyk7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CiAKICAgICAvLyBBZGRpdGlvbmFs
IGNvbnN0cnVjdG9ycwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVu
ZGFibGVFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0V4dGVuZGFibGVFdmVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw1ICszMiw1IEBACiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRXh0ZW5kYWJsZUV2ZW50IDogRXZl
bnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3YWl0VW50aWwoUHJvbWlzZTxhbnk+
IGYpOworICAgIHZvaWQgd2FpdFVudGlsKFByb21pc2U8YW55PiBmKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB0YXJnZXRDbGllbnRJZDsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZXNw
b25kV2l0aChQcm9taXNlPEZldGNoUmVzcG9uc2U+IHIpOworICAgIHZvaWQgcmVzcG9uZFdpdGgo
UHJvbWlzZTxGZXRjaFJlc3BvbnNlPiByKTsKIH07CiAKIGRpY3Rpb25hcnkgRmV0Y2hFdmVudElu
aXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtlciA6IEV2ZW50
VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHNjcmlwdFVSTDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlclN0YXRlIHN0YXRlOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9
IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBwb3N0TWVz
c2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtd
KTsKIAogICAgIC8vIGV2ZW50CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hh
bmdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKIAot
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0
cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9p
ZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFu
c2ZlciA9IFtdKTsKIH07CiAKIGVudW0gRnJhbWVUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9ET01Q
YXJzZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFy
c2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNSArMjIsNSBAQAogICAgIENvbnN0cnVjdG9y
Q2FsbFdpdGg9RG9jdW1lbnQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50
ZXJmYWNlIERPTVBhcnNlciB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIERv
Y3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJpbmcgc3RyaW5nLCBET01TdHJpbmcgY29udGVu
dFR5cGUpOworICAgIFtOZXdPYmplY3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJp
bmcgc3RyaW5nLCBET01TdHJpbmcgY29udGVudFR5cGUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTMgKzYwLDEz
IEBAIGVudW0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgewogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwogCiAgICAgLy8gcmVxdWVzdAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBvcGVuKEJ5dGVTdHJpbmcgbWV0aG9kLCBET01TdHJpbmcg
dXJsKTsgLy8gRklYTUU6IHVybCBzaG91bGQgYmUgYSBVU1ZTdHJpbmcuCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2QsIERPTVN0cmluZyB1cmwsIGJv
b2xlYW4gYXN5bmMsIG9wdGlvbmFsIERPTVN0cmluZz8gdXNlciA9IG51bGwsIG9wdGlvbmFsIERP
TVN0cmluZz8gcGFzc3dvcmQgPSBudWxsKTsgLy8gRklYTUU6IHVybC91c2VyL3Bhc3N3b3JkIHNo
b3VsZCBhbGwgYmUgYSBVU1ZTdHJpbmdzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRSZXF1ZXN0SGVhZGVyKEJ5dGVTdHJpbmcgaGVhZGVyLCBCeXRlU3RyaW5nIHZhbHVlKTsKKyAg
ICB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2QsIERPTVN0cmluZyB1cmwpOyAvLyBGSVhNRTog
dXJsIHNob3VsZCBiZSBhIFVTVlN0cmluZy4KKyAgICB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRo
b2QsIERPTVN0cmluZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlvbmFsIERPTVN0cmluZz8gdXNl
ciA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZz8gcGFzc3dvcmQgPSBudWxsKTsgLy8gRklYTUU6
IHVybC91c2VyL3Bhc3N3b3JkIHNob3VsZCBhbGwgYmUgYSBVU1ZTdHJpbmdzLgorICAgIHZvaWQg
c2V0UmVxdWVzdEhlYWRlcihCeXRlU3RyaW5nIGhlYWRlciwgQnl0ZVN0cmluZyB2YWx1ZSk7CiAg
ICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAgICBhdHRyaWJ1dGUgYm9vbGVh
biB3aXRoQ3JlZGVudGlhbHM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFhNTEh0dHBSZXF1ZXN0
VXBsb2FkIHVwbG9hZDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2VuZChvcHRpb25h
bCAoRG9jdW1lbnQgb3IgQm9keUluaXQpPyBib2R5ID0gbnVsbCk7CisgICAgdm9pZCBzZW5kKG9w
dGlvbmFsIChEb2N1bWVudCBvciBCb2R5SW5pdCk/IGJvZHkgPSBudWxsKTsKICAgICB2b2lkIGFi
b3J0KCk7CiAKICAgICAvLyByZXNwb25zZQpAQCAtNzUsNyArNzUsNyBAQCBlbnVtIFhNTEh0dHBS
ZXF1ZXN0UmVzcG9uc2VUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQnl0ZVN0cmluZyBz
dGF0dXNUZXh0OwogICAgIEJ5dGVTdHJpbmc/IGdldFJlc3BvbnNlSGVhZGVyKEJ5dGVTdHJpbmcg
bmFtZSk7CiAgICAgQnl0ZVN0cmluZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShET01TdHJpbmcgbWltZSk7Cisg
ICAgdm9pZCBvdmVycmlkZU1pbWVUeXBlKERPTVN0cmluZyBtaW1lKTsKICAgICBhdHRyaWJ1dGUg
WE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlOwogICAgIFtDYWNoZWRBdHRy
aWJ1dGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSByZXNwb25zZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHJlc3BvbnNlVGV4dDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTAg
KzIyLDEwIEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFhQ
YXRoRXZhbHVhdG9yIHsKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVs
dCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBYUGF0
aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lv
biA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsKKyAg
ICBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXhw
cmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVy
KTsKIAogICAgIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29sdmVyKG9wdGlvbmFsIE5vZGU/
IG5vZGVSZXNvbHZlcik7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVm
YXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBY
UGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiA9ICJ1bmRl
ZmluZWQiLCBvcHRpb25hbCBOb2RlPyBjb250ZXh0Tm9kZSwgb3B0aW9uYWwgWFBhdGhOU1Jlc29s
dmVyPyByZXNvbHZlciwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlvbmFs
IFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CisgICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9u
YWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgTm9kZT8gY29u
dGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNSArMjIsNSBAQAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBYUGF0aEV4cHJlc3Np
b24gewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9u
YWwgTm9kZT8gY29udGV4dE5vZGUgPSBudWxsLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBl
ID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0gbnVsbCk7CisgICAgWFBhdGhS
ZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUgPSBudWxsLCBvcHRpb25h
bCB1bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0
ID0gbnVsbCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aW52YWxpZEl0ZXJhdG9yU3RhdGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgc25hcHNob3RMZW5ndGg7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgaXRlcmF0
ZU5leHQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgc25hcHNob3RJdGVtKG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICBOb2RlIGl0ZXJhdGVOZXh0KCk7Cisg
ICAgTm9kZSBzbmFwc2hvdEl0ZW0ob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwog
fTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327590</attachid>
            <date>2017-11-26 13:43:53 -0800</date>
            <delta_ts>2017-11-26 16:51:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20171126134352.patch</filename>
            <type>text/plain</type>
            <size>410706</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzNSBAQAorMjAxNy0xMS0yNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbmVl
ZCB0byBzcGVjaWZ5IFtNYXlUaHJvd0V4Y2VwdGlvbl0gZm9yIG9wZXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDAxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlNZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGw6CisgICAgICAgICog
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJl
c3VsdFNldFJvd0xpc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRs
OgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252
ZXJ0QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0
aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9u
Q2FsbCk6CisgICAgICAgIChOZWVkc1ZvaWRPcGVyYXRpb25DYWxsZXJGb3JQb3RlbnRpYWxFeGNl
cHRpb25Qcm9wYWdhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6Cisg
ICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29u
dmVydE5lZWRzU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU01hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25HZXRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uS2V5c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25WYWx1ZXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25BZGRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uQ2xlYXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRGVsZXRlQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2hCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUJvZHkp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENFUmVhY3Rpb25zQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdC
b2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aEFyZ3VtZW50c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZVZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50Qm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6aGFuZGxlRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0
aHJvdzo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25X
aXRoVHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUeXBlZGVmczo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRS
ZXRocm93c0V4Y2VwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uSXRlbUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRC
eVNldHRpbmdPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRp
b25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24yQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVFbmFibGVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJl
c3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JG
dW5jdGlvbkltcGxlbWVudHNNZXRob2Q0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDFCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50
YWxNZXRob2Q0Qm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWREZWxldGVyQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlckJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVk
U2V0dGVyMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcjJCb2R5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVy
YXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0
V29ya2VyUHJvbWlzZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEpTVGVzdE9iajEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9i
ajIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5h
YmxlZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
b3JsZFNwZWNpZmljTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhv
ZFdpdGhBcmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkxvbmdNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0
ZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxN
ZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEVudW1BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOdWxsYWJsZVVTVlN0cmluZ0FyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhC
eXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWVCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29y
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRXhjZXB0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblByaXZhdGVNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlv
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3Vt
ZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudEJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
cmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
QW5kRGVmYXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGxCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxMb25nTG9uZ0lzWmVyb0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U2VxdWVuY2VJc0VtcHR5Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklz
RmFsc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rp
b25BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q4Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q5Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTFCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEy
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxM0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24x
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGlu
Z3Vpc2hpbmdVbmlvbnMxQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGlu
Z3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjJC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVO
b25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGlu
Z1BhcmFtZXRlcjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25DbGFzc01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbEJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdp
dGhvdXROdWxsYWJsZVNlcXVlbmNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5n
ZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhv
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9t
aXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xl
Q29uZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25X
aXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlckJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1l
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5j
dGlvblJldHVybmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmll
clByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRp
ZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9k
eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0JvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRv
d0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmdCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFi
bGVzQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5p
b25zQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uVW5pb25BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVu
Y3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZUJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRp
b25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENh
bGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Vm9pZENhbGxiYWNr
RnVuY3Rpb246OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEltcGxlbWVudHMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRh
bC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGw6
CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAgICAg
ICAgKiBjc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4Lmlk
bDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsOgorICAgICAgICAqIGNzcy9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGw6CisgICAgICAgICogY3NzL0ZvbnRGYWNl
U2V0LmlkbDoKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTTWF0cml4LmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5pZGw6CisgICAg
ICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDoKKyAgICAgICAg
KiBkb20vRE9NUG9pbnRSZWFkT25seS5pZGw6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaWRsOgorICAgICAgICAqIGRv
bS9FeGNlcHRpb25Pci5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaWRsOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAu
aWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9y
LmlkbDoKKyAgICAgICAgKiBkb20vUGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1Jhbmdl
LmlkbDoKKyAgICAgICAgKiBkb20vVGV4dC5pZGw6CisgICAgICAgICogZG9tL1RleHREZWNvZGVy
LmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbDoKKyAg
ICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaWRsOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5pZGw6CisgICAg
ICAgICogaHRtbC9UaW1lUmFuZ2VzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNE
cmF3SW1hZ2UuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1BhdGgyRC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsOgorICAgICAgICAqIHBhZ2Uv
Q3J5cHRvLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5pZGw6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5pZGw6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5pZGw6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckdsb2Jh
bFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAqIHN2
Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1i
ZXJMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdQb2ludC5pZGw6CisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdC5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uaWRsOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGw6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGw6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5pZGw6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5pZGw6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiB4bWwvWFBhdGhFdmFsdWF0b3IuaWRs
OgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24uaWRsOgorICAgICAgICAqIHhtbC9YUGF0
aFJlc3VsdC5pZGw6CisKIDIwMTctMTEtMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIElTTyBhbGxvY2F0ZWQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjMgKzQw
LDIzIEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBVFVTX1BJTl9JTkNPUlJFQ1QgPSA2
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRVU19QSU5fTE9DS09VVCA9IDc7CiAKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0
YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3Rh
dGljIGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBj
YW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVy
KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRp
b25dIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5nIG1l
cmNoYW50SWRlbnRpZmllcik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IHN0YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0aWMgYm9vbGVhbiBjYW5N
YWtlUGF5bWVudHMoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3Rh
dGljIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3Ry
aW5nIG1lcmNoYW50SWRlbnRpZmllcik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllcik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYmVn
aW4oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGNvbXBsZXRlTWVyY2hhbnRW
YWxpZGF0aW9uKGFueSBtZXJjaGFudFNlc3Npb24pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uLCBDb25kaXRpb25hbD1BUFBMRV9QQVlfU0VTU0lPTl9WM10gdm9p
ZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFVwZGF0ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9QVBQ
TEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICB2b2lkIGJl
Z2luKCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9p
ZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhbnkgbWVyY2hhbnRTZXNzaW9uKTsKKyAgICBb
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7CisgICAg
W0NvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlIHVwZGF0ZSk7Cisg
ICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsKKyAg
ICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVuc2ln
bmVkIHNob3J0IHN0YXR1cywgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBw
bGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVz
LCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFw
cGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xp
bmVJdGVtcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbihBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBh
eUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
b21wbGV0ZVBheW1lbnQodW5zaWduZWQgc2hvcnQgc3RhdHVzKTsKKyAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBsZVBheUxp
bmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMp
OworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hv
cnQgc3RhdHVzLCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01l
dGhvZHMsIEFwcGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0
ZW0+IG5ld0xpbmVJdGVtcyk7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24oQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4g
bmV3TGluZUl0ZW1zKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudCh1bnNpZ25lZCBzaG9ydCBz
dGF0dXMpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnZhbGlkYXRlbWVyY2hhbnQ7
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnBheW1lbnRtZXRob2RzZWxlY3RlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlNZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRh
dGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNSArMjcsNSBAQAogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSZQQVlNRU5UX1JFUVVFU1QsCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBBcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50IDogQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9jdW1lbnRd
IHZvaWQgY29tcGxldGUoYW55IG1lcmNoYW50U2Vzc2lvbik7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSB2b2lkIGNvbXBsZXRlKGFueSBtZXJjaGFudFNlc3Npb24pOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQCB0eXBlZGVmIChCbG9i
IG9yIEJ1ZmZlclNvdXJjZSBvciBET01Gb3JtCiBbCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1CZWFj
b25BUEksCiBdIHBhcnRpYWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1
cmwsIG9wdGlvbmFsIEJvZHlJbml0PyBkYXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSBib29sZWFuIHNlbmRCZWFjb24oVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/
IGRhdGEgPSBudWxsKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDYgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUVuY3J5cHRlZE1l
ZGlhQVBJLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRp
YUtleXMgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlT
ZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9u
YWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKICAgICBQ
cm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0
aWZpY2F0ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlT
eXN0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdXBkYXRlKFVpbnQ4QXJyYXkga2V5KTsKKyAgICB2
b2lkIHVwZGF0ZShVaW50OEFycmF5IGtleSk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRrZXlhZGRlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNl
cHRpb24sCiAgICAgRW5hYmxlZEF0UnVudGltZT1MZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSSwKIF0g
aW50ZXJmYWNlIFdlYktpdE1lZGlhS2V5cyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRl
U2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXREYXRhKTsKICAgICBzdGF0aWMg
Ym9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGtleVN5c3RlbSwgb3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVt
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIHR5cGVk
ZWYgKHNlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiAKICAgICBDb25zdHJ1Y3RvcihvcHRp
b25hbCBIZWFkZXJzSW5pdCBpbml0KSwKICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9u
LAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdm9pZCBkZWxldGUoQnl0ZVN0cmlu
ZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJ5dGVTdHJpbmc/IGdldChCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXMoQnl0ZVN0cmlu
ZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0KEJ5dGVTdHJpbmcgbmFt
ZSwgQnl0ZVN0cmluZyB2YWx1ZSk7CisgICAgdm9pZCBhcHBlbmQoQnl0ZVN0cmluZyBuYW1lLCBC
eXRlU3RyaW5nIHZhbHVlKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVdIHZvaWQgZGVsZXRl
KEJ5dGVTdHJpbmcgbmFtZSk7CisgICAgQnl0ZVN0cmluZz8gZ2V0KEJ5dGVTdHJpbmcgbmFtZSk7
CisgICAgYm9vbGVhbiBoYXMoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICB2b2lkIHNldChCeXRlU3Ry
aW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFsdWUpOwogCiAgICAgaXRlcmFibGU8Qnl0ZVN0cmluZywg
Qnl0ZVN0cmluZz47CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHR5cGVkZWYgKEJsb2Igb3IgQnVmZmVyU291cmNlIG9yIERPTUZvcm0KICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGludGVncml0eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBrZWVwYWxpdmU7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRmV0Y2hSZXF1ZXN0IGNsb25lKCk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXF1
ZXN0IGNsb25lKCk7CiB9OwogCiBGZXRjaFJlcXVlc3QgaW1wbGVtZW50cyBGZXRjaEJvZHk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZGljdGlvbmFyeSBG
ZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAgSW50ZXJmYWNlTmFtZT1SZXNwb25zZSwKIF0gaW50ZXJm
YWNlIEZldGNoUmVzcG9uc2UgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBOZXdPYmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0
YXRpYyBGZXRjaFJlc3BvbnNlIHJlZGlyZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHN0YXR1cyA9IDMwMik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5n
IHVybCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBGZXRjaFJlc3BvbnNlVHlwZSB0eXBlOwogCkBAIC02MSw3ICs2MSw3IEBA
IGRpY3Rpb25hcnkgRmV0Y2hSZXNwb25zZUluaXQgewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgdHJhaWxlcnMuCiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8SGVhZGVy
cz4gdHJhaWxlcjsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBj
bG9uZSgpOwogfTsKIAogRmV0Y2hSZXNwb25zZSBpbXBsZW1lbnRzIEZldGNoQm9keTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBhbnkga2V5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtleTsK
IAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgdXBkYXRlKGFueSB2YWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkdmFu
Y2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIGNvbnRpbnVlKG9wdGlvbmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29udGludWVQcmltYXJ5S2V5KGFueSBr
ZXksIGFueSBwcmltYXJ5S2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0
ZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCB1cGRhdGUoYW55IHZh
bHVlKTsKKyAgICB2b2lkIGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3Vu
dCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVu
Y3Rpb25dIHZvaWQgY29udGludWUob3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSB2b2lkIGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtl
eSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0
aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE0IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbG9uZyB2ZXJzaW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdM
aXN0IG9iamVjdFN0b3JlTmFtZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVj
dFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmpl
Y3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKKyAgICBJREJPYmplY3RTdG9y
ZSBjcmVhdGVPYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgSURCT2JqZWN0U3Rv
cmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9N
U3RyaW5nIG5hbWUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMs
IG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgSURC
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+
KSBzdG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25s
eSIpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIHNwZWMsIGJ1dCBp
cyBuZWVkZWQgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS93M2MvSW5kZXhlZERCL2lzc3Vlcy84NQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVzLCBvcHRpb25hbCBJ
REJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIpOworICAgIElEQlRyYW5zYWN0aW9u
IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgb3B0aW9uYWwgSURCVHJhbnNh
Y3Rpb25Nb2RlIG1vZGUgPSAicmVhZG9ubHkiKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYWJvcnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJPcGVuREJSZXF1ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3QgZGVsZXRl
RGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5
VGhyb3dFeGNlcHRpb25dIHNob3J0IGNtcChhbnkgZmlyc3QsIGFueSBzZWNvbmQpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9N
U3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2
ZXJzaW9uKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCT3BlbkRC
UmVxdWVzdCBkZWxldGVEYXRhYmFzZShET01TdHJpbmcgbmFtZSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBzaG9ydCBjbXAoYW55IGZpcnN0LCBhbnkgc2Vjb25kKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIwICszOSwyMCBAQCB0eXBlZGVmIChET01TdHJpbmcg
b3Igc2VxdWVuY2U8RE9NU3RyaW5nCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVs
dGlFbnRyeTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9w
dGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJh
bmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24g
PSAibmV4dCIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4
dCIpOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGws
IG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3Blbktl
eUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0g
Im5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3Qgb3BlbktleUN1
cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Z2V0KGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtF
bmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlv
bmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRp
b25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1
bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9y
Y2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhj
ZXB0aW9uXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFu
Z2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
KyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9w
dGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdl
PyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291
bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFu
eSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlS
YW5nZT8gcmFuZ2UgPSBudWxsKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVl
c3QgY291bnQoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxMCArMzIsMTAgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb3dl
ck9wZW47CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdXBwZXJPcGVuOwogCi0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIG9ubHkoYW55IHZhbHVlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlv
bmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1h
eVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgdXBwZXJCb3VuZChhbnkgdXBwZXIs
IG9wdGlvbmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgYm91bmQoYW55IGxvd2Vy
LCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gdXBwZXJPcGVuID0gZmFsc2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
c3RhdGljIElEQktleVJhbmdlIG9ubHkoYW55IHZhbHVlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dlckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwg
Ym9vbGVhbiBvcGVuID0gZmFsc2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gc3RhdGlj
IElEQktleVJhbmdlIHVwcGVyQm91bmQoYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4g
PSBmYWxzZSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBzdGF0aWMgSURCS2V5UmFuZ2Ug
Ym91bmQoYW55IGxvd2VyLCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gdXBwZXJPcGVuID0gZmFsc2UpOwogCi0gICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpbmNsdWRlcyhhbnkg
a2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIGJvb2xlYW4gaW5jbHVkZXMoYW55IGtl
eSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwyOCArMzksMjggQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvSW5jcmVtZW50OwogCi0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVl
LCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwg
TWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5n
ZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0
aW9uLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQo
SURCS2V5UmFuZ2U/IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtl
eSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBnZXRLZXkoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjbGVhcigpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJL
ZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0
aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24gPSAibmV4dCIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUs
IE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNv
dW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBs
b25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxL
ZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4
IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0
cmluZz4pIGtleVBhdGgsIG9wdGlvbmFsIElEQkluZGV4UGFyYW1ldGVycyBvcHRpb25zKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Y291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5
KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwg
b3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0
IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURC
S2V5UmFuZ2U/IGtleVJhbmdlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGNsZWFyKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJu
ZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJz
b3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJ
REJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
SURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGws
IG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFs
IFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcg
b3Igc2VxdWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0
ZXJzIG9wdGlvbnMpOworICAgIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICB2
b2lkIGRlbGV0ZUluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwog
fTsKIAogZGljdGlvbmFyeSBJREJJbmRleFBhcmFtZXRlcnMgewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIElEQkRhdGFiYXNlIGRiOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FeGNl
cHRpb24gZXJyb3I7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9i
amVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
YWJvcnQoKTsKKyAgICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSk7
CisgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFib3J0
OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTcgKzU0LDE3IEBAIGVudW0gUmVhZHlT
dGF0ZSB7CiAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkdXJhdGlvbjsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU291cmNlQnVmZmVyIGFkZFNvdXJjZUJ1ZmZlcihET01T
dHJpbmcgdHlwZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVNvdXJjZUJ1
ZmZlcihTb3VyY2VCdWZmZXIgYnVmZmVyKTsKKyAgICBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVm
ZmVyKERPTVN0cmluZyB0eXBlKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VC
dWZmZXIgYnVmZmVyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkeVN0YXRlIHJlYWR5
U3RhdGU7CiAgICAgCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGVuZE9mU3RyZWFtKG9w
dGlvbmFsIEVuZE9mU3RyZWFtRXJyb3IgZXJyb3IpOworICAgIHZvaWQgZW5kT2ZTdHJlYW0ob3B0
aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CiAKICAgICBzdGF0aWMgYm9vbGVhbiBpc1R5
cGVTdXBwb3J0ZWQgKERPTVN0cmluZyB0eXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhckxpdmVTZWVrYWJsZVJhbmdlKCk7CisgICAg
dm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAg
IHZvaWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbnNvdXJjZW9wZW47CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZWVu
ZGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Nywx
MSArNTcsMTEgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRXaW5k
b3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIoQnVmZmVyU291cmNlIGRhdGEpOworICAgIHZvaWQgYXBw
ZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50
IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBh
Ym9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoZG91YmxlIHN0YXJ0
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIHZvaWQg
cmVtb3ZlKGRvdWJsZSBzdGFydCwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbnVwZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb251cGRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPVBlZXJDb25uZWN0
aW9uLAogXSBpbnRlcmZhY2UgUlRDRFRNRlNlbmRlciA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBG
SVhNRSAxNjk2NjI6IGNoYW5nZSB0byB1bnNpZ25lZCBsb25nIHdpdGggZGVmYXVsdHMKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0RFRNRihET01TdHJpbmcgdG9uZXMsIG9wdGlv
bmFsIGxvbmcgZHVyYXRpb24sIG9wdGlvbmFsIGxvbmcgaW50ZXJUb25lR2FwKTsKKyAgICB2b2lk
IGluc2VydERUTUYoRE9NU3RyaW5nIHRvbmVzLCBvcHRpb25hbCBsb25nIGR1cmF0aW9uLCBvcHRp
b25hbCBsb25nIGludGVyVG9uZUdhcCk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRv
bmVjaGFuZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0b25lQnVmZmVyOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDEwICs0MywxMCBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3RyaW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJh
eUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAg
IHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAgIHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAK
ICAgICB2b2lkIGNsb3NlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0eXBlZGVmIFJUQ1J0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgSlNCdWlsdGluQ29uc3RydWN0b3IKIF0gaW50
ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9uIDogRXZlbnRUYXJnZXQgewogICAgIC8vIEpTIGJ1aWx0
LWluIGNvbnN0cnVjdG9yIGhhbmRsZXMgdGhlIG9wdGlvbmFsIFJUQ0NvbmZpZ3VyYXRpb24KLSAg
ICBbUHJpdmF0ZUlkZW50aWZpZXIsIENhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBpbml0aWFsaXplV2l0aChSVENDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwor
ICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgaW5pdGlhbGl6
ZVdpdGgoUlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKIAogCiAgICAgLy8gNC4zLjIg
SW50ZXJmYWNlIERlZmluaXRpb24KQEAgLTkzLDcgKzkzLDcgQEAgdHlwZWRlZiBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBSdHBUcgogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlzc2luZyBkZWZh
dWx0SWNlU2VydmVycwogCiAgICAgUlRDQ29uZmlndXJhdGlvbiBnZXRDb25maWd1cmF0aW9uKCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKTsKKyAgICB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmVnb3RpYXRpb25uZWVkZWQ7CkBAIC0xMjMsMTAgKzEyMywx
MCBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgc2VxdWVu
Y2U8UlRDUnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOwogICAgIHNlcXVlbmNlPFJUQ1J0cFRy
YW5zY2VpdmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwg
UHVibGljSWRlbnRpZmllciwgTWF5VGhyb3dFeGNlcHRpb25dIFJUQ1J0cFNlbmRlciBhZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBNZWRpYVN0cmVhbS4uLiBzdHJlYW1zKTsKLSAgICBb
UHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciBzZW5kZXIpOworICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gUlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1lZGlhU3RyZWFt
VHJhY2sgdHJhY2ssIE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOworICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2Vu
ZGVyKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJh
bnNjZWl2ZXIoKE1lZGlhU3RyZWFtVHJhY2sgb3IgRE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOworICAgIFJUQ1J0cFRyYW5zY2VpdmVyIGFkZFRy
YW5zY2VpdmVyKChNZWRpYVN0cmVhbVRyYWNrIG9yIERPTVN0cmluZykgdHJhY2ssIG9wdGlvbmFs
IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBpbml0KTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb250cmFjazsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHR5cGVkZWYgUlRDUnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb24gUnRwVHIKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEgQVBJCiAgICAg
Ly8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0
YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlv
bmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVs
SW5pdCBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZGF0YWNoYW5uZWw7
CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgU2VjdXJlQ29udGV4dAogXSBpbnRlcmZhY2Ug
UGF5bWVudFJlcXVlc3QgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQ
cm9taXNlPFBheW1lbnRSZXNwb25zZT4gc2hvdygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
UHJvbWlzZTx2b2lkPiBhYm9ydCgpOworICAgIFByb21pc2U8dm9pZD4gYWJvcnQoKTsKICAgICBb
Q2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnQoKTsKIAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAg
ICBTZWN1cmVDb250ZXh0CiBdIGludGVyZmFjZSBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IDog
RXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB1cGRhdGVXaXRoKFByb21pc2U8
UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFpbHNQcm9taXNlKTsKKyAgICB2b2lkIHVwZGF0ZVdp
dGgoUHJvbWlzZTxQYXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRs
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksNSArMzksNSBAQAogCiAgICAgLy8g
Q2hhbm5lbCBhY2Nlc3MKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRmxvYXQzMkFycmF5IGdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hhbm5lbEluZGV4KTsKKyAgICBGbG9hdDMyQXJyYXkg
Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOCArNDQsOCBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGxvb3BTdGFy
dDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBsb29wRW5kOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHN0YXJ0KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUg
d2hlbiA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIGdyYWluRHVyYXRpb24pOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzdG9wKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9
IDApOworICAgIHZvaWQgc3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0g
MCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBncmFpbk9mZnNldCA9IDAsIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7CisgICAgdm9pZCBzdG9wKG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDApOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmVuZGVkOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNjEsOCArNjEsOCBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICAvLyBOdW1iZXIg
b2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKICAg
ICAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNp
Z25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMs
IHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4
VG9Nb25vKTsKKyAgICBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVm
ZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KICAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNo
b3VsZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxl
LiBUaGlzIHNob3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCkBAIC03MSwyNyArNzEsMjcgQEAg
ZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CiAgICAgLy8gU291cmNlcwogICAgIEF1ZGlvQnVmZmVy
U291cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURF
TywgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVN
ZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtD
b25kaXRpb25hbD1WSURFT10gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlh
RWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJl
YW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsK
ICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKIAogICAgIC8vIFByb2Nlc3Np
bmcgbm9kZXMKICAgICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBt
YXhEZWxheVRpbWUgPSAxKTsKKyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKICAgICBCaXF1YWRGaWx0ZXJOb2Rl
IGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFw
ZXIoKTsKICAgICBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOwogICAgIENvbnZvbHZlck5vZGUg
Y3JlYXRlQ29udm9sdmVyKCk7CiAgICAgRHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKTsKICAgICBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9k
ZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXpl
ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKICAgICBP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9h
dDMyQXJyYXkgaW1hZyk7CisgICAgUGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9h
dDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwogCiAgICAgLy8gQ2hhbm5lbCBzcGxp
dHRpbmcgYW5kIG1lcmdpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRl
ck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZPdXRwdXRzID0gNik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9k
ZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1
dHMgPSA2KTsKKyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5uZWxN
ZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0cyA9IDYpOwogCiAgICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKICAgICAvLyB2b2lk
IHByZXBhcmVPZmZsaW5lQnVmZmVyUmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBjaGFubmVsQ291bnRNb2RlOwogICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY2hhbm5lbEludGVycHJldGF0aW9uOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGNvbm5lY3QoQXVkaW9Ob2RlIGRlc3RpbmF0aW9uLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG91dHB1dCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5wdXQgPSAwKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29ubmVjdChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG91dHB1dCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7Cisg
ICAgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlucHV0ID0gMCk7CisgICAg
dm9pZCBjb25uZWN0KEF1ZGlvUGFyYW0gZGVzdGluYXRpb24sIG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0ID0gMCk7CisgICAgdm9pZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0ID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw4ICs0OCw4IEBAIGVudW0gT3NjaWxsYXRvclR5cGUgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVu
ID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0
cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7CisgICAgdm9pZCBzdGFydChvcHRpb25hbCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHdoZW4gPSAwKTsKKyAgICB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB3aGVuID0gMCk7CiAKICAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJpb2Rp
Y1dhdmU/IHdhdmUpOyAvLyBGSVhNRTogVGhlIHBhcmFtZXRlciBzaG91bGQgbm90IGJlIG51bGxh
YmxlLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDUgQEAKICAqLwogCiBwYXJ0aWFsIGludGVy
ZmFjZSBET01XaW5kb3cgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGF0YWJhc2U/IG9wZW5E
YXRhYmFzZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZlcnNpb24sIERPTVN0cmluZyBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBvcHRpb25hbCBEYXRhYmFzZUNh
bGxiYWNrPyBjcmVhdGlvbkNhbGxiYWNrKTsKKyAgICBEYXRhYmFzZT8gb3BlbkRhdGFiYXNlKERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmVyc2lvbiwgRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIG9wdGlvbmFsIERhdGFiYXNlQ2FsbGJhY2s/IGNy
ZWF0aW9uQ2FsbGJhY2spOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXRSb3dMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChE
T01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldFJvd0xpc3QgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJl
Y29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNSArMzEsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiBb
CiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVyZmFjZSBTUUxUcmFuc2FjdGlvbiB7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0
YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0
aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGV4ZWN1dGVTcWwoRE9N
U3RyaW5nIHNxbFN0YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVu
dHMgPSBbXSwgb3B0aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25h
bCBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
bmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3Ry
aW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNl
bmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAg
IHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBE
T01TdHJpbmcgcmVhc29uKTsKKyAgICB2b2lkIGNsb3NlKG9wdGlvbmFsIFtDbGFtcF0gdW5zaWdu
ZWQgc2hvcnQgY29kZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHJlYXNvbik7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiAgICAgQ29uc3RydWN0b3IoRWxlbWVudD8gdGFy
Z2V0LCBvYmplY3Q/IGtleWZyYW1lcykKIF0gaW50ZXJmYWNlIEtleWZyYW1lRWZmZWN0IDogQW5p
bWF0aW9uRWZmZWN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGFyZ2V0Owot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgc2V0S2V5
ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZv
aWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDYgQEAKICAgICBhdHRyaWJ1dGUgQW5pbWF0aW9uRWZmZWN0PyBlZmZlY3Q7CiAg
ICAgYXR0cmlidXRlIEFuaW1hdGlvblRpbWVsaW5lPyB0aW1lbGluZTsKICAgICBbSW1wbGVtZW50
ZWRBcz1iaW5kaW5nc1N0YXJ0VGltZV0gYXR0cmlidXRlIGRvdWJsZT8gc3RhcnRUaW1lOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1iaW5kaW5nc0N1cnJlbnRUaW1lXSBh
dHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50VGltZTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5n
c0N1cnJlbnRUaW1lXSBhdHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50VGltZTsKICAgICBhdHRyaWJ1
dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDEwICs4Nyw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4Y2VwdGlvblQK
IH0KIAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0V4Y2VwdGlvbk9yIDogcHVi
bGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVj
YXlfdDxUPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZT4geyB9OwotCi0KIC8vIENvbnZlcnNpb24gZnJv
bSBJbXBsZW1lbnRhdGlvbiAtPiBKU1ZhbHVlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SlNDb252ZXJ0ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3Bl
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01P
cGVyYXRpb24uaAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNCArNjMsMjEgQEAgcHVi
bGljOgogICAgIH0KIH07CiAKK3N0cnVjdCBWb2lkT3BlcmF0aW9uQ2FsbGVyIHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHN0YXRpYyBhdXRvIGNhbGwoSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OlRocm93U2NvcGUmLCBGdW5jdG9yJiYgZnVuY3RvcikgLT4gc3RkOjplbmFibGVf
aWZfdDwhc3RkOjppc19zYW1lPEV4Y2VwdGlvbk9yPHZvaWQ+LCBkZWNsdHlwZShmdW5jdG9yKCkp
Pjo6dmFsdWU+CisgICAgeworICAgICAgICBmdW5jdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBGdW5jdG9yJiYgZnVuY3Rvcikg
LT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RXhjZXB0aW9uT3I8dm9pZD4sIGRlY2x0
eXBlKGZ1bmN0b3IoKSk+Ojp2YWx1ZT4KKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZnVu
Y3RvcigpOworICAgICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTUxODQs
OCArNTE4NCwxMyBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICR2YWx1ZSk7CiAgICAgICAgIH0KKwog
ICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAuIGpvaW4o
IiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9w
YWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBO
ZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkb3BlcmF0aW9uKTsKKworICAgICAg
ICBpZiAoTmVlZHNWb2lkT3BlcmF0aW9uQ2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0aW9uUHJvcGFn
YXRpb24oJG9wZXJhdGlvbikpIHsKKyAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuICRm
dW5jdGlvblN0cmluZzsgfSkiOworICAgICAgICB9CisKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5n
UG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAiKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpIikgLiAiKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ9XG5cbiIpOwogCkBAIC01NTUyLDcgKzU1NTcsMjggQEAgc3ViIE5lZWRzRXhwbGlj
aXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsCiAKICAgICByZXR1cm4gMCB1bmxlc3MgJG9wZXJhdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OwogCi0gICAgcmV0dXJu
ICRvcGVyYXRpb24tPnR5cGUgJiYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8
ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpIHx8IE9wZXJh
dGlvbkhhc0ZvcmNlZFJldHVyblZhbHVlKCRvcGVyYXRpb24pKTsKKyAgICAjIENvbnN0cnVjdG9y
IG9wZXJlcmF0aW9ucywgd2hpY2ggZG8gbm90IGhhdmUgYSB0eXBlLCBuZXZlciBuZWVkIHRvIHVz
ZSBwcm9wYWdhdGVFeGNlcHRpb24uCisgICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPnR5
cGU7CisKKyAgICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsK
KyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9u
LT50eXBlKTsKKyAgICByZXR1cm4gMSBpZiBPcGVyYXRpb25IYXNGb3JjZWRSZXR1cm5WYWx1ZSgk
b3BlcmF0aW9uKTsKKworICAgIHJldHVybiAwOworfQorCitzdWIgTmVlZHNWb2lkT3BlcmF0aW9u
Q2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0aW9uUHJvcGFnYXRpb24KK3sKKyAgICBteSAoJG9wZXJh
dGlvbikgPSBAXzsKKworICAgICMgQ29uc3RydWN0b3Igb3BlcmVyYXRpb25zLCB3aGljaCBkbyBu
b3QgaGF2ZSBhIHR5cGUsIG5ldmVyIG5lZWQgdG8gdXNlIFZvaWRPcGVyYXRpb25DYWxsZXIuCisg
ICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPnR5cGU7CisKKyAgICByZXR1cm4gMSBpZiAk
b3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdl
bmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKKyAgICByZXR1cm4gMSBpZiBPcGVy
YXRpb25IYXNGb3JjZWRSZXR1cm5WYWx1ZSgkb3BlcmF0aW9uKTsKKworICAgIHJldHVybiAwOwog
fQogCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKQEAgLTU2NzQsNyArNTcwMCwxMCBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZNb3Zl
KHByb21pc2UpIikgaWYgJG9wZXJhdGlvbi0+dHlwZSAmJiAkY29kZUdlbmVyYXRvci0+SXNQcm9t
aXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UHJvbWlzZVByb3h5fTsKIAogICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwotICAgICRmdW5jdGlvblN0
cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25T
dHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkb3BlcmF0aW9u
KTsKKworICAgIGlmIChOZWVkc1ZvaWRPcGVyYXRpb25DYWxsZXJGb3JQb3RlbnRpYWxFeGNlcHRp
b25Qcm9wYWdhdGlvbigkb3BlcmF0aW9uKSkgeworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAi
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biAkZnVuY3Rpb25TdHJpbmc7IH0pIjsKKyAgICB9CiAKICAgICByZXR1cm4gJGZ1bmN0aW9uU3Ry
aW5nOwogfQpAQCAtNjUxOCw3ICs2NTQ3LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZl
cnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpTT04iOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIAorCiAg
ICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY1ODIsNyArNjYxMSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFs
dWUKIAogICAgIG15ICRjb25kaXRpb25hbCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDb25kaXRpb25hbH07CiAgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsKLSAgICBteSAk
bWF5VGhyb3dFeGNlcHRpb24gPSByZWYoJGNvbnRleHQpIGVxICJJRExBdHRyaWJ1dGUiIHx8ICRj
b250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgbXkg
JG1heVRocm93RXhjZXB0aW9uID0gcmVmKCRjb250ZXh0KSBlcSAiSURMQXR0cmlidXRlIiB8fCAg
cmVmKCRjb250ZXh0KSBlcSAiSURMT3BlcmF0aW9uIiB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OwogCiAgICAgIyBXZSBjb3VsZCBpbnN0ZWFkIG92
ZXJsb2FkIGEgZnVuY3Rpb24gdG8gd29yayB3aXRoIG9wdGlvbmFsIGFzIHdlbGwgYXMgbm9uLW9w
dGlvbmFsIG51bWJlcnMsIGJ1dCB0aGlzCiAgICAgIyBpcyBzbGlnaHRseSBiZXR0ZXIgYmVjYXVz
ZSBpdCBndWFyYW50ZWVzIHdlIHdpbGwgZmFpbCB0byBjb21waWxlIGlmIHRoZSBJREwgZmlsZSBk
b2Vzbid0IG1hdGNoIHRoZSBDKysuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdEltcGxlbWVudHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50cy5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50
cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICBhdHRyaWJ1dGUgTm9k
ZSBpbXBsZW1lbnRzTm9kZTsKIAogICAgIHZvaWQgaW1wbGVtZW50c01ldGhvZDEoKTsKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RP
YmogaW1wbGVtZW50c01ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBUZXN0T2JqIGltcGxlbWVudHNN
ZXRob2QyKERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBbQ3VzdG9tXSB2
b2lkIGltcGxlbWVudHNNZXRob2QzKCk7CiAgICAgc3RhdGljIHZvaWQgaW1wbGVtZW50c01ldGhv
ZDQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5
LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQg
bWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24gZW51
bUFyZyk7CiAgICAgdm9pZCBtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKG9wdGlvbmFsIFRlc3RF
bnVtVHlwZSBlbnVtQXJnKTsKICAgICB2b2lkIG1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmRE
ZWZhdWx0VmFsdWUob3B0aW9uYWwgVGVzdEVudW1UeXBlIGVudW1BcmcgPSAiRW51bVZhbHVlMSIp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzKERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKKyAgICBUZXN0
T2JqIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRE9NU3RyaW5nIHN0ckFyZywg
VGVzdE9iaiBvYmpBcmcpOwogCiAgICAgdm9pZCBtZXRob2RXaXRoVVNWU3RyaW5nQXJnKFVTVlN0
cmluZyBzdHIpOwogICAgIHZvaWQgbWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFVTVlN0
cmluZz8gc3RyKTsKQEAgLTE2NCw5ICsxNjQsOSBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhp
Z2giLCAia2luZGEtbG93CiAgICAgdm9pZCBtZXRob2RXaXRoUmVjb3JkKHJlY29yZDxET01TdHJp
bmcsIGxvbmc+IHJlY29yZFBhcmFtZXRlcik7CiAKICAgICAvLyBFeGNlcHRpb25zCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIG1ldGhvZFdpdGhFeGNlcHRpb24oKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGxvbmcgbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmlu
Z09iamVjdCgpOworICAgIHZvaWQgbWV0aG9kV2l0aEV4Y2VwdGlvbigpOworICAgIGxvbmcgbWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoKTsKKyAgICBUZXN0T2JqIG1ldGhvZFdpdGhF
eGNlcHRpb25SZXR1cm5pbmdPYmplY3QoKTsKIAogICAgIC8vICdDdXN0b20nIGV4dGVuZGVkIGF0
dHJpYnV0ZQogICAgIFtDdXN0b21dIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgY3VzdG9tQXR0
cjsKQEAgLTE5MSwxMSArMTkxLDExIEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJr
aW5kYS1sb3cKICAgICAvLyAnQ2FsbFdpdGgnIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gdm9pZCB3aXRoU2NyaXB0U3RhdGVWb2lkKCk7CiAgICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlXSBUZXN0T2JqIHdpdGhTY3JpcHRTdGF0ZU9iaigpOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd2l0aFNjcmlwdFN0YXRl
Vm9pZEV4Y2VwdGlvbigpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNl
cHRpb25dIFRlc3RPYmogd2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKCk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0
aW9uKCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCZTY3JpcHRTdGF0ZV0gdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmU2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCZTY3JpcHRTdGF0ZV0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKCk7CiAgICAgW0NhbGxXaXRoPSAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCAgJiAgU2NyaXB0U3RhdGUgIF0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygpOwogICAgIFtDYWxsV2l0aD1Eb2N1
bWVudF0gdm9pZCB3aXRoRG9jdW1lbnRBcmd1bWVudCgpOwogICAgIFtDYWxsV2l0aD1JbmN1bWJl
bnREb2N1bWVudF0gdm9pZCB3aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCgpOwpAQCAtMzI5LDgg
KzMyOSw4IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB2
b2lkIGNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwob3B0aW9uYWwgW0VuZm9y
Y2VSYW5nZV0gbG9uZyBvYmpBcmdzTG9uZyA9IDApOwogCiAgICAgdm9pZCBtZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2Uoc2VxdWVuY2U8dW5zaWduZWQgbG9uZz4gdW5zaWduZWRMb25nU2Vx
dWVuY2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8RE9NU3RyaW5nPiBzdHJp
bmdBcnJheUZ1bmN0aW9uKHNlcXVlbmNlPERPTVN0cmluZz4gdmFsdWVzKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIERPTVN0cmluZ0xpc3QgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKERPTVN0cmlu
Z0xpc3QgdmFsdWVzKTsKKyAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHN0cmluZ0FycmF5RnVuY3Rp
b24oc2VxdWVuY2U8RE9NU3RyaW5nPiB2YWx1ZXMpOworICAgIERPTVN0cmluZ0xpc3QgZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uKERPTVN0cmluZ0xpc3QgdmFsdWVzKTsKIAogICAgIHZvaWQgb3BlcmF0
aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIob3B0aW9uYWwgKERPTVN0cmluZyBvciBzZXF1
ZW5jZTx1bnJlc3RyaWN0ZWQgZG91YmxlPikgb3B0aW9uYWxVbmlvbik7CiAKQEAgLTMzOSw3ICsz
MzksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgRWxl
bWVudD8gZ2V0RWxlbWVudEJ5SWQoW1JlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmddIERPTVN0
cmluZyBlbGVtZW50SWQpOwogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBh
dHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7Cisg
ICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwog
CiAgICAgdm9pZCBjb252ZXJ0MShUZXN0Tm9kZSB2YWx1ZSk7CiAgICAgdm9pZCBjb252ZXJ0MihU
ZXN0Tm9kZT8gdmFsdWUpOwpAQCAtNDAwLDEyICs0MDAsMTIgQEAgZW51bSBUZXN0Q29uZmlkZW5j
ZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIC8vIFByb21pc2UgZnVuY3Rpb24KICAgICBQcm9t
aXNlPHZvaWQ+IHRlc3RQcm9taXNlRnVuY3Rpb24oKTsKICAgICBQcm9taXNlPHZvaWQ+IHRlc3RQ
cm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChmbG9hdCBhKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24o
KTsKKyAgICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKCk7
CiAgICAgUHJvbWlzZTx2b2lkPiB0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJn
dW1lbnQob3B0aW9uYWwgbG9uZyBhKTsKICAgICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uKGZsb2F0IGEpOwogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VP
dmVybG9hZGVkRnVuY3Rpb24oRmV0Y2hSZXF1ZXN0IHJlcXVlc3QpOwogICAgIHN0YXRpYyBQcm9t
aXNlPHZvaWQ+IHRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24oKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHN0YXRpYyBQcm9taXNlPHZvaWQ+IHRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRo
RXhjZXB0aW9uKCk7CisgICAgc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0YXRpY1Byb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb24oKTsKICAgICBbQ3VzdG9tXSBQcm9taXNlPHZvaWQ+IHRlc3RD
dXN0b21Qcm9taXNlRnVuY3Rpb24oKTsKICAgICBbQ3VzdG9tXSBzdGF0aWMgUHJvbWlzZTx2b2lk
PiB0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKCk7CiAgICAgW0N1c3RvbSwgUmV0dXJu
c093blByb21pc2VdIFByb21pc2U8dm9pZD4gdGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVu
Y3Rpb24oKTsKQEAgLTQzNiw3ICs0MzYsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2gi
LCAia2luZGEtbG93CiAgICAgbGVnYWN5Y2FsbGVyIHZvaWQgKCk7CiAKICAgICBOb2RlIHRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBiKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0
aEV4Y2VwdGlvbihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBiKTsKKyAgICBOb2RlIHRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24oW1JldHVyblZhbHVlXSBOb2RlIGEs
IE5vZGUgYik7CiAKICAgICBbQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1DT05ESVRJT05dIGF0dHJp
YnV0ZSBOb2RlIGNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGU7CiAgICAgW0NvbmRpdGlv
bmFsPUNPTkRJVElPTjIsIENvbmRpdGlvbmFsbHlSZWFkV3JpdGU9Q09ORElUSU9OXSBhdHRyaWJ1
dGUgTm9kZSBjb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRh
bC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RTdXBwbGVtZW50YWwuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBy
ZWZsZWN0QXR0cmlidXRlOwogCiAgICAgdm9pZCBzdXBwbGVtZW50YWxNZXRob2QxKCk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0
T2JqIHN1cHBsZW1lbnRhbE1ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBUZXN0T2JqIHN1cHBsZW1l
bnRhbE1ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFtDdXN0
b21dIHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kMygpOwogICAgIHN0YXRpYyB2b2lkIHN1cHBsZW1l
bnRhbE1ldGhvZDQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RUeXBlZGVmcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0VHlwZWRlZnMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSwxMyArNjEsMTMgQEAKIAogICAgIFNWR1BPSU5UIHBvaW50RnVuY3Rp
b24oKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU0VRVUVOQ0VfT0ZfU1RSSU5HUyBzdHJp
bmdTZXF1ZW5jZUZ1bmN0aW9uKFNFUVVFTkNFX09GX1NUUklOR1MgdmFsdWVzKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHNlcXVlbmNlPFNUUklORz4gc3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIo
c2VxdWVuY2U8U1RSSU5HPiB2YWx1ZXMpOworICAgIFNFUVVFTkNFX09GX1NUUklOR1Mgc3RyaW5n
U2VxdWVuY2VGdW5jdGlvbihTRVFVRU5DRV9PRl9TVFJJTkdTIHZhbHVlcyk7CisgICAgc2VxdWVu
Y2U8U1RSSU5HPiBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihzZXF1ZW5jZTxTVFJJTkc+IHZhbHVl
cyk7CiAKICAgICBib29sZWFuIGNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKHNl
cXVlbmNlPFRlc3RFdmVudFRhcmdldD4gc2VxdWVuY2VBcmcpOwogCiAgICAgLy8gRXhjZXB0aW9u
cwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBtZXRob2RXaXRoRXhjZXB0aW9uKCk7Cisg
ICAgdm9pZCBtZXRob2RXaXRoRXhjZXB0aW9uKCk7CiAKICAgICAvLyBCdWlsdGluIFR5cGVkZWZz
CiAgICAgYXR0cmlidXRlIEJ1ZmZlclNvdXJjZSBidWZmZXJTb3VyY2VBdHRyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlr
ZS5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhp
cywgV1RGTW92ZShrZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEdldFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0
ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTIz
MSw3ICsyMzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvTWFwTGlrZSgqc3RhdGUs
ICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkSGFzVG9NYXBMaWtlKCpz
dGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhcyhFeGVjU3RhdGUqIHN0
YXRlKQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc01hcEwKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEVu
dHJpZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFu
eT4oZm9yd2FyZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndh
cmRLZXlzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEV4ZWNTdGF0
ZSogc3RhdGUpCkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzTWFwTAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+
KGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndh
cmRWYWx1ZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhFeGVj
U3RhdGUqIHN0YXRlKQpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc01hcEwKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGNhbGxiYWNrID0gY29udmVydDxJRExBbnk+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRG
b3JFYWNoVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92
ZShjYWxsYmFjaykpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yOTksNyAr
Mjk5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRBZGRUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEFkZFRvTWFwTGlrZSgqc3RhdGUs
ICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoRXhlY1N0YXRlKiBzdGF0ZSkK
QEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNN
YXBMCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7Ci0gICAgZm9yd2FyZENsZWFyVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gZm9yd2FyZENsZWFyVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zMjgsNyAr
MzI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb01hcExpa2UoKnN0YXRlLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgq
c3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUoRXhlY1N0YXRl
KiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1JlYWRPbmx5TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlN
YXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWQKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
QW55Pihmb3J3YXJkR2V0VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRo
cm93U2NvcGUsIGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92
ZShrZXkpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTIyNSw3ICsy
MjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0
ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwg
KmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEV4ZWNTdGF0ZSog
c3RhdGUpCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzUmVhZAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZv
cndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJk
RW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRy
aWVzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25LZXlzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVk
VGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUs
IHRocm93U2NvcGUsIGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yNzcsNyArMjc3LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVk
VGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgq
c3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9y
RWFjaChFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTksNyArMjE5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbmV4dENoaWxkID0gY29udmVy
dDxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhy
b3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJuZXh0Q2hpbGQiLCAiVGVzdEFj
dGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
LmV4Y2l0aW5nRnVuY3Rpb24oKm5leHRDaGlsZCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmV4Y2l0aW5nRnVuY3Rp
b24oKm5leHRDaGlsZCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBt
ZXNzYWdlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLnBvc3RNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9ucy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
MSw3ICsyOTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ0VSZWFjdGlvbnMoKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwubWV0aG9kV2l0aENFUmVhY3Rpb25zKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpz
dGF0ZSwgaW1wbC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnZhbHVlKCkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTEsNyArMzUxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RD
YWxsVHJhY2VySW50ZXJmYWNlKGltcGwsIEFTQ0lJTGl0ZXJhbCgidGVzdE9wZXJhdGlvbkludGVy
ZmFjZSIpKTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25JbnRlcmZhY2UoKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
dGVzdE9wZXJhdGlvbkludGVyZmFjZSgpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zNjcsNyArMzY3LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCiAg
ICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VyT3BlcmF0aW9uKGltcGwsIEFTQ0lJTGl0
ZXJhbCgidGVzdE9wZXJhdGlvblNwZWNpZmllZCIpKTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25T
cGVjaWZpZWQoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zOTYsNyAr
Mzk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAg
ICBjYWxsVHJhY2VyUGFyYW1ldGVycy5hcHBlbmQoYyk7CiAgICAgICAgIENhbGxUcmFjZXI6OnRl
c3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsIEFTQ0lJTGl0ZXJhbCgidGVzdE9wZXJhdGlvbldp
dGhBcmd1bWVudHMiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAg
ICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiks
IFdURk1vdmUoYykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhXVEZN
b3ZlKGEpLCBXVEZNb3ZlKGIpLCBXVEZNb3ZlKGMpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDIwLDcgKzQyMCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgICAgIGNhbGxUcmFjZXJQ
YXJhbWV0ZXJzLmFwcGVuZChub2RlTnVsbGFibGVBcmcpOwogICAgICAgICBDYWxsVHJhY2VyOjp0
ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRpb25X
aXRoTnVsbGFibGVBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQYXJhbWV0ZXJzKSk7CiAg
ICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KFdURk1vdmUo
bm9kZU51bGxhYmxlQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVB
cmd1bWVudChXVEZNb3ZlKG5vZGVOdWxsYWJsZUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICBXVEY6OnZpc2l0KFsm
XSAoYXV0byYgdmFsdWUpIHsgY2FsbFRyYWNlclBhcmFtZXRlcnMuYXBwZW5kKHZhbHVlKTsgfSwg
dmFyaWFudEFyZyk7CiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNl
KGltcGwsIEFTQ0lJTGl0ZXJhbCgidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQiKSwg
V1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAgICBpbXBsLnRlc3RPcGVy
YXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudEFyZykpOworICAgIFZvaWRP
cGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1w
bC50ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRBcmcpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NDY3LDcgKzQ2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICAgICAgICAgIFdURjo6dmlzaXQoWyZdIChhdXRvJiB2YWx1ZSkgeyBjYWxsVHJhY2VyUGFy
YW1ldGVycy5hcHBlbmQodmFsdWUpOyB9LCAqdmFyaWFudE51bGxhYmxlQXJnKTsKICAgICAgICAg
Q2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0
ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50IiksIFdURk1vdmUoY2FsbFRy
YWNlclBhcmFtZXRlcnMpKTsKICAgICB9Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxh
YmxlVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE51bGxhYmxlQXJnKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJp
YW50TnVsbGFibGVBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNDg5LDcgKzQ4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgICAgIFdURjo6dmlzaXQoWyZdIChhdXRvJiB2YWx1
ZSkgeyBjYWxsVHJhY2VyUGFyYW1ldGVycy5hcHBlbmQodmFsdWUpOyB9LCAqdmFyaWFudE9wdGlv
bmFsQXJnKTsKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1w
bCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50
IiksIFdURk1vdmUoY2FsbFRyYWNlclBhcmFtZXRlcnMpKTsKICAgICB9Ci0gICAgaW1wbC50ZXN0
T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE9wdGlv
bmFsQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJn
dW1lbnQoV1RGTW92ZSh2YXJpYW50T3B0aW9uYWxBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTEwLDcgKzUxMCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgV1RGOjp2aXNpdChb
Jl0gKGF1dG8mIHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZCh2YWx1ZSk7IH0s
IHZhcmlhbnREZWZhdWx0QXJnKTsKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJ
bnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJp
YW50QXJndW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAg
ICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZh
cmlhbnREZWZhdWx0QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZh
cmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQu
Y3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExOCw3ICsxMTE4
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdl
dEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwu
Z2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTExMzYsNyArMTEzNiw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiB1bnNhZmUKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46
OmRpcmVjdENvbnZlcnQoKnN0YXRlLCBlbmNvZGVkTmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0
dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuZ2V0
QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTEx
NTAsNyArMTE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIGF1dG8geSA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93
U2NvcGUsIGltcGwuaXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShF
eGVjU3RhdGUqIHN0YXRlKQpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB5ID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0
ZXI8SURMVW5zaWduZWRTaG9ydD46OmRpcmVjdENvbnZlcnQoKnN0YXRlLCBlbmNvZGVkWSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwu
aXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5pdGVtKFdURk1v
dmUoeCksIFdURk1vdmUoeSkpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHkoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
MTE3OCw3ICsxMTc4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSkKQEAgLTExOTQsNyArMTE5NCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiB1bnNhZmUKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qm9vbGVhbj4oaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaGFzQXR0cmlidXRl
KCkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTEyMDYsNyArMTIwNiw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGVsZW1lbnRJZCA9IGNvbnZlcnQ8SURMUmVxdWly
ZXNFeGlzdGluZ0F0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRCeUlk
KFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSog
c3RhdGUpCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gdW5zYWZlCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGVsZW1lbnRJZCA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFJlcXVpcmVzRXhp
c3RpbmdBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+OjpkaXJlY3RDb252ZXJ0KCpz
dGF0ZSwgZW5jb2RlZEVsZW1lbnRJZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudEJ5SWQo
V1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUJvZHko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9NSklU
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZWxlbWVudE5h
bWUgPSBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRzQnlOYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlCiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGVsZW1lbnROYW1lID0gRE9NSklUOjpEaXJlY3RD
b252ZXJ0ZXI8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pjo6ZGlyZWN0Q29u
dmVydCgqc3RhdGUsIGVuY29kZWRFbGVtZW50TmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlz
dD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
LmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkpOwogfQogCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRCeVNldHRpbmdPcGVy
YXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAs
NyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChhdXRvIGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1
ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0
ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC0xNTQsNyArMTU0LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVy
dHlTbAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRp
bnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRl
LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0
YXRlLCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAg
Ym9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbAogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4
IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKICAg
ICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE4Miw3ICsxODIsNyBAQCBib29sIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbmRleCA9IGNv
bnZlcnQ8SURMVW5zaWduZWRMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pdGVtKFdURk1vdmUoaW5k
ZXgpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9k
ZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
Lml0ZW0oV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDcgKzM4Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnJlZ3VsYXJPcGVyYXRpb24oV1RGTW92
ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwucmVndWxhck9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQ
YXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1v
dmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RG
TW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNDE4LDcgKzQxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24o
V1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC00NjIsNyArNDYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGQoV1RGTW92ZSh0
ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZChXVEZNb3ZlKHRl
c3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBh
cmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29y
bGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ5OCw3ICs0
OTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZW5hYmxl
ZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKFdURk1vdmUodGVzdFBh
cmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVzRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MTMsNyArNTEzLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0UHJpdmF0ZUZ1bmN0aW9uKCk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnRlc3RQcml2YXRlRnVuY3Rpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlz
ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTU0Myw3ICs1NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJv
d1Njb3BlLCBpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRC
b29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+
KGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RG
ZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZQogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1
ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXI6OmdlCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBp
ZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4KSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW8KICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhy
b3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAg
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNTMs
NyArMTUzLDcgQEAgYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpbwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAo
TElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOwogICAg
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
ICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09i
amVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhf
QVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgdGhp
c09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NDMsNyArODQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1w
bC5pbXBsZW1lbnRzTWV0aG9kMSgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5pbXBsZW1lbnRzTWV0aG9kMSgpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC04
OTksNyArODk5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwotICAgIFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNNZXRob2Q0KCk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBUZXN0SW50
ZXJmYWNlOjppbXBsZW1lbnRzTWV0aG9kNCgpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC05MTYsNyArOTE2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
TWV0aG9kMShpbXBsKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbE1ldGhvZDEoaW1wbCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3Vw
cGxlbWVudGFsTWV0aG9kNCgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3Vw
cGxlbWVudGFsTWV0aG9kNCgpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBsaXN0
ZW5lciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU01lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAw
LCAibGlzdGVuZXIiLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5tZXRob2QobGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm1ldGhvZChsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAg
ICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewot
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9J
TkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDAsNyArMTQwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
ZwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBp
ZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRF
WCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgp
KSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleCkpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFs
dWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRl
bShpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVuCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsK
ICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0xNzYsNyArMTc2LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAg
ICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRl
bShpbmRleCkpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CkBAIC0xOTEsNyArMTkxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3Bl
cnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUp
LCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSks
IFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5pbmRleGVkU2V0
dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmluZGV4ZWRT
ZXR0ZXIoV1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldAogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhy
b3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6
Z2V0CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbgogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
dGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE3MCw3ICsxNzAsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpn
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5uYW1lZERlbGV0ZXIoV1RGTW92ZShuYW1lKSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLm5hbWVkRGVsZXRlcihXVEZNb3ZlKG5hbWUpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAs
NyArMTQwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAo
YXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5k
ZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0x
NTQsNyArMTU0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
Pigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVY
KSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4KSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xODIs
NyArMTgyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
c3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aC5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3du
UHIKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5z
OjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
ewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpnZXRPd25QcgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcjo6Z2V0TwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3Bl
cnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93
U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xNzAsNyArMTcwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpn
ZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6
Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgaW1wbC5nZXR0ZXJOYW1lKFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmdldHRlck5hbWUoV1RGTW92ZShuYW1lKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25HZXR0ZXJOYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0TwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH07CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqc3RhdGUsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6Z2UKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVy
cmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpz
dGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OmdlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0y
ODcsNyArMjg3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdU
Rk1vdmUodmFsdWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RG
TW92ZSh2YWx1ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5kZXgu
dmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0dGVyKGlu
ZGV4LnZhbHVlKCkpKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFs
dWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxNjMs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzYsNyArMTc2LDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9
IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5kZXgp
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleCkpOwog
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubmFtZWRT
ZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5uYW1lZFNl
dHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3Zl
KGluZGV4KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNTdGF0ZSog
c3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsx
NDksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChhdXRv
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52
YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmluZGV4ZWRTZXR0ZXIoaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRo
cm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3Niw3ICsxNzYsNyBAQCBib29sIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleCkpOworICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2Nv
cGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4KSk7CiAgICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwg
dmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE5MSw3ICsx
OTEsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0
ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMzYsNyArMzM2LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB2YWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgx
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0z
NTQsNyArMzU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCks
IFdURk1vdmUodmFsdWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4
KSwgV1RGTW92ZSh2YWx1ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHRocm93U2NvcGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkpKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJPdmVy
bG9hZERpc3BhdGNoZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
cy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVy
cmlkZUJ1aWx0aW5zOjpZZXM+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVp
bHRpbnM6Olllcz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKnN0YXRlLCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
KyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2Nv
cGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC51bmZvcmdlYWJs
ZU9wZXJhdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqc3RhdGUs
ICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTg4LDcgKzE4OCw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+KCpzdGF0ZSwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICBpbXBsLnRlc3RXb3JrZXJQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC50ZXN0V29ya2VyUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjk2LDcgKzI5
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwuY2FsY3VsYXRlU2VjcmV0
UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1
bHQoV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5n
ZXRTZWNyZXRCb29sZWFuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbkdldFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTMyNCw3ICszMjQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqc3RhdGUsIHRocm93U2Nv
cGUsIGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgYm9vbCBK
U1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdChKU09iagogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwg
dGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1l
dGhvZChpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMDI2
LDcgKzIwMjYsNyBAQCBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRlCiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlm
IChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXgg
PCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChpbmRleCkpOworICAgICAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0
aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0
aG9kKGluZGV4KSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMDUzLDcgKzIwNTMs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPCiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHBhcmFtID0gY29udmVydDxJ
RExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmxl
Z2FjeUNhbGxlck5hbWVkKFdURk1vdmUocGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubGVnYWN5Q2FsbGVy
TmFtZWQoV1RGTW92ZShwYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC0yMDY3LDcgKzIwNjcsNyBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIHBhcmFtID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPihpbXBsLmxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncyhXVEZN
b3ZlKHBhcmFtKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5n
cyhXVEZNb3ZlKHBhcmFtKSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
YWxsSlNUZXN0T2JqMyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0TwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJpbmRpbmdzKCk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmxl
Z2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncygpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODMxLDcgKzQ4MzEsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODQ1LDcgKzQ4
NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNv
bnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDg4
OSw3ICs0ODg5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVy
dDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
LmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUo
dGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ5MDcsNyArNDkwNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC53b3JsZFNwZWNpZmljTWV0
aG9kKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndvcmxkU3BlY2lmaWNNZXRob2Qo
V1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkyMSw3ICs0OTIxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkz
NSw3ICs0OTM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oRXhl
Y1N0YXRlKiBzdGF0ZSkKQEAgLTQ5NDksNyArNDk0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRl
c3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0RmVhdHVyZUdl
dFNlY3JldEJvb2xlYW4oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNT
dGF0ZSogc3RhdGUpCkBAIC00OTY0LDcgKzQ5NjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBpbXBsLnZvaWRNZXRob2QoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudm9pZE1ldGhvZCgpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00OTg2
LDcgKzQ5ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhBcmdzIiwgIlRlc3RP
YmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLnZvaWRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBX
VEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC52b2lkTWV0aG9kV2l0aEFyZ3Mo
V1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTAwMCw3ICs1MDAw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1ldGhvZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEJ5dGU+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5ieXRlTWV0aG9k
KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUwMjEsNyArNTAyMSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2Jq
QXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDIpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDIsICJvYmpB
cmciLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2RX
aXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KCpzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShieXRlQXJnKSwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUp
CkBAIC01MDM0LDcgKzUwMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2QoKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBpbXBsLm9jdGV0TWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3Rh
dGUpCkBAIC01MDU1LDcgKzUwNTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRo
QXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1v
dmUoc3RyQXJnKSwgKm9iakFyZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMT2N0ZXQ+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5vY3RldE1ldGhvZFdpdGhBcmdzKFdU
Rk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MDY4LDcgKzUwNjgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdNZXRob2QoKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTA4OSw3ICs1MDg5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252
ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMiksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0
T2JqZWN0IiwgImxvbmdNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKFdU
Rk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxv
bmdNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpB
cmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxMDIs
NyArNTEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2JqTWV0aG9kKCkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTEyMyw3ICs1MTIzLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElE
TEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMiks
IFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0
IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcp
LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25n
QXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxMzYsNyArNTEzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBsLnVu
Zm9yZ2VhYmxlTWV0aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9u
VW5mb3JnZWFibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxNTMsNyArNTE1Myw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZN
b3ZlKGFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhXVEZNb3ZlKGFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01MTcxLDcgKzUxNzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byByZXNvbHZlciA9IGNvbnZlcnQ8SURMWFBhdGhOU1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZl
cj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsIDAsICJyZXNvbHZlciIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhY
UGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5tZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKCpyZXNvbHZlcik7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKnJlc29sdmVyKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTE4NSw3
ICs1MTg1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5udWxs
YWJsZVN0cmluZ01ldGhvZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5udWxsYWJs
ZVN0cmluZ01ldGhvZCgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0
YXRlKQpAQCAtNTE5Nyw3ICs1MTk3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJs
ZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIFRlc3RPYmo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0
aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURM
RE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0
YXRpY01ldGhvZCgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEV4ZWNTdGF0
ZSogc3RhdGUpCkBAIC01MjE0LDcgKzUyMTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBp
bmRleCA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8
SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChX
VEZNb3ZlKGluZGV4KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVs
bGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxlU3Ry
aW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGluZGV4KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3Bl
Y2lhbE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTIzMSw3ICs1MjMxLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gZW51bUFyZyA9IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9i
ajo6RW51bVR5cGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2Jq
OjpFbnVtVHlwZT4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhXVEZNb3ZlKGVu
dW1BcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTUyNDksNyArNTI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGVudW1BcmcgPSBjb252
ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUs
IHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhTdGFuZGFsb25l
RW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVFbnVtZXJh
dGlvbj4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoV1RGTW92
ZShlbnVtQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyhXVEZN
b3ZlKGVudW1BcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTI2NSw3ICs1MjY1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBlbnVtQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+
OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMRW51bWVyYXRpb248
VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpFbnVtVHlwZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBb
XShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUVudW1FcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOyB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUyODEsNyArNTI4MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTEgOiBjb252ZXJ0PElE
TEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImVu
dW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVs
dFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKFdU
Rk1vdmUoZW51bUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5k
RGVmYXVsdFZhbHVlKFdURk1vdmUoZW51bUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MzE4LDcgKzUzMTgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETFVTVlN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJn
KFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoV1RGTW92
ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNTMzNiw3ICs1MzM2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhX
VEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmco
V1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTM1NCw3ICs1MzU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
c3RyID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhV
U1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdU
Rk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTUzNzIsNyArNTM3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0
ciA9IGNvbnZlcnQ8SURMQnl0ZVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MzkwLDcg
KzUzOTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETE51bGxh
YmxlPElETEJ5dGVTdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01NDA4LDcgKzU0MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0
PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNTQyNiw3ICs1NDI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VyaWFsaXplZEFy
ZyA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuc2VyaWFs
aXplZFZhbHVlKFdURk1vdmUoc2VyaWFsaXplZEFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXJpYWxpemVk
VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU0NDQsNyArNTQ0NCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIHJlY29yZFBhcmFtZXRlciA9IGNvbnZlcnQ8SURMUmVjb3JkPElETERP
TVN0cmluZywgSURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwubWV0aG9kV2l0aFJlY29yZChXVEZNb3ZlKHJlY29yZFBhcmFtZXRlcikpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5tZXRob2RXaXRoUmVjb3JkKFdURk1vdmUocmVjb3JkUGFyYW1ldGVyKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU0NTgs
NyArNTQ1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHByb3BhZ2F0ZUV4Y2Vw
dGlvbigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbigpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NTI2LDcgKzU1MjYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFy
Z3VtZW50KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50
KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblByaXZhdGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTU1NDMsNyArNTU0
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZ3VtZW50ID0gY29udmVydDxJRExET01T
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQ
cml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5wdWJsaWNB
bmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0
ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTU2NCw3ICs1NTY0LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB1c2VDYXB0dXJlID0gY29u
dmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmFk
ZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUo
dXNlQ2FwdHVyZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5hZGRFdmVudExpc3RlbmVyKFdURk1vdmUodHlwZSks
IFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTU4Niw3ICs1NTg2LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB1c2VD
YXB0dXJlID0gY29udmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgyKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0
ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5yZW1vdmVFdmVudExpc3Rl
bmVyKFdURk1vdmUodHlwZSksIFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNTYwMCw3ICs1NjAwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC53
aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRTdGF0ZVZv
aWQoKnN0YXRlKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtNTYxNCw3ICs1NjE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0
YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0aFNjcmlwdFN0YXRlT2Jq
KCpzdGF0ZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgaW1wbC53aXRoU2NyaXB0U3RhdGVPYmooKnN0YXRlKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
T2JqKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NjI3LDcgKzU2MjcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCBp
bXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0YXRlKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndp
dGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0YXRlKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTY1Nyw3ICs1NjU3LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1w
bC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgqY29udGV4dCk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTY3NCw3ICs1Njc0LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCpzdGF0ZSwgKmNvbnRleHQp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCpz
dGF0ZSwgKmNvbnRleHQpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC01NzA3LDcgKzU3MDcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlcygqc3RhdGUsICpjb250ZXh0KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhFeGVjU3RhdGUqIHN0YXRlKQpA
QCAtNTcyNSw3ICs1NzI1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICBpbXBsLndpdGhEb2N1bWVudEFyZ3VtZW50
KGRvY3VtZW50KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwud2l0aERvY3VtZW50QXJndW1lbnQoZG9jdW1lbnQpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01
NzQyLDcgKzU3NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byogaW5jdW1iZW50RG9jdW1lbnQgPSBpbmN1bWJlbnRET01XaW5kb3coKnN0YXRl
KS5kb2N1bWVudCgpOwogICAgIGlmICghaW5jdW1iZW50RG9jdW1lbnQpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC53aXRoQ2FsbGVyRG9j
dW1lbnRBcmd1bWVudCgqaW5jdW1iZW50RG9jdW1lbnQpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC53aXRoQ2FsbGVy
RG9jdW1lbnRBcmd1bWVudCgqaW5jdW1iZW50RG9jdW1lbnQpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NzU2LDcgKzU3NTYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLndpdGhDYWxsZXJXaW5kb3dBcmd1bWVu
dChpbmN1bWJlbnRET01XaW5kb3coKnN0YXRlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhDYWxsZXJXaW5k
b3dBcmd1bWVudChpbmN1bWJlbnRET01XaW5kb3coKnN0YXRlKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU3NzIsNyArNTc3Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0
dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBl
Pihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhXVEZNb3ZlKG9wdCkpOworICAgIFZvaWRP
cGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxBcmcoV1RGTW92ZShvcHQpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTc4OCw3ICs1Nzg4LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBcmdBbmRE
ZWZhdWx0VmFsdWUoV1RGTW92ZShvcHQpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
QXJnQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUob3B0KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4MDgsNyArNTgwOCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb3B0ID0gc3RhdGUt
PmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExM
b25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpS
ZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJn
KFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01ODMwLDcgKzU4MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBhdXRvIG9wdDIgPSBzdGF0ZS0+YXJndW1lbnQoMikuaXNVbmRlZmluZWQoKSA/IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMikpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShv
cHQxKSwgV1RGTW92ZShvcHQyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZFR3b09wdGlvbmFsQXJncyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUob3B0MSksIFdURk1v
dmUob3B0MikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC01ODQ2LDcgKzU4NDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkg
OiBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4NjIsNyAr
NTg2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNWU3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbFVTVlN0cmluZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RX
aXRoT3B0aW9uYWxVU1ZTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTg3OCw3ICs1ODc4LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCku
aXNVbmRlZmluZWQoKSA/IG51bGxBdG9tKCkgOiBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nKFdURk1vdmUoc3RyKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4
OTQsNyArNTg5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0g
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBBU0NJSUxpdGVyYWwoImZvbyIpIDog
Y29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdURk1v
dmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRW
YWx1ZShXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01OTEwLDcgKzU5MTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
QXRvbWljU3RyaW5nKCJmb28iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6
IGNvbnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0
b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShzdHIpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NTkyNiw3ICs1OTI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTQyLDcg
KzU5NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5
NTgsNyArNTk1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0g
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBudWxsQXRvbSgpIDogY29udmVydDxJ
RExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
SXNOdWxsKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21p
Y1N0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTc0LDcgKzU5NzQsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTkwLDcgKzU5OTAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNWU3RyaW5n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02MDA2LDcgKzYwMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlBdG9tKCkgOiBjb252
ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjAyMiw3ICs2
MDIyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252
ZXJ0PElETFVucmVzdHJpY3RlZERvdWJsZT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihXVEZNb3ZlKG51bWJlcikpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihXVEZNb3ZlKG51bWJlcikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02MDM4LDcgKzYwMzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51
bWJlciA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihXVEZNb3ZlKG51
bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKFdURk1vdmUo
bnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTYwNTQsNyArNjA1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9w
dGlvbmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlv
bmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZ0xv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYwNzAsNyArNjA3MCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDxJRExM
b25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxMb25nTG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MDg2LDcgKzYw
ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURM
VW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRl
cjxJRExVbnNpZ25lZExvbmdMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbnNpZ25lZExv
bmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNjEwMiw3ICs2MTAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
dW1iZXIgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVy
byhXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25l
ZExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxMTgsNyArNjExOCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYXJyYXkgPSBzdGF0ZS0+YXJndW1lbnQoMCku
aXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pjo6UmV0
dXJuVHlwZXsgfSA6IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxT
ZXF1ZW5jZShXVEZNb3ZlKGFycmF5KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNl
cXVlbmNlKFdURk1vdmUoYXJyYXkpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjEzNCw3ICs2MTM0LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gQ29udmVydGVyPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBleyB9
IDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNF
bXB0eShXVEZNb3ZlKGFycmF5KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVl
bmNlSXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxNTAsNyArNjE1MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMQm9vbGVhbj46OlJldHVyblR5cGU+KCkg
OiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVy
dDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKFdURk1vdmUoYikpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKFdURk1vdmUoYikpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MTY2LDcgKzYxNjYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETEJvb2xlYW4+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbklzRmFsc2UoV1RGTW92ZShiKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW5Jc0ZhbHNlKFdURk1vdmUoYikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MTgyLDcgKzYxODIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETEFueT4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBbnkoV1RGTW92ZShh
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFueShXVEZNb3ZlKGEpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjE5OCw3
ICs2MTk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExP
YmplY3Q+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMT2JqZWN0
Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExPYmplY3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChXVEZNb3Zl
KGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KFdURk1vdmUoYSkpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
MjE0LDcgKzYyMTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9iaiA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pj4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iaiIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsICJUZXN0
T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoV1RG
TW92ZShvYmopKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVy
KFdURk1vdmUob2JqKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTYyMzAsNyArNjIzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gb2JqID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAwLCAib2JqIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChXVEZNb3ZlKG9iaikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoV1RGTW92ZShvYmopKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjI0Niw3
ICs2MjQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byByZXNvbHZlciA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMWFBhdGhOU1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZlcj4+
Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0
aE5TUmVzb2x2ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjYy
LDcgKzYyNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHJlY29yZCA9
IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpudWxsb3B0IDogY29udmVy
dDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
UmVjb3JkKFdURk1vdmUocmVjb3JkKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFJl
Y29yZChXVEZNb3ZlKHJlY29yZCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjgwLDcgKzYyODAsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNr
LnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC02MzAwLDcgKzYzMDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhXVEZNb3ZlKG5vbkNh
bGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxs
YmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjMxNiw3ICs2MzE2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2Fs
bGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzM0
LDcgKzYzMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
Lm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNjM1NCw3ICs2MzU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZN
b3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShu
b25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzcwLDcgKzYzNzAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJ
RExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4o
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9u
QW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02Mzg1LDcgKzYzODUsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENh
bGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2NvcGUs
IDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gVGVzdE9iajo6c3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NDAy
LDcgKzY0MDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBUZXN0T2JqOjpzdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0MTcsNyAr
NjQxNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEo
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC02NDMzLDcgKzY0MzMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjQ1MCw3ICs2NDUwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
Y29uZGl0aW9uYWxNZXRob2QzKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0NzAsNyArNjQ3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01T
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3Zl
cmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUoc3RyQXJnKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKHN0ckFyZykpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
NDgzLDcgKzY0ODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1l
dGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVy
bG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25nQXJnKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0OTQsNyAr
NjQ5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyQXJnID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKHN0ckFyZykpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY1MDUsNyArNjUwNSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbG9uZ0FyZyA9IGNvbnZlcnQ8SURMTG9uZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVk
TWV0aG9kKFdURk1vdmUobG9uZ0FyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUobG9uZ0FyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC02NTE2LDcgKzY1MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cihzdGF0ZSwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRN
ZXRob2QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTY1MjcsNyArNjUyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbGlzdEFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPERPTVN0cmlu
Z0xpc3Q+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImxpc3RBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kIiwgIkRPTVN0cmluZ0xpc3QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRo
b2QoV1RGTW92ZShsaXN0QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92
ZShsaXN0QXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTY1MzgsNyArNjUzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETERP
TVN0cmluZz4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9h
ZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjU0OSw3ICs2NTQ5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2Jq
QXJnKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2JqQXJnKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjU2MCw3ICs2NTYw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB3aW5kb3cgPSBjb252ZXJ0
PElETEludGVyZmFjZTxET01XaW5kb3c+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RP
YmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01XaW5kb3ciKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkZWRNZXRob2QoKndpbmRvdyk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKndp
bmRvdyk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTY1NzEsNyArNjU3MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChX
VEZNb3ZlKGFycmF5QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShh
cnJheUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02NTgyLDcgKzY1ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGFycmF5QXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRN
ZXRob2QoV1RGTW92ZShhcnJheUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUoYXJyYXlBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjU5Myw3ICs2NTkzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1v
dmUoc3RyQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNjYwNCw3ICs2NjA0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBi
bG9iQXJncyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExJbnRlcmZhY2U8QmxvYj4+KCpz
dGF0ZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjY2OSw3ICs2
NjY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0
byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
IDEsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFs
UGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShzdHJBcmcpLCBXVEZNb3ZlKG9iakFyZykpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKFdURk1vdmUoc3Ry
QXJnKSwgV1RGTW92ZShvYmpBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjY4Miw3ICs2NjgyLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBsb25nQXJnID0gc3RhdGUtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6
UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5U
eXBlPihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92
ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02NzI0LDcgKzY3MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9i
amVjdE9yTm9kZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RPYmo+LCBJRExJ
bnRlcmZhY2U8VGVzdE5vZGU+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92
ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5n
dWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY3MzUsNyArNjczNSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETExvbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUodmFsdWUpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUodmFsdWUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNjc3MSw3ICs2NzcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBv
YmplY3RPck5vZGUgPSBjb252ZXJ0PElETFVuaW9uPElETEludGVyZmFjZTxUZXN0T2JqPiwgSURM
SW50ZXJmYWNlPFRlc3ROb2RlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RG
TW92ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlz
dGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjc4Miw3ICs2NzgyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURM
VW5pb248SURMSW50ZXJmYWNlPFRlc3RJbnRlcmZhY2U+LCBJRExET01TdHJpbmcsIElETExvbmc+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKFdURk1vdmUodmFsdWUpKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZSh2
YWx1ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC02ODIyLDcgKzY4MjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAxLCAib2JqZWN0IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9y
Tm9kZSksICpvYmplY3QpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rp
bmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpLCAqb2JqZWN0KTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjgzNSw3ICs2
ODM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0
byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAi
bm9kZSIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hp
bmdVbmlvbiIsICJUZXN0Tm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhO
b25EaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSwgKm5vZGUpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92
ZShvYmplY3RPck5vZGUpLCAqbm9kZSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY4NjgsNyArNjg2OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdE9iaj4sIElETEludGVyZmFjZTxUZXN0Tm9kZT4+Pj4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZFdp
dGhOdWxsYWJsZVVuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJs
b2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjg3OSw3ICs2ODc5
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8
SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5v
dmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUoaW5kZXgpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3Zl
cmxvYWRXaXRoTnVsbGFibGVVbmlvbihXVEZNb3ZlKGluZGV4KSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY5MTcsNyArNjkxNyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyB0cnVlIDogY29udmVydDxJRExVbmlvbjxJRExE
T01TdHJpbmcsIElETEJvb2xlYW4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShvYmplY3RPck5v
ZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9iamVj
dE9yTm9kZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02OTI4LDcgKzY5MjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGluZGV4ID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShp
bmRleCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdURk1vdmUoaW5k
ZXgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNjk2OSw3ICs2OTY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgYXV0byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAxLCAibm9kZSIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkV2l0aE51bGxhYmxl
Tm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiLCAiVGVzdE5vZGUiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShvYmop
LCAqbm9kZSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hp
bmdQYXJhbWV0ZXIoV1RGTW92ZShvYmopLCAqbm9kZSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY5ODIsNyArNjk4Miw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gaW5kZXggPSBjb252
ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3Zl
KG5vZGUpLCBXVEZNb3ZlKGluZGV4KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxl
Tm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShub2RlKSwgV1RGTW92ZShpbmRleCkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC03MDEzLDcgKzcwMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7Ci0gICAgVGVzdE9iajo6Y2xhc3NNZXRob2QoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRlc3RPYmo6OmNsYXNz
TWV0aG9kKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTcwMjgsNyArNzAyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBhcmcg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVy
dGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURM
TG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25n
PihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
VGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoV1RGTW92ZShhcmcpKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzA1NSw3ICs3MDU1
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgVGVzdE9iajo6b3ZlcmxvYWRl
ZE1ldGhvZDEoV1RGTW92ZShhcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2Qx
KFdURk1vdmUoYXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTcwNjgsNyArNzA2OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byB0eXBlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUodHlwZSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoV1RGTW92ZSh0eXBlKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcxMTQs
NyArNzExNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExv
bmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNz
TWV0aG9kV2l0aENsYW1wKFdURk1vdmUob2JqQXJnc1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9u
ZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5jbGFzc01ldGhvZFdpdGhDbGFtcChXVEZNb3ZlKG9iakFyZ3NTaG9y
dCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzEzMCw3ICs3MTMwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFw
dG9yPElETExvbmc+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNz
TWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTcxNTAsNyArNzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETEVuZm9yY2VSYW5nZUFkYXB0b3I8
SURMVW5zaWduZWRMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoV1RGTW92ZShvYmpBcmdzU2hvcnQp
LCBXVEZNb3ZlKG9iakFyZ3NMb25nKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZShXVEZNb3ZlKG9iakFyZ3NTaG9ydCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzE2
Niw3ICs3MTY2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmdz
TG9uZyA9IGNvbnZlcnQ8SURMRW5mb3JjZVJhbmdlQWRhcHRvcjxJRExMb25nPj4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VP
bk9wdGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcxODQsNyAr
NzE4NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHVuc2lnbmVkTG9uZ1NlcXVlbmNlID0g
Y29udmVydDxJRExTZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZShXVEZNb3ZlKHVuc2lnbmVkTG9uZ1NlcXVlbmNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhV
bnNpZ25lZExvbmdTZXF1ZW5jZShXVEZNb3ZlKHVuc2lnbmVkTG9uZ1NlcXVlbmNlKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcyMzQs
NyArNzIzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb3B0aW9uYWxV
bmlvbiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxD
b252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0
ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExV
bmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNlPElETFVucmVzdHJpY3RlZERvdWJsZT4+Pjo6
UmV0dXJuVHlwZT4oY29udmVydDxJRExVbmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNlPElE
TFVucmVzdHJpY3RlZERvdWJsZT4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihXVEZNb3Zl
KG9wdGlvbmFsVW5pb24pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25Q
YXJhbWV0ZXIoV1RGTW92ZShvcHRpb25hbFVuaW9uKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcyNTQsNyArNzI1NCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gbnVsbGFibGVBcnJh
eUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMVW5zaWduZWRMb25nPj4+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51
bGxhYmxlQXJyYXlBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJs
ZVNlcXVlbmNlKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzI3Miw3ICs3MjcyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZWxlbWVudElkID0gY29u
dmVydDxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4oKnN0YXRl
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92
ZShlbGVtZW50SWQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxs
YWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJ
ZCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzMwMiw3ICs3
MzAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETEludGVy
ZmFjZTxUZXN0Tm9kZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNv
bnZlcnQxIiwgIlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5jb252ZXJ0MSgqdmFsdWUpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MzIwLDcgKzczMjAsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RO
b2RlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwg
IlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252ZXJ0MihXVEZNb3ZlKHZhbHVlKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmNvbnZlcnQyKFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzMzOCw3ICs3MzM4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252ZXJ0MyhXVEZNb3ZlKHZh
bHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLmNvbnZlcnQzKFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzM1Niw3ICs3MzU2
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxl
PElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwuY29udmVydDQoV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb252ZXJ0NChXVEZN
b3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTczNzAsNyArNzM3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5tdXRhYmxlUG9pbnRGdW5j
dGlvbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxT
VkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03MzgzLDcgKzczODMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICBpbXBsLmJhbmFuYSgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5iYW5hbmEoKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzQwMyw3
ICs3NDAzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETERPTVN0cmluZz4oKnN0YXRl
LCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92
ZSh0YWlsKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCks
IFdURk1vdmUodGFpbCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC03NDIzLDcgKzc0MjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVu
dHM8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC52YXJpYWRpY0Rv
dWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudmFy
aWFkaWNEb3VibGVNZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0NDMsNyAr
NzQ0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1
dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExJbnRlcmZhY2U8Tm9kZT4+KCpz
dGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWls
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTc0NjMsNyArNzQ2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbmlvbjxJRExJ
bnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnZhcmlh
ZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0ODMs
NyArNzQ4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IGF1dG8gYiA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5hbnkoV1RGTW92ZShhKSwgV1RGTW92ZShiKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LmFueShXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzQ5Nyw3ICs3NDk3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJv
bWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC03NTE1LDcgKzc1MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhID0gY29udmVydDxJ
RExGbG9hdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVu
dChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzUyOSw3ICs3NTI5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihXVEZNb3ZlKHByb21p
c2UpKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1v
dmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC03NTQ1LDcgKzc1NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0
aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxD
b252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlv
bldpdGhPcHRpb25hbEludEFyZ3VtZW50KFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RG
TW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc1NjEsNyArNzU2MSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMRmxvYXQ+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVk
RnVuY3Rpb24oV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03
NTcyLDcgKzc1NzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHJlcXVl
c3QgPSBjb252ZXJ0PElETEludGVyZmFjZTxGZXRjaFJlcXVlc3Q+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAi
cmVxdWVzdCIsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIiwg
IkZldGNoUmVxdWVzdCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rp
b24oKnJlcXVlc3QsIFdURk1vdmUocHJvbWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbigqcmVxdWVzdCwgV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc2MDMsNyArNzYw
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBU
ZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzYxNiw3ICs3NjE2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsIFRlc3RPYmo6
OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1vdmUocHJvbWlzZSkp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
KFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC03NjY2LDcgKzc2NjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExWb2lk
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwudGVzdFJldHVybnNP
d25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFZvaWQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0UmV0dXJuc093blByb21pc2VBbmRQ
cm9taXNlUHJveHlGdW5jdGlvbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9t
aXNlUHJveHlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzY4Miw3ICs3NjgyLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb25k
aXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsT3Zl
cmxvYWQoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNzY5Niw3ICs3Njk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShh
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc3MzgsNyAr
NzczOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwuc2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKHN0cikpOworICAgIFZvaWRP
cGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1w
bC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc3NTAsNyArNzc1MCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMTG9u
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5zaW5nbGVD
b25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zaW5nbGVDb25kaXRp
b25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03Nzg4LDcgKzc3ODgsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byBpbml0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmF0dGFj
aFNoYWRvd1Jvb3QoV1RGTW92ZShpbml0KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmF0dGFjaFNoYWRvd1Jvb3Qo
V1RGTW92ZShpbml0KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTc4MDYsNyArNzgwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGRpY3QgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoRXh0
ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKFdURk1vdmUoZGljdCkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vcGVy
YXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKFdURk1vdmUoZGljdCkpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03ODI0
LDcgKzc4MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBkYXRhID0gY29udmVydDxJRExV
bmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5idWZmZXJTb3VyY2VQYXJhbWV0ZXIoV1RG
TW92ZShkYXRhKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmJ1ZmZlclNvdXJjZVBhcmFtZXRlcihXVEZNb3ZlKGRh
dGEpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNzg0Miw3ICs3ODQyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gcGFyYW0gPSBj
b252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwubGVnYWN5Q2FsbGVyTmFtZWQoV1RGTW92ZShwYXJhbSkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5sZWdh
Y3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc4NjMsNyArNzg2Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURM
SW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAiYiIsICJUZXN0T2JqZWN0IiwgInRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50ZXN0UmV0dXJu
VmFsdWVPcHRpbWl6YXRpb24oKmEsICpiKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFJldHVyblZhbHVlT3B0
aW1pemF0aW9uKCphLCAqYik7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmV0dXJu
VmFsdWUpOwogfQogCkBAIC03ODg0LDcgKzc4ODQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2Rl
Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIFtdKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KHN0YXRlLCBzY29wZSwgMSwgImIiLCAiVGVzdE9iamVjdCIsICJ0ZXN0UmV0dXJuVmFsdWVPcHRp
bWl6YXRpb25XaXRoRXhjZXB0aW9uIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRp
b24oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldp
dGhFeGNlcHRpb24oKmEsICpiKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RSZXR1cm5WYWx1ZU9wdGltaXph
dGlvbldpdGhFeGNlcHRpb24oKmEsICpiKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTc4OTgsNyArNzg5OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9u
KCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbigpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03
OTEyLDcgKzc5MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbigpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb25kaXRpb25h
bGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzkyNiw3ICs3OTI2LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5k
V29ya2VyRnVuY3Rpb24oKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0FuZFdvcmtlckZ1bmN0aW9uKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTc5NDAsNyArNzk0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpz
dGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVTVlN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmlu
Z2lmaWVyQXR0cmlidXRlKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqc3RhdGUsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCks
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Olllcz4oKnN0YXRlLCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+
KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9k
ZT4+KCpzdGF0ZSwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjI2LDcgKzIy
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubmFtZWRJdGVtKFdURk1v
dmUobmFtZSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3Zl
cnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4ZWNTdGF0ZSogc3RhdGUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwuZnVuY3Rpb24oV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jdGlvbihXVEZNb3Zl
KHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTMyNyw3ICszMjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBp
bXBsLmZ1bmN0aW9uUmV0dXJuaW5nKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0
ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmZ1bmN0aW9u
UmV0dXJuaW5nKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0
dXJuaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmcoKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
aW1wbC50b1N0cmluZygpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbi5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUs
IGltcGwudG9TdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Miw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlv
bklkZW50aWZpZXIoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50
aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
RE9NU3RyaW5nPigqc3RhdGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmFsdGVybmF0ZUlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlw
ZUZ1bmN0aW9uSWRlbnRpZmllcihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTg1LDcgKzE4NSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5hbHRlcm5hdGVJZGVudGlmaWVyKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93
U2NvcGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBs
LnRvU3RyaW5nKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlm
aWVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHRocm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEwLDcgKzIxMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUs
IHRocm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHggPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExTZXF1ZW5jZTxJRExMb25nPj46OlJl
dHVyblR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElETExvbmc+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmZ1bmMoV1RGTW92ZSh4KSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmZ1bmMoV1RGTW92ZSh4KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUwOCw3ICs1MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGFscGhhID0gc3RhdGUtPmFyZ3VtZW50
KDQpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0
ZWRGbG9hdD46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJl
c3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnNldFNoYWRv
dyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3ZlKGJsdXIpLCBXVEZNb3Zl
KGNvbG9yKSwgV1RGTW92ZShhbHBoYSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRTaGFkb3coV1RGTW92ZSh3
aWR0aCksIFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyKSwgV1RGTW92ZShjb2xvciksIFdU
Rk1vdmUoYWxwaGEpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNl
cXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbnNpZ25lZExvbmdMb25n
PihpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRl
LCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNl
QXJnKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VB
cmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNlQXJn
KFdURk1vdmUoc2VxdWVuY2VBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTYxLDcgKzU2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExE
T01TdHJpbmc+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5zZXF1ZW5jZU9mTnVsbGFibGVzQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwuc2VxdWVuY2VPZk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU3OSw3ICs1
NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VP
Zk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm51bGxhYmxl
U2VxdWVuY2VPZk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5Nyw3ICs1OTcs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMU2VxdWVuY2U8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+Pj4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBp
bXBsLm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJn
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTYxNSw3ICs2MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB1bmlvbkFyZyA9IGNv
bnZlcnQ8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC51bmlvbkFyZyhXVEZNb3ZlKHVuaW9uQXJnKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLnVuaW9uQXJnKFdURk1vdmUodW5pb25BcmcpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjM1LDcgKzYzNSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gYXJnMiA9
IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0
ZXI8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6
IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdM
b25nPj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9u
Z0xvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5m
dW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5m
dW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTMsNyArNjUzLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxJRExDbGFtcEFkYXB0b3I8
SURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
ZnVuY1dpdGhDbGFtcEluVHlwZWRlZihXVEZNb3ZlKGFyZykpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jV2l0
aENsYW1wSW5UeXBlZGVmKFdURk1vdmUoYXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJm
YWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwu
cG9pbnRGdW5jdGlvbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETElu
dGVyZmFjZTxTVkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLnBvaW50RnVuY3Rpb24oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0
RXZlbnRUYXJnZXQ+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuY2FsbFdpdGhTZXF1
ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
aW1wbC5jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShXVEZNb3ZlKHNlcXVlbmNl
QXJnKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoRXhl
Y1N0YXRlKiBzdGF0ZSkKQEAgLTczMSw3ICs3MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhv
ZFdpdGhFeGNlcHRpb24oKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsy
Miw2IEBAIGludGVyZmFjZSBDU1NNZWRpYVJ1bGUgOiBDU1NSdWxlIHsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgTWVkaWFMaXN0IG1lZGlhOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxl
TGlzdCBjc3NSdWxlczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBp
bnNlcnRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
ZGVsZXRlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgdW5zaWdu
ZWQgbG9uZyBpbnNlcnRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIs
IG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICB2b2lkIGRlbGV0ZVJ1bGUo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTAgKzMwLDEwIEBACiAKICAgICBET01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01T
dHJpbmcgcHJvcGVydHlOYW1lKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKKyAg
ICBbQ0VSZWFjdGlvbnNdIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVy
dHlOYW1lKTsKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmdd
IERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgc2V0UHJv
cGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBE
T01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIHByaW9yaXR5ID0gIiIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwogICAgIGdldHRlciBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjIsMTMgKzIyLDEzIEBAIGludGVyZmFjZSBDU1NTdHlsZVNoZWV0IDogU3R5bGVTaGVl
dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGUgb3duZXJSdWxlOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxlLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKERP
TVN0cmluZyBydWxlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgcnVsZXM7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHR3
byBvcGVyYXRpb25zIGFyZSBXZWJLaXQtc3BlY2lmaWMuCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBsb25nIGFkZFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5lZCIs
IG9wdGlvbmFsIERPTVN0cmluZyBzdHlsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlUnVsZShv
cHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgbG9uZyBhZGRSdWxlKG9wdGlv
bmFsIERPTVN0cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJpbmcg
c3R5bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
dm9pZCByZW1vdmVSdWxlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDYgQEAgaW50ZXJmYWNlIENTU1N1cHBvcnRzUnVsZSA6IENTU1J1bGUg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbmRpdGlvblRleHQ7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVuc2lnbmVkIGxvbmcgaW5z
ZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDAp
OworICAgIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NTWF0cml4LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKICAg
ICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
CiAgXSBpbnRlcmZhY2UgRE9NTWF0cml4IDogRE9NTWF0cml4UmVhZE9ubHkgewotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21NYXRyaXgob3B0
aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdP
YmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJy
YXkzMik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRy
aXggZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CisgICAgW05ld09iamVj
dF0gc3RhdGljIERPTU1hdHJpeCBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3Ro
ZXIpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShG
bG9hdDMyQXJyYXkgYXJyYXkzMik7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBm
cm9tRmxvYXQ2NEFycmF5KEZsb2F0NjRBcnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0
dHJpYnV0ZXMgYXJlIHNpbXBsZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0
eDQgbWF0cml4CiAgICAgaW5oZXJpdCBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAv
LyBBbGlhcyBmb3IgbTExLgpAQCAtNjIsOCArNjIsOCBAQAogICAgIGluaGVyaXQgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgbTQ0OwogCiAgICAgLy8gTXV0YWJsZSB0cmFuc2Zvcm0gbWV0
aG9kcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NTWF0cml4IG11bHRpcGx5U2VsZihvcHRp
b25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTU1h
dHJpeCBwcmVNdWx0aXBseVNlbGYob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAg
RE9NTWF0cml4IG11bHRpcGx5U2VsZihvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAg
ICBET01NYXRyaXggcHJlTXVsdGlwbHlTZWxmKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIp
OwogICAgIERPTU1hdHJpeCB0cmFuc2xhdGVTZWxmKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgdHggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJp
Y3RlZCBkb3VibGUgdHkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgdHogPSAwKTsKQEAgLTkwLDUgKzkwLDUgQEAKICAgICBET01N
YXRyaXggc2tld1lTZWxmKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgc3kgPSAwKTsgLy8g
QW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBET01NYXRyaXggaW52ZXJ0U2VsZigpOwogCi0gICAg
W0V4cG9zZWQ9V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1zZXRNYXRy
aXhWYWx1ZUZvckJpbmRpbmdzXSBET01NYXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRy
YW5zZm9ybUxpc3QpOworICAgIFtFeHBvc2VkPVdpbmRvdywgSW1wbGVtZW50ZWRBcz1zZXRNYXRy
aXhWYWx1ZUZvckJpbmRpbmdzXSBET01NYXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRy
YW5zZm9ybUxpc3QpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFk
T25seS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRP
bmx5LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogICAgIEV4cG9z
ZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50
ZXJmYWNlIERPTU1hdHJpeFJlYWRPbmx5IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09i
amVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0
cml4SW5pdCBvdGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRp
YyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMy
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJl
YWRPbmx5IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOworICAgIFtOZXdP
YmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1h
dHJpeEluaXQgb3RoZXIpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25s
eSBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKKyAgICBbTmV3T2JqZWN0
XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkg
YXJyYXk2NCk7CiAKICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBm
b3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJpeAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGE7IC8vIEFsaWFzIGZvciBtMTEuCkBAIC04OCwxNSAr
ODgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVl
cy4KICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggc2tld1gob3B0aW9uYWwgdW5yZXN0cmljdGVk
IGRvdWJsZSBzeCA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAgIFtOZXdPYmplY3Rd
IERPTU1hdHJpeCBza2V3WShvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN5ID0gMCk7IC8v
IEFuZ2xlIGlzIGluIGRlZ3JlZXMuCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3Rd
IERPTU1hdHJpeCBtdWx0aXBseShvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBb
TmV3T2JqZWN0XSBET01NYXRyaXggbXVsdGlwbHkob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhl
cik7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGZsaXBYKCk7CiAgICAgW05ld09iamVjdF0g
RE9NTWF0cml4IGZsaXBZKCk7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGludmVyc2UoKTsK
IAogICAgIFtOZXdPYmplY3RdIERPTVBvaW50IHRyYW5zZm9ybVBvaW50KG9wdGlvbmFsIERPTVBv
aW50SW5pdCBwb2ludCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBGbG9hdDMyQXJyYXkgdG9G
bG9hdDMyQXJyYXkoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEZsb2F0NjRBcnJheSB0b0Zs
b2F0NjRBcnJheSgpOworICAgIEZsb2F0MzJBcnJheSB0b0Zsb2F0MzJBcnJheSgpOworICAgIEZs
b2F0NjRBcnJheSB0b0Zsb2F0NjRBcnJheSgpOwogCi0gICAgW0V4cG9zZWQ9V2luZG93LCBNYXlU
aHJvd0V4Y2VwdGlvbl0gc3RyaW5naWZpZXI7CisgICAgW0V4cG9zZWQ9V2luZG93XSBzdHJpbmdp
ZmllcjsKICAgICBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwxMyBAQAogICAg
IAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwcmltaXRpdmVUeXBlOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZmxv
YXRWYWx1ZSA9IE5hTik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxv
YXQgZ2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOwor
ICAgIHZvaWQgc2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9
IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKKyAgICB1
bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFN0cmluZ1Zh
bHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01T
dHJpbmcgc3RyaW5nVmFsdWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdl
dFN0cmluZ1ZhbHVlKCk7CisgICAgdm9pZCBzZXRTdHJpbmdWYWx1ZShvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBzdHJpbmdUeXBlID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlKTsK
KyAgICBET01TdHJpbmcgZ2V0U3RyaW5nVmFsdWUoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gRGVwcmVjYXRlZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIERlcHJlY2F0ZWRDU1NPTVJlY3QgZ2V0UmVjdFZhbHVlKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBnZXRSR0JDb2xvclZhbHVl
KCk7CisgICAgRGVwcmVjYXRlZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKKyAgICBE
ZXByZWNhdGVkQ1NTT01SZWN0IGdldFJlY3RWYWx1ZSgpOworICAgIERlcHJlY2F0ZWRDU1NPTVJH
QkNvbG9yIGdldFJHQkNvbG9yVmFsdWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSBGb250RmFjZVNl
dExvYWRTdGF0dXMgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZXJyb3I7
CiAKICAgICBQcm9taXNlPHNlcXVlbmNlPEZvbnRGYWNlPj4gbG9hZChET01TdHJpbmcgZm9udCwg
b3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiICIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
Ym9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAi
ICIpOworICAgIGJvb2xlYW4gY2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmlu
ZyB0ZXh0ID0gIiAiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPEZvbnRGYWNl
U2V0PiByZWFkeTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVz
IHN0YXR1czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNiBAQAogCiAgICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25n
IGluZGV4KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVNZWRpdW0oRE9N
U3RyaW5nIG9sZE1lZGl1bSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZE1l
ZGl1bShET01TdHJpbmcgbmV3TWVkaXVtKTsKKyAgICB2b2lkIGRlbGV0ZU1lZGl1bShET01TdHJp
bmcgb2xkTWVkaXVtKTsKKyAgICB2b2lkIGFwcGVuZE1lZGl1bShET01TdHJpbmcgbmV3TWVkaXVt
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDEzICs1NywxMyBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIG00NDsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZh
dWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0TWF0cml4VmFsdWUob3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZyA9ICJ1bmRlZmluZWQi
KTsKKyAgICB2b2lkIHNldE1hdHJpeFZhbHVlKG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmcgPSAi
dW5kZWZpbmVkIik7CiAgICAgCiAgICAgLy8gTXVsdGlwbHkgdGhpcyBtYXRyaXggYnkgc2Vjb25k
TWF0cml4LCBvbiB0aGUgcmlnaHQgKHJlc3VsdCA9IHRoaXMgKiBzZWNvbmRNYXRyaXgpCiAgICAg
V2ViS2l0Q1NTTWF0cml4IG11bHRpcGx5KG9wdGlvbmFsIFdlYktpdENTU01hdHJpeD8gc2Vjb25k
TWF0cml4ID0gbnVsbCk7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoaXMg
bWF0cml4LiBUaHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIG1hdHJpeCBpcyBub3QgaW52ZXJ0aWJs
ZQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2ViS2l0Q1NTTWF0cml4IGludmVyc2UoKTsKKyAg
ICBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpOwogICAgIAogICAgIC8vIFJldHVybiB0aGlzIG1h
dHJpeCB0cmFuc2xhdGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBO
YU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2Vk
IGZvciAyRCBvcGVyYXRpb25zCkBAIC05Miw1ICs5Miw1IEBACiAgICAgLy8gUGFzc2luZyBhIE5h
TiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAgV2ViS2l0Q1NTTWF0cml4IHNrZXdZKG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgYW5nbGUgPSBOYU4pOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBzdHJpbmdpZmllcjsKKyAgICBzdHJpbmdpZmllcjsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwx
MSBAQAogaW50ZXJmYWNlIENoYXJhY3RlckRhdGEgOiBOb2RlIHsKICAgICBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgZGF0YTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01T
dHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBj
b3VudCk7CisgICAgRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQs
IHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIHZvaWQgYXBwZW5kRGF0YShET01TdHJpbmcgZGF0
YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydERhdGEodW5zaWduZWQgbG9u
ZyBvZmZzZXQsIERPTVN0cmluZyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
ZGVsZXRlRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zm
c2V0LCB1bnNpZ25lZCBsb25nIGNvdW50LCBET01TdHJpbmcgZGF0YSk7CisgICAgdm9pZCBpbnNl
cnREYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgdm9pZCBk
ZWxldGVEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAg
ICB2b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNv
dW50LCBET01TdHJpbmcgZGF0YSk7CiB9OwogCiBDaGFyYWN0ZXJEYXRhIGltcGxlbWVudHMgQ2hp
bGROb2RlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw4ICsyMiw4IEBACiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGls
ZE5vZGUgewotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0
aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWZ0ZXIoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZSgpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdm9pZCBiZWZvcmUo
KE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3Bh
YmxlXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJl
YWN0aW9ucywgVW5zY29wYWJsZV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcp
Li4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZvaWQgcmVtb3ZlKCk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiBdIGludGVyZmFj
ZSBDdXN0b21FbGVtZW50UmVnaXN0cnkgewogICAgIFtDRVJlYWN0aW9ucywgQ3VzdG9tXSB2b2lk
IGRlZmluZShET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3IpOwogICAgIGFueSBn
ZXQoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uLCBSZXR1
cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx2b2lkPiB3aGVuRGVmaW5lZChET01TdHJpbmcgbmFtZSk7
CisgICAgW0N1c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8dm9pZD4gd2hlbkRlZmlu
ZWQoRE9NU3RyaW5nIG5hbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICAg
IEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7Ci0gICAgW05ld09iamVj
dCwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3Rl
bUlkKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3Jl
YXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9j
dHlwZSA9IG51bGwpOworICAgIFtOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVu
dFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3Ry
aW5nIHN5c3RlbUlkKTsKKyAgICBbTmV3T2JqZWN0XSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVu
dChET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVs
bCk7CiAgICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRp
b25hbCBET01TdHJpbmcgdGl0bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVz
ZWxlc3M7IGFsd2F5cyByZXR1cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9N
UG9pbnRSZWFkT25seS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVBv
aW50UmVhZE9ubHkuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NUG9pbnRSZWFkT25seS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW50
ZXJmYWNlIERPTVBvaW50UmVhZE9ubHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHo7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3Vi
bGUgdzsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUG9pbnQgbWF0cml4VHJhbnNmb3Jt
KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgbWF0cml4KTsKKyAgICBET01Qb2ludCBtYXRyaXhUcmFu
c2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBtYXRyaXgpOwogCiAgICAgc2VyaWFsaXplciA9
IHsgYXR0cmlidXRlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAg
QEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERhdGFU
cmFuc2Zlckl0ZW0gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRGF0YVRyYW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBET01TdHJpbmcg
dHlwZSk7CisgICAgRGF0YVRyYW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBET01TdHJp
bmcgdHlwZSk7CiAgICAgRGF0YVRyYW5zZmVySXRlbT8gYWRkKEZpbGUgZmlsZSk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IHZvaWQgcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgdm9pZCBjbGVhcigpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjEgKzU4
LDIxIEBAIHR5cGVkZWYgKAogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1l
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIEhU
TUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoRE9NU3RyaW5nIGNsYXNzTmFtZXMp
OwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3Jl
YXRlRWxlbWVudEZvckJpbmRpbmdzXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoRE9NU3RyaW5nIGxv
Y2FsTmFtZSk7IC8vIEZJWE1FOiBtaXNzaW5nIG9wdGlvbnMgcGFyYW1ldGVyLgotICAgIFtOZXdP
YmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhET01TdHJp
bmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOyAvLyBGSVhNRTogbWlz
c2luZyBvcHRpb25zIHBhcmFtZXRlci4KKyAgICBbTmV3T2JqZWN0LCBJbXBsZW1lbnRlZEFzPWNy
ZWF0ZUVsZW1lbnRGb3JCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KERPTVN0cmluZyBs
b2NhbE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KKyAgICBbTmV3
T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwg
RE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFt
ZXRlci4KICAgICBbTmV3T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKTsKICAgICBbTmV3T2JqZWN0XSBUZXh0IGNyZWF0ZVRleHROb2RlKERPTVN0cmluZyBk
YXRhKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQ0RBVEFTZWN0aW9uIGNy
ZWF0ZUNEQVRBU2VjdGlvbihET01TdHJpbmcgZGF0YSk7CisgICAgW05ld09iamVjdF0gQ0RBVEFT
ZWN0aW9uIGNyZWF0ZUNEQVRBU2VjdGlvbihET01TdHJpbmcgZGF0YSk7CiAgICAgW05ld09iamVj
dF0gQ29tbWVudCBjcmVhdGVDb21tZW50KERPTVN0cmluZyBkYXRhKTsKLSAgICBbTmV3T2JqZWN0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3Np
bmdJbnN0cnVjdGlvbihET01TdHJpbmcgdGFyZ2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgW05l
d09iamVjdF0gUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlv
bihET01TdHJpbmcgdGFyZ2V0LCBET01TdHJpbmcgZGF0YSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIE5vZGUgaW1wb3J0Tm9kZShOb2RlIG5vZGUs
IG9wdGlvbmFsIGJvb2xlYW4gZGVlcCA9IGZhbHNlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRo
cm93RXhjZXB0aW9uXSBOb2RlIGFkb3B0Tm9kZShOb2RlIG5vZGUpOworICAgIFtDRVJlYWN0aW9u
cywgTmV3T2JqZWN0XSBOb2RlIGltcG9ydE5vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFu
IGRlZXAgPSBmYWxzZSk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIGFkb3B0Tm9kZShOb2RlIG5v
ZGUpOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgY3JlYXRlQXR0
cmlidXRlKERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhj
ZXB0aW9uXSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRy
aWJ1dGUoRE9NU3RyaW5nIGxvY2FsTmFtZSk7CisgICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVB
dHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIEV2ZW50IGNyZWF0ZUV2
ZW50KERPTVN0cmluZyB0eXBlKTsKKyAgICBbTmV3T2JqZWN0XSBFdmVudCBjcmVhdGVFdmVudChE
T01TdHJpbmcgdHlwZSk7CiAKICAgICBbTmV3T2JqZWN0XSBSYW5nZSBjcmVhdGVSYW5nZSgpOwog
CkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB0eXBlZGVmICgKICAgICAvLyBGSVhNRTogVGhlIEhUTUwg
c3BlYyBzYXlzIHRoaXMgc2hvdWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIu
IFdlIHNob3VsZCBlbnN1cmUKICAgICAvLyB0aGF0IHRoZSBjYWxsZXIgZG9jdW1lbnQgbWF0Y2hl
cyB0aG9zZSBzZW1hbnRpY3MuIEl0IGlzIHBvc3NpYmxlIHdlIHNob3VsZCByZXBsYWNlIGl0IHdp
dGgKICAgICAvLyB0aGUgZXhpc3RpbmcgJ2luY3VtYmVudCBkb2N1bWVudCcgY29uY2VwdC4KLSAg
ICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIEltcGxlbWVudGVk
QXM9b3BlbkZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgb3BlbihvcHRp
b25hbCBET01TdHJpbmcgdHlwZSA9ICJ0ZXh0L2h0bWwiLCBvcHRpb25hbCBET01TdHJpbmcgcmVw
bGFjZSA9ICIiKTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBs
ZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVdpbmRvdyBv
cGVuKFVTVlN0cmluZyB1cmwsIERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMpOwot
ICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBjbG9zZSgpOwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVz
cG9uc2libGVEb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd3JpdGUoRE9NU3RyaW5n
Li4uIHRleHQpOwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVu
dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd3JpdGVsbihET01TdHJpbmcuLi4gdGV4dCk7Cisg
ICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBJbXBsZW1lbnRl
ZEFzPW9wZW5Gb3JCaW5kaW5nc10gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01TdHJpbmcgdHlw
ZSA9ICJ0ZXh0L2h0bWwiLCBvcHRpb25hbCBET01TdHJpbmcgcmVwbGFjZSA9ICIiKTsKKyAgICBb
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JC
aW5kaW5nc10gRE9NV2luZG93IG9wZW4oVVNWU3RyaW5nIHVybCwgRE9NU3RyaW5nIG5hbWUsIERP
TVN0cmluZyBmZWF0dXJlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb3Nl
Rm9yQmluZGluZ3NdIHZvaWQgY2xvc2UoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJl
c3BvbnNpYmxlRG9jdW1lbnRdIHZvaWQgd3JpdGUoRE9NU3RyaW5nLi4uIHRleHQpOworICAgIFtD
RVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudF0gdm9pZCB3cml0ZWxuKERP
TVN0cmluZy4uLiB0ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CkBAIC0xMzgsOSArMTM4LDkgQEAg
dHlwZWRlZiAoCiAgICAgRE9NU2VsZWN0aW9uPyBnZXRTZWxlY3Rpb24oKTsKIAogICAgIC8vIFhQ
YXRoIGV4dGVuc2lvbnMgKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1YUGF0aC94
cGF0aC5odG1sI1hQYXRoRXZhbHVhdG9yKS4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQYXRo
RXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9u
ID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOyAvLyBG
SVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jv
bmcuCisgICAgWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24ob3B0aW9uYWwgRE9NU3Ry
aW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyBy
ZXNvbHZlcik7IC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRl
ciB2YWx1ZSBpcyB3cm9uZy4KICAgICBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihO
b2RlPyBub2RlUmVzb2x2ZXIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQg
ZXZhbHVhdGUob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0
aW9uYWwgTm9kZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2
ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3Vs
dD8gaW5SZXN1bHQpOyAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJh
bWV0ZXIgdmFsdWUgaXMgd3JvbmcuCisgICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwg
RE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgTm9kZT8gY29udGV4
dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOyAvLyBG
SVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jv
bmcuCiAKICAgICAvLyBFeHRlbnNpb25zIGZyb20gRnVsbFNjcmVlbiBBUEkgKGh0dHBzOi8vZnVs
bHNjcmVlbi5zcGVjLndoYXR3Zy5vcmcvI2FwaSkuCiAgICAgLy8gRklYTUU6IFNob3VsZCBwcm9i
YWJseSBiZSB1bnByZWZpeGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw4ICs0MCw4IEBACiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRBdHRyaWJ1dGVO
YW1lcygpOwogICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9N
U3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFs
aWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERP
TVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOworICAgIFtDRVJlYWN0aW9u
c10gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2
YWx1ZSk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsK
ICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lKTsKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIGJvb2xlYW4gaGFz
QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKQEAgLTQ5LDIzICs0OSwyMyBAQAog
CiAgICAgW0RPTUpJVD1SZWFkRE9NXSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBx
dWFsaWZpZWROYW1lKTsKICAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlTlMoRE9NU3RyaW5nPyBu
YW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKLSAgICBb
Q0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlTlMo
QXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJl
bW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNl
dEF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldEF0
dHJpYnV0ZU5vZGVOUyhBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9uc10gQXR0ciByZW1vdmVB
dHRyaWJ1dGVOb2RlKEF0dHIgYXR0cik7CiAKLSAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dE
T00sIE1heVRocm93RXhjZXB0aW9uXSBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhTaGFkb3dSb290
SW5pdCBpbml0KTsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01dIFNoYWRvd1Jvb3Qg
YXR0YWNoU2hhZG93KFNoYWRvd1Jvb3RJbml0IGluaXQpOwogICAgIFtFbmFibGVkQXRSdW50aW1l
PVNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1zaGFkb3dSb290Rm9yQmluZGluZ3MsIENhbGxXaXRo
PVNjcmlwdFN0YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgU2hhZG93Um9vdD8gc2hhZG93Um9vdDsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcgc2Vs
ZWN0b3JzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gbWF0Y2hlcyhET01TdHJp
bmcgc2VsZWN0b3JzKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gYm9vbGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7
IC8vIEhpc3RvcmljYWwgYWxpYXMgb2YgLm1hdGNoZXMuCisgICAgRWxlbWVudD8gY2xvc2VzdChE
T01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBib29sZWFuIG1hdGNoZXMoRE9NU3RyaW5nIHNlbGVj
dG9ycyk7CisgICAgW0ltcGxlbWVudGVkQXM9bWF0Y2hlc10gYm9vbGVhbiB3ZWJraXRNYXRjaGVz
U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7IC8vIEhpc3RvcmljYWwgYWxpYXMgb2YgLm1h
dGNoZXMuCiAKICAgICBbRE9NSklUPVJlYWRET01dIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRz
QnlUYWdOYW1lKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBn
ZXRFbGVtZW50c0J5VGFnTmFtZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcg
bG9jYWxOYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKERP
TVN0cmluZyBuYW1lKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVs
ZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hlcmUsIEVsZW1lbnQgZWxl
bWVudCk7IC8vIEhpc3RvcmljYWwuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2Vy
dEFkamFjZW50VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBkYXRhKTsgLy8gSGlzdG9y
aWNhbC4KKyAgICBbQ0VSZWFjdGlvbnNdIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChE
T01TdHJpbmcgd2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCisgICAgdm9p
ZCBpbnNlcnRBZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgZGF0YSk7IC8v
IEhpc3RvcmljYWwuCiAKICAgICAvLyBDU1NPTS12aWV3IGV4dGVuc2lvbnMgKGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb24tdG8tdGhlLWVsZW1lbnQtaW50ZXJm
YWNlKS4KICAgICBET01SZWN0TGlzdCBnZXRDbGllbnRSZWN0cygpOwpAQCAtOTAsNyArOTAsNyBA
QAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10
by10aGUtZWxlbWVudC1pbnRlcmZhY2UKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUw7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJI
VE1MOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRq
YWNlbnRIVE1MKERPTVN0cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOworICAgIFtDRVJl
YWN0aW9uc10gdm9pZCBpbnNlcnRBZGphY2VudEhUTUwoRE9NU3RyaW5nIHBvc2l0aW9uLCBET01T
dHJpbmcgdGV4dCk7CiAKICAgICAvLyBFeHRlbnNpb25zIGZyb20gRnVsbCBTY3JlZW4gQVBJICho
dHRwczovL2Z1bGxzY3JlZW4uc3BlYy53aGF0d2cub3JnLyNhcGkpLgogICAgIC8vIEZJWE1FOiBT
aG91bGQgd2UgYWRkIHVucHJlZml4ZWQgdmVyc2lvbnM/CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIF0gaW50ZXJmYWNl
IEV2ZW50VGFyZ2V0IHsKICAgICBbSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmlu
ZGluZ3NdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBET01TdHJpbmcgdHlw
ZSwgRXZlbnRMaXN0ZW5lcj8gY2FsbGJhY2ssIG9wdGlvbmFsIChBZGRFdmVudExpc3RlbmVyT3B0
aW9ucyBvciBib29sZWFuKSBvcHRpb25zID0gZmFsc2UpOwogICAgIFtJbXBsZW1lbnRlZEFzPXJl
bW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nc10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtB
dG9taWNTdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBjYWxsYmFjaywgb3B0
aW9uYWwgKEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7
Ci0gICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3NdIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChF
dmVudCBldmVudCk7CiB9OwogCiBkaWN0aW9uYXJ5IEV2ZW50TGlzdGVuZXJPcHRpb25zIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw5
IEBAIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXgKICAgICByZXR1cm4g
eyB9OwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0V4Y2VwdGlvbk9yIDog
cHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6
ZGVjYXlfdDxUPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZT4geyB9OworCiB9CiAKIG5hbWVzcGFjZSBX
VEYgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3Vz
dG9tTWFya0Z1bmN0aW9uLAogXSBpbnRlcmZhY2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7
Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9
IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1l
c3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAgICAgdm9p
ZCBzdGFydCgpOwogICAgIHZvaWQgY2xvc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAgICAgTGVnYWN5V2luZG93QWxpYXM9V2ViS2l0TXV0YXRpb25PYnNlcnZlciwKICAgICBKU0N1
c3RvbU1hcmtGdW5jdGlvbgogXSBpbnRlcmZhY2UgTXV0YXRpb25PYnNlcnZlciB7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIG9ic2VydmUoTm9kZSB0YXJnZXQsIG9wdGlvbmFsIE11dGF0
aW9uT2JzZXJ2ZXJJbml0IG9wdGlvbnMpOworICAgIHZvaWQgb2JzZXJ2ZShOb2RlIHRhcmdldCwg
b3B0aW9uYWwgTXV0YXRpb25PYnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdm9pZCBkaXNjb25u
ZWN0KCk7CiAgICAgc2VxdWVuY2U8TXV0YXRpb25SZWNvcmQ+IHRha2VSZWNvcmRzKCk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw4ICsyOCw4IEBACiAgICAgZ2V0dGVyIEF0dHI/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7
CiAgICAgZ2V0dGVyIEF0dHI/IGdldE5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7
CiAgICAgQXR0cj8gZ2V0TmFtZWRJdGVtTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0
cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0
dHI/IHNldE5hbWVkSXRlbShBdHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9c2V0TmFtZWRJdGVtXSBBdHRyPyBzZXROYW1lZEl0ZW1O
UyhBdHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIg
cmVtb3ZlTmFtZWRJdGVtKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKLSAgICBbQ0VSZWFjdGlv
bnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0
dHI/IHNldE5hbWVkSXRlbShBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50
ZWRBcz1zZXROYW1lZEl0ZW1dIEF0dHI/IHNldE5hbWVkSXRlbU5TKEF0dHIgYXR0cik7CisgICAg
W0NFUmVhY3Rpb25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSk7CisgICAgW0NFUmVhY3Rpb25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBET01TdHJpbmc/IHRleHRDb250ZW50OwogICAgIFtDRVJlYWN0aW9uc10gdm9pZCBub3JtYWxp
emUoKTsKIAotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5k
aW5ncywgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gTm9kZSBjbG9uZU5vZGUob3B0aW9u
YWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRB
cz1jbG9uZU5vZGVGb3JCaW5kaW5ncywgTmV3T2JqZWN0XSBOb2RlIGNsb25lTm9kZShvcHRpb25h
bCBib29sZWFuIGRlZXAgPSBmYWxzZSk7CiAgICAgYm9vbGVhbiBpc0VxdWFsTm9kZShOb2RlPyBv
dGhlcik7CiAgICAgYm9vbGVhbiBpc1NhbWVOb2RlKE5vZGU/IG90aGVyKTsgLy8gSGlzdG9yaWNh
bCBhbGlhcyBvZiA9PT0uCiAKQEAgLTc3LDEwICs3NywxMCBAQAogICAgIERPTVN0cmluZz8gbG9v
a3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKICAgICBib29sZWFuIGlzRGVmYXVs
dE5hbWVzcGFjZShET01TdHJpbmc/IG5hbWVzcGFjZVVSSSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uXSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUg
bm9kZSwgTm9kZT8gY2hpbGQpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25d
IE5vZGUgYXBwZW5kQ2hpbGQoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUpOwotICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgcmVwbGFjZUNoaWxkKE5vZGUgbm9kZSwgW1Jl
dHVyblZhbHVlXSBOb2RlIGNoaWxkKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSBOb2RlIHJlbW92ZUNoaWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NF
UmVhY3Rpb25zXSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSwgTm9k
ZT8gY2hpbGQpOworICAgIFtDRVJlYWN0aW9uc10gTm9kZSBhcHBlbmRDaGlsZChbUmV0dXJuVmFs
dWVdIE5vZGUgbm9kZSk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIHJlcGxhY2VDaGlsZChOb2Rl
IG5vZGUsIFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2Rl
IHJlbW92ZUNoaWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CiB9OwogCiBkaWN0aW9uYXJ5
IEdldFJvb3ROb2RlT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJh
dG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlk
bAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2Rl
RmlsdGVyPyBmaWx0ZXI7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHROb2Rl
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05vZGUoKTsKKyAgICBO
b2RlPyBuZXh0Tm9kZSgpOworICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOwogCiAgICAgdm9pZCBk
ZXRhY2goKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDkgKzMzLDkgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gbGFz
dEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGls
ZEVsZW1lbnRDb3VudDsKIAotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVu
ZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2Nv
cGFibGVdIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBb
Q0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZyku
Li4gbm9kZXMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBxdWVyeVNlbGVj
dG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2Jq
ZWN0XSBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAg
IEVsZW1lbnQ/IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW05ld09i
amVjdF0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChET01TdHJpbmcgc2VsZWN0b3JzKTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDM1ICszMSwzNSBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNvbGxhcHNlZDsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgTm9kZSBjb21tb25BbmNlc3RvckNvbnRhaW5lcjsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBzZXRTdGFydChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RW5kKE5vZGUgbm9kZSwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFydEJlZm9yZShO
b2RlIG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFydEFmdGVyKE5v
ZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVuZEJlZm9yZShOb2Rl
IG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRFbmRBZnRlcihOb2RlIG5v
ZGUpOworICAgIHZvaWQgc2V0U3RhcnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7
CisgICAgdm9pZCBzZXRFbmQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAg
dm9pZCBzZXRTdGFydEJlZm9yZShOb2RlIG5vZGUpOworICAgIHZvaWQgc2V0U3RhcnRBZnRlcihO
b2RlIG5vZGUpOworICAgIHZvaWQgc2V0RW5kQmVmb3JlKE5vZGUgbm9kZSk7CisgICAgdm9pZCBz
ZXRFbmRBZnRlcihOb2RlIG5vZGUpOwogICAgIHZvaWQgY29sbGFwc2Uob3B0aW9uYWwgYm9vbGVh
biB0b1N0YXJ0ID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZWxlY3RO
b2RlKE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbGVjdE5vZGVD
b250ZW50cyhOb2RlIG5vZGUpOworICAgIHZvaWQgc2VsZWN0Tm9kZShOb2RlIG5vZGUpOworICAg
IHZvaWQgc2VsZWN0Tm9kZUNvbnRlbnRzKE5vZGUgbm9kZSk7CiAKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBTVEFSVF9UT19TVEFSVCA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RB
UlRfVE9fRU5EID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fRU5EID0gMjsK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fU1RBUlQgPSAzOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jb21wYXJlQm91bmRhcnlQb2ludHNGb3JCaW5kaW5n
c10gc2hvcnQgY29tcGFyZUJvdW5kYXJ5UG9pbnRzKHVuc2lnbmVkIHNob3J0IGhvdywgUmFuZ2Ug
c291cmNlUmFuZ2UpOworICAgIFtJbXBsZW1lbnRlZEFzPWNvbXBhcmVCb3VuZGFyeVBvaW50c0Zv
ckJpbmRpbmdzXSBzaG9ydCBjb21wYXJlQm91bmRhcnlQb2ludHModW5zaWduZWQgc2hvcnQgaG93
LCBSYW5nZSBzb3VyY2VSYW5nZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIGRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4
Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGV4dHJhY3RDb250ZW50cygpOwot
ICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRG
cmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBpbnNlcnROb2RlKE5vZGUgbm9kZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzdXJyb3VuZENvbnRlbnRzKE5vZGUgbmV3UGFyZW50KTsKKyAg
ICBbQ0VSZWFjdGlvbnNdIHZvaWQgZGVsZXRlQ29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMs
IE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBleHRyYWN0Q29udGVudHMoKTsKKyAgICBbQ0VS
ZWFjdGlvbnMsIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7Cisg
ICAgW0NFUmVhY3Rpb25zXSB2b2lkIGluc2VydE5vZGUoTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFj
dGlvbnNdIHZvaWQgc3Vycm91bmRDb250ZW50cyhOb2RlIG5ld1BhcmVudCk7CiAKICAgICBbTmV3
T2JqZWN0XSBSYW5nZSBjbG9uZVJhbmdlKCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1BvaW50SW5SYW5nZShOb2RlIG5vZGUsIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNvbXBhcmVQ
b2ludChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBib29sZWFuIGlzUG9p
bnRJblJhbmdlKE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHNob3J0IGNv
bXBhcmVQb2ludChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpbnRlcnNlY3RzTm9kZShOb2RlIG5vZGUpOworICAgIGJv
b2xlYW4gaW50ZXJzZWN0c05vZGUoTm9kZSBub2RlKTsKIAogICAgIHN0cmluZ2lmaWVyOwogCkBA
IC02OCwxMyArNjgsMTMgQEAKICAgICBbTmV3T2JqZWN0XSBET01SZWN0IGdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIERPTVBhcnNpbmcgYW5kIFNlcmlh
bGl6YXRpb24gc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5n
LyNleHRlbnNpb25zLXRvLXRoZS1yYW5nZS1pbnRlcmZhY2UpLgotICAgIFtDRVJlYWN0aW9ucywg
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250
ZXh0dWFsRnJhZ21lbnQoRE9NU3RyaW5nIGZyYWdtZW50KTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5l
d09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoRE9NU3Ry
aW5nIGZyYWdtZW50KTsKIAogICAgIC8vIE5vbiBzdGFuZGFyZC4KLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgZXhwYW5kKG9wdGlvbmFsIERPTVN0cmluZyB1bml0ID0gIiIpOworICAgIHZv
aWQgZXhwYW5kKG9wdGlvbmFsIERPTVN0cmluZyB1bml0ID0gIiIpOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBsaWtlbHkgZHJvcCB0aGlzIHNpbmNlIG5vIG90aGVyIGJyb3dzZXIgc3VwcG9y
dHMgaXQuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJlTm9kZShOb2RlIG5v
ZGUpOworICAgIHNob3J0IGNvbXBhcmVOb2RlKE5vZGUgbm9kZSk7CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgTk9ERV9CRUZPUkUgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVf
QUZURVIgPSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQkVGT1JFX0FORF9BRlRF
UiA9IDI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiBd
IGludGVyZmFjZSBUZXh0IDogQ2hhcmFjdGVyRGF0YSB7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBUZXh0IHNwbGl0VGV4dCh1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgVGV4dCBzcGxpdFRl
eHQodW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgd2hvbGVUZXh0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw1IEBAIGRpY3Rpb25hcnkgVGV4dERlY29kZU9wdGlv
bnMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZmF0YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gaWdub3JlQk9NOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVVNWU3RyaW5nIGRlY29k
ZShvcHRpb25hbCBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0RGVjb2RlT3B0aW9u
cyBvcHRpb25zKTsKKyAgICBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIEJ1ZmZlclNvdXJjZT8g
aW5wdXQsIG9wdGlvbmFsIFRleHREZWNvZGVPcHRpb25zIG9wdGlvbnMpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVdhbGtlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBA
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVGaWx0ZXI/IGZpbHRlcjsKICAgICBhdHRyaWJ1
dGUgTm9kZSBjdXJyZW50Tm9kZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcGFy
ZW50Tm9kZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gZmlyc3RDaGlsZCgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gbGFzdENoaWxkKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c1NpYmxpbmcoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIE5vZGU/IG5leHRTaWJsaW5nKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBw
cmV2aW91c05vZGUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHROb2RlKCk7
CisgICAgTm9kZT8gcGFyZW50Tm9kZSgpOworICAgIE5vZGU/IGZpcnN0Q2hpbGQoKTsKKyAgICBO
b2RlPyBsYXN0Q2hpbGQoKTsKKyAgICBOb2RlPyBwcmV2aW91c1NpYmxpbmcoKTsKKyAgICBOb2Rl
PyBuZXh0U2libGluZygpOworICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOworICAgIE5vZGU/IG5l
eHROb2RlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAKIAogICAgIC8vIEZJWE1FOiBJbiBh
bGwgZm91ciBtZXRob2RzIGZvdW5kIGJlbG93LCB0aGUgYmxvYiBwYXJhbWV0ZXIgc2hvdWxkIG5v
dCBiZSBudWxsYWJsZS4KICAgICAvLyBhc3luYyByZWFkIG1ldGhvZHMKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iPyBibG9iKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVhZEFzVGV4dChCbG9iPyBibG9iLCBvcHRpb25hbCBE
T01TdHJpbmcgZW5jb2RpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZWFkQXNE
YXRhVVJMKEJsb2I/IGJsb2IpOworICAgIHZvaWQgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxv
Yik7CisgICAgdm9pZCByZWFkQXNCaW5hcnlTdHJpbmcoQmxvYj8gYmxvYik7CisgICAgdm9pZCBy
ZWFkQXNUZXh0KEJsb2I/IGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyk7CisgICAg
dm9pZCByZWFkQXNEYXRhVVJMKEJsb2I/IGJsb2IpOwogCiAgICAgdm9pZCBhYm9ydCgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICAgICBFeHBvc2VkPVdvcmtlciwKICAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgRmlsZVJlYWRlclN5bmMgewot
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
QXJyYXlCdWZmZXIgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYiBibG9iKTsKLSAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZWFk
QXNCaW5hcnlTdHJpbmcoQmxvYiBibG9iKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZWFkQXNUZXh0KEJsb2IgYmxv
Yiwgb3B0aW9uYWwgRE9NU3RyaW5nIGVuY29kaW5nID0gIiIpOwotICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlYWRBc0Rh
dGFVUkwoQmxvYiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
QXJyYXlCdWZmZXIgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9i
IGJsb2IpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcg
cmVhZEFzVGV4dChCbG9iIGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyA9ICIiKTsK
KyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJlYWRBc0Rh
dGFVUkwoQmxvYiBibG9iKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3Qu
aWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMSBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5nPyBpdGVt
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIGJvb2xlYW4gY29udGFpbnMoRE9NU3RyaW5nIHRv
a2VuKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZChET01T
dHJpbmcuLi4gdG9rZW5zKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZShET01TdHJpbmcuLi4gdG9rZW5zKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRo
cm93RXhjZXB0aW9uXSBib29sZWFuIHRvZ2dsZShET01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJv
b2xlYW4gZm9yY2UpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
cmVwbGFjZShET01TdHJpbmcgdG9rZW4sIERPTVN0cmluZyBuZXdUb2tlbik7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBib29sZWFuIHN1cHBvcnRzKERPTVN0cmluZyB0b2tlbik7CisgICAgW0NF
UmVhY3Rpb25zXSB2b2lkIGFkZChET01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbQ0VSZWFjdGlv
bnNdIHZvaWQgcmVtb3ZlKERPTVN0cmluZy4uLiB0b2tlbnMpOworICAgIFtDRVJlYWN0aW9uc10g
Ym9vbGVhbiB0b2dnbGUoRE9NU3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsK
KyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVwbGFjZShET01TdHJpbmcgdG9rZW4sIERPTVN0cmlu
ZyBuZXdUb2tlbik7CisgICAgYm9vbGVhbiBzdXBwb3J0cyhET01TdHJpbmcgdG9rZW4pOwogICAg
IFtDRVJlYWN0aW9uc10gc3RyaW5naWZpZXIgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKICAg
ICBpdGVyYWJsZTxET01TdHJpbmc+OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEw
IEBAIHR5cGVkZWYgKAogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIFJlbmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoRE9NU3Ry
aW5nIGNvbnRleHRJZCwgYW55Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSBSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFu
eS4uLiBhcmd1bWVudHMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9E
YXRhVVJMKG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHRvQmxvYihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmluZyB0eXBl
LCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7CisgICAgRE9NU3RyaW5nIHRvRGF0YVVSTChvcHRpb25h
bCBET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1YWxpdHkpOworICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIHRvQmxvYihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ss
IG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7CiAKLSAgICBb
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBNZWRpYVN0cmVhbSBjYXB0dXJlU3RyZWFt
KG9wdGlvbmFsIGRvdWJsZSBmcmFtZVJlcXVlc3RSYXRlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIE1l
ZGlhU3RyZWFtIGNhcHR1cmVTdHJlYW0ob3B0aW9uYWwgZG91YmxlIGZyYW1lUmVxdWVzdFJhdGUp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgd2lk
dGg7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1
bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1l
bnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgaW50
ZXJmYWNlIEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudAogICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0Owog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgbWFyZ2luV2lkdGg7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhj
ZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZV0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIHdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGhlaWdodDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNSArMzksNSBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBI
VE1MRWxlbWVuCiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5k
b3c7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1
bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1l
bnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAKICAg
ICBhdHRyaWJ1dGUgRGF0ZT8gdmFsdWVBc0RhdGU7CiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3Rl
ZCBkb3VibGUgdmFsdWVBc051bWJlcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
dGVwVXAob3B0aW9uYWwgbG9uZyBuID0gMSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHN0ZXBEb3duKG9wdGlvbmFsIGxvbmcgbiA9IDEpOworICAgIHZvaWQgc3RlcFVwKG9wdGlvbmFs
IGxvbmcgbiA9IDEpOworICAgIHZvaWQgc3RlcERvd24ob3B0aW9uYWwgbG9uZyBuID0gMSk7CiAK
ICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiB3aWxsVmFsaWRhdGU7CkBAIC04MSwxMCArODEsMTAgQEAKICAgICBbSW1wbGVt
ZW50ZWRBcz1zZWxlY3Rpb25FbmRGb3JCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgc2VsZWN0aW9u
RW5kOwogICAgIFtJbXBsZW1lbnRlZEFzPXNlbGVjdGlvbkRpcmVjdGlvbkZvckJpbmRpbmdzXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHNlbGVjdGlvbkRpcmVjdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVu
dCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0
cmluZyBzZWxlY3Rpb25Nb2RlKTsKKyAgICB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVw
bGFjZW1lbnQpOworICAgIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwg
dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmlu
ZyBzZWxlY3Rpb25Nb2RlKTsKIAotICAgIFtJbXBsZW1lbnRlZEFzPXNldFNlbGVjdGlvblJhbmdl
Rm9yQmluZGluZ3MsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGxv
bmcgc3RhcnQsIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKKyAgICBb
SW1wbGVtZW50ZWRBcz1zZXRTZWxlY3Rpb25SYW5nZUZvckJpbmRpbmdzXSB2b2lkIHNldFNlbGVj
dGlvblJhbmdlKGxvbmcgc3RhcnQsIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0
aW9uKTsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVzZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcg
KzEwOSw3IEBAIHR5cGVkZWYgKAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVu
YWJsZWRBdFJ1bnRpbWU9RW5jcnlwdGVkTWVkaWFBUEldIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b253YWl0aW5nZm9ya2V5OwogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJs
ZWRBdFJ1bnRpbWU9RW5jcnlwdGVkTWVkaWFBUEldIFByb21pc2U8dm9pZD4gc2V0TWVkaWFLZXlz
KE1lZGlhS2V5cz8gbWVkaWFLZXlzKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywg
TWF5VGhyb3dFeGNlcHRpb25dIFRleHRUcmFjayBhZGRUZXh0VHJhY2soRE9NU3RyaW5nIGtpbmQs
IG9wdGlvbmFsIERPTVN0cmluZyBsYWJlbCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgbGFuZ3Vh
Z2UgPSAiIik7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSBUZXh0VHJhY2sgYWRkVGV4
dFRyYWNrKERPTVN0cmluZyBraW5kLCBvcHRpb25hbCBET01TdHJpbmcgbGFiZWwgPSAiIiwgb3B0
aW9uYWwgRE9NU3RyaW5nIGxhbmd1YWdlID0gIiIpOwogICAgIFtDb25kaXRpb25hbD1WSURFT19U
UkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOwogICAg
IFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xp
c3QgdGV4dFRyYWNrczsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBWaWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NSArNDcsNSBAQAogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwogCi0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2Rl
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hl
Y2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiBdIGludGVyZmFjZSBIVE1MT3B0
aW9uc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgW0NFUmVhY3Rpb25zXSBzZXR0ZXIgdm9p
ZCAodW5zaWduZWQgbG9uZyBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQ/IG9wdGlvbik7Ci0gICAg
W0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoKEhUTUxPcHRpb25FbGVt
ZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVu
dCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGFkZCgo
SFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9u
YWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKICAgICBbQ0VSZWFjdGlv
bnNdIHZvaWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwogCiAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0
ZWRJbmRleDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRs
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogICAgIFtDRVJlYWN0aW9u
c10gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBIVE1MT3B0aW9u
RWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsgLy8gRklYTUU6IFRoZSBzcGVjIGhh
cyB0aGlzIHJldHVybmluZyBFbGVtZW50Py4KICAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJ
dGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxl
bWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOyAvLyBDaGls
ZE5vZGUgb3ZlcmxvYWQKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgYWRkKChIVE1MT3B0aW9uRWxl
bWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1l
bnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1v
dmUoKTsgLy8gQ2hpbGROb2RlIG92ZXJsb2FkCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92
ZShsb25nIGluZGV4KTsKICAgICBbQ0VSZWFjdGlvbnNdIHNldHRlciB2b2lkICh1bnNpZ25lZCBs
b25nIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudD8gb3B0aW9uKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw2IEBAIGludGVyZmFjZSBIVE1MVGFibGVFbGVtZW50IDogSFRNTEVsZW1lbnQKICAg
ICBIVE1MRWxlbWVudCBjcmVhdGVDYXB0aW9uKCk7CiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRl
bGV0ZUNhcHRpb24oKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSFRNTEVsZW1lbnQgaW5z
ZXJ0Um93KG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CisgICAgSFRNTEVsZW1l
bnQgaW5zZXJ0Um93KG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7CisgICAgW0NFUmVhY3Rpb25z
XSB2b2lkIGRlbGV0ZVJvdyhsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDYgQEAgaW50ZXJmYWNlIEhUTUxUYWJsZVJvd0VsZW1lbnQgOiBIVE1MRWxlbQog
ICAgIFtSZWZsZWN0PWNoYXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2g7CiAgICAgW1JlZmxlY3Q9
Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKICAgICBbUmVmbGVjdF0gYXR0cmli
dXRlIERPTVN0cmluZyB2QWxpZ247Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBIVE1MRWxlbWVu
dCBpbnNlcnRDZWxsKG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVDZWxsKGxvbmcgaW5kZXgpOworICAgIEhU
TUxFbGVtZW50IGluc2VydENlbGwob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIHZvaWQgZGVsZXRlQ2VsbChsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDYgQEAKICAgICBbUmVmbGVjdD1jaGFyb2Zm
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoT2ZmOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHZBbGlnbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93
czsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25h
bCBsb25nIGluZGV4ID0gLTEpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgZGVsZXRlUm93KGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydFJvdyhv
cHRpb25hbCBsb25nIGluZGV4ID0gLTEpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBkZWxldGVS
b3cobG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBA
IGludGVyZmFjZSBIVE1MVGV4dEFyZWFFbGVtZW50IDogSFRNTEVsZW0KICAgICBhdHRyaWJ1dGUg
bG9uZyBzZWxlY3Rpb25FbmQ7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Rpb25EaXJl
Y3Rpb247CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0
cmluZyByZXBsYWNlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFJhbmdl
VGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk
IGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CisgICAgdm9pZCBz
ZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKKyAgICB2b2lkIHNldFJhbmdlVGV4
dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxv
bmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CiAKICAgICB2b2lkIHNl
dFNlbGVjdGlvblJhbmdlKG9wdGlvbmFsIGxvbmcgc3RhcnQgPSAwLCBvcHRpb25hbCBsb25nIGVu
ZCA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDEyICszNywxMiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFN1cHBv
cnRzRnVsbHNjcmVlbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNw
bGF5aW5nRnVsbHNjcmVlbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3ZWJraXRF
bnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lkIHdlYmtpdEVudGVyRnVsbHNjcmVlbigpOwogICAg
IHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKIAogICAgIC8vIE1haW50YWluICJGdWxsU2Ny
ZWVuIiBjYXBpdGFsaXphdGlvbiBzY2hlbWUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Lgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA4MQotICAg
IFtJbXBsZW1lbnRlZEFzPXdlYmtpdEVudGVyRnVsbHNjcmVlbiwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgd2Via2l0RW50ZXJGdWxsU2NyZWVuKCk7CisgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0
RW50ZXJGdWxsc2NyZWVuXSB2b2lkIHdlYmtpdEVudGVyRnVsbFNjcmVlbigpOwogICAgIFtJbXBs
ZW1lbnRlZEFzPXdlYmtpdEV4aXRGdWxsc2NyZWVuXSB2b2lkIHdlYmtpdEV4aXRGdWxsU2NyZWVu
KCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSBhdHRyaWJ1
dGUgYm9vbGVhbiB3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBlbnVtIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlCiAgICAg
YXR0cmlidXRlIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgYXR0cmli
dXRlIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCi0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9V0VCR0xdIFdlYkdM
UmVuZGVyaW5nQ29udGV4dD8gZ2V0Q29udGV4dChPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlw
ZSBjb250ZXh0VHlwZSwgYW55Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBDb25kaXRpb25hbD1XRUJHTF0gV2ViR0xSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0
KE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBhbnkuLi4gYXJndW1l
bnRzKTsKICAgICBJbWFnZUJpdG1hcCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKICAgICAvLyBQ
cm9taXNlPEJsb2I+IGNvbnZlcnRUb0Jsb2Iob3B0aW9uYWwgSW1hZ2VFbmNvZGVPcHRpb25zIG9w
dGlvbnMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDYgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBp
bnRlcmZhY2UgVGltZVJhbmdlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGRvdWJsZSBz
dGFydCh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVz
dHJpY3RlZCBkb3VibGUgZW5kKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVucmVzdHJpY3Rl
ZCBkb3VibGUgc3RhcnQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdW5yZXN0cmljdGVkIGRv
dWJsZSBlbmQodW5zaWduZWQgbG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRN
TENhbnZhc0UKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1l
bnRzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KIAogICAgIC8vIGRyYXdp
bmcgaW1hZ2VzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJ
bWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRv
dWJsZSBkeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJ
bWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRv
dWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJj
ZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRvdWJsZSBzaCwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CisgICAgdm9pZCBkcmF3SW1hZ2UoQ2FudmFz
SW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBk
b3VibGUgZHkpOworICAgIHZvaWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIGR3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGRoKTsKKyAgICB2b2lkIGRyYXdJbWFn
ZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0
cmljdGVkIGRvdWJsZSBzeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRv
dWJsZSBzaCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9r
ZVN0eWxlcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw3IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAgICBhdHRy
aWJ1dGUgKERPTVN0cmluZyBvciBDYW52YXNHcmFkaWVudCBvciBDYW52YXNQYXR0ZXJuKSBmaWxs
U3R5bGU7IC8vIChkZWZhdWx0IGJsYWNrKQogCiAgICAgLy8gRklYTUU6IEFsbCB0aGUgZmxvYXQg
cGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgZG91Ymxlcy4KLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5
MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dy
YWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAs
IGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
Q2FudmFzUGF0dGVybj8gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcmVwZXRpdGlvbik7CisgICAgQ2FudmFz
R3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4
MSwgZmxvYXQgeTEpOworICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZs
b2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEp
OworICAgIENhbnZhc1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1h
Z2UsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dy
YWRpZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNSArMzAsNSBAQAogICAgIC8vIEZJWE1F
OiBUaGUgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgYSBkb3VibGUuCiAKICAgICAv
LyBvcGFxdWUgb2JqZWN0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZENvbG9yU3Rv
cChmbG9hdCBvZmZzZXQsIERPTVN0cmluZyBjb2xvcik7CisgICAgdm9pZCBhZGRDb2xvclN0b3Ao
ZmxvYXQgb2Zmc2V0LCBET01TdHJpbmcgY29sb3IpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAogICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IGFy
Z3VtZW50cyBiZWxvdyBzaG91bGQgYmUgbG9uZ3MuCiAKICAgICAvLyBwaXhlbCBtYW5pcHVsYXRp
b24KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoZmxv
YXQgc3csIGZsb2F0IHNoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVh
dGVJbWFnZURhdGEoSW1hZ2VEYXRhPyBpbWFnZWRhdGEpOyAvLyBGSVhNRTogaW1hZ2VkYXRhIHNo
b3VsZCBub3QgYmUgb3B0aW9uYWwKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBn
ZXRJbWFnZURhdGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOworICAg
IEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoZmxvYXQgc3csIGZsb2F0IHNoKTsKKyAgICBJbWFn
ZURhdGEgY3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YT8gaW1hZ2VkYXRhKTsgLy8gRklYTUU6IGlt
YWdlZGF0YSBzaG91bGQgbm90IGJlIG9wdGlvbmFsCisgICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0
YShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CiAgICAgdm9pZCBwdXRJ
bWFnZURhdGEoSW1hZ2VEYXRhIGltYWdlZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2
b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHks
IGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0
eUhlaWdodCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
aC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
aC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAKICAgICB2b2lk
IGxpbmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CiAg
ICAgdm9pZCBxdWFkcmF0aWNDdXJ2ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUgY3B4LCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGNweSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHkpOwogICAgIHZvaWQgYmV6aWVyQ3VydmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXgs
IHVucmVzdHJpY3RlZCBkb3VibGUgY3AxeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDJ4LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIGNwMnksIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVk
IGRvdWJsZSB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXJjVG8odW5yZXN0cmlj
dGVkIGRvdWJsZSB4MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSB4MiwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMp
OwotICAgIC8vIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91
YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVz
dHJpY3RlZCBkb3VibGUgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7Cisg
ICAgdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHJhZGl1cyk7CisgICAgLy8gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQg
ZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgy
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVu
cmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7
CiAgICAgdm9pZCByZWN0KHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHcsIHVucmVzdHJpY3RlZCBkb3VibGUgaCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFyYyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVz
dHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgc3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9u
YWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBlbGxpcHNlKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbiwgdW5yZXN0cmljdGVkIGRvdWJsZSBz
dGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFu
IGFudGljbG9ja3dpc2UgPSBmYWxzZSk7CisgICAgdm9pZCBhcmModW5yZXN0cmljdGVkIGRvdWJs
ZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5n
bGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKKyAgICB2b2lkIGVs
bGlwc2UodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVz
dHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNZLCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUs
IHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nr
d2lzZSA9IGZhbHNlKTsKIAogICAgIFtFbmFibGVkQXRSdW50aW1lPUluc3BlY3RvckFkZGl0aW9u
c10gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRYOwogICAgIFtFbmFibGVkQXRSdW50
aW1lPUluc3BlY3RvckFkZGl0aW9uc10gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRZ
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1ICsyOCw1IEBACiAgICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0dGVybiB7CiAgICAgLy8gb3Bh
cXVlIG9iamVjdAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2Zvcm0ob3B0
aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0o
b3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
CiAKICAgICAvLyBOb24tc3RhbmRhcmQgZnVuY3Rpb25hbGl0eSAoQ2FudmFzSW1hZ2VEYXRhKS4K
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgd2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRp
bzsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSB3ZWJraXRHZXRJbWFnZURhdGFI
RChmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CisgICAgSW1hZ2VEYXRh
IHdlYmtpdEdldEltYWdlRGF0YUhEKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0
IHNoKTsKICAgICB2b2lkIHdlYmtpdFB1dEltYWdlRGF0YUhEKEltYWdlRGF0YSBpbWFnZWRhdGEs
IGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAgICAgdm9pZCB3ZWJraXRQdXRJbWFnZURhdGFIRChJbWFn
ZURhdGEgaW1hZ2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQg
ZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3Jt
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNiBAQAogCiAgICAgW05ld09iamVjdF0g
RE9NTWF0cml4IGdldFRyYW5zZm9ybSgpOwogICAgIHZvaWQgc2V0VHJhbnNmb3JtKHVucmVzdHJp
Y3RlZCBmbG9hdCBhLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYiwgdW5yZXN0cmljdGVkIGZsb2F0IGMs
IHVucmVzdHJpY3RlZCBmbG9hdCBkLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZSwgdW5yZXN0cmljdGVk
IGZsb2F0IGYpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2Zvcm0ob3B0
aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0o
b3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CiAgICAgdm9pZCByZXNldFRyYW5z
Zm9ybSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNiBAQAogXSBpbnRlcmZhY2UgSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENhbnZh
c0VsZW1lbnQgY2FudmFzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHRyYW5zZmVy
RnJvbUltYWdlQml0bWFwKEltYWdlQml0bWFwPyBiaXRtYXApOworICAgIHZvaWQgdHJhbnNmZXJG
cm9tSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA/IGJpdG1hcCk7CiB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BhdGgyRC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBFeHBvcnRNYWNybz1XRUJD
T1JFX0VYUE9SVAogXSBpbnRlcmZhY2UgUGF0aDJEIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgYWRkUGF0aChQYXRoMkQgcGF0aCwgb3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5z
Zm9ybSk7CisgICAgdm9pZCBhZGRQYXRoKFBhdGgyRCBwYXRoLCBvcHRpb25hbCBET01NYXRyaXgy
REluaXQgdHJhbnNmb3JtKTsKIH07CiAKIFBhdGgyRCBpbXBsZW1lbnRzIENhbnZhc1BhdGg7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1MCwx
MCArMzUwLDEwIEBAIHR5cGVkZWYgKEltYWdlRGF0YSBvciBIVE1MSW1hZ2VFbGVtZW50IG8KIAog
ICAgIC8vIFdlYkdMMSBsZWdhY3kgZW50cnlwb2ludHM6CiAgICAgdm9pZCB0ZXhJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXc/IHBpeGVscyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBz
b3VyY2UpOworICAgIHZvaWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1h
Z2VTb3VyY2U/IHNvdXJjZSk7CiAKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZm
ZXJWaWV3PyBwaXhlbHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0ZXhTdWJJbWFn
ZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/IHNvdXJjZSk7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4
SW1hZ2VTb3VyY2U/IHNvdXJjZSk7CiAKICAgICAvLyBXZWJHTDIgZW50cnlwb2ludHM6CiAgICAg
dm9pZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIHBib09mZnNldCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0NiwxMCBAQCB0
eXBlZGVmIChJbWFnZURhdGEgb3IgSFRNTEltYWdlRWxlbWVudCBvCiAgICAgLy8gY29uZmljdHMg
d2l0aCBvdmVybG9hZHMgaW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dC4KIAogICAgIHZvaWQgdGV4
SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3PyBwaXhlbHMpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFn
ZVNvdXJjZT8gc291cmNlKTsKKyAgICB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2UpOwogCiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEFycmF5QnVmZmVyVmlldz8gcGl4ZWxzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
dGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNl
PyBzb3VyY2UpOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2UpOwogCiAgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZl
clZpZXcgZGF0YSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMyArNDMsMTMgQEAgZW51bSBUZXh0VHJh
Y2tLaW5kIHsgInN1YnRpdGxlcyIsICJjYXB0aQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0
VHJhY2tDdWVMaXN0PyBjdWVzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVM
aXN0PyBhY3RpdmVDdWVzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZEN1ZShU
ZXh0VHJhY2tDdWUgY3VlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlQ3Vl
KFRleHRUcmFja0N1ZSBjdWUpOworICAgIHZvaWQgYWRkQ3VlKFRleHRUcmFja0N1ZSBjdWUpOwor
ICAgIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSBjdWUpOwogCiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmN1ZWNoYW5nZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWVFRSZWdp
b25MaXN0IHJlZ2lvbnM7CiAgICAgLy8gRklYTUU6IHJlZ2lvbiBwYXJhbWV0ZXIgc2hvdWxkIG5v
dCBiZSBudWxsYWJsZSBpbiBhZGRSZWdpb24gYW5kIHJlbW92ZVJlZ2lvbi4KICAgICB2b2lkIGFk
ZFJlZ2lvbihWVFRSZWdpb24/IHJlZ2lvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHJlbW92ZVJlZ2lvbihWVFRSZWdpb24/IHJlZ2lvbik7CisgICAgdm9pZCByZW1vdmVSZWdpb24o
VlRUUmVnaW9uPyByZWdpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IE9CU09MRVRFID0gNTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hv
cnQgc3RhdHVzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHVwZGF0ZSgpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzd2FwQ2FjaGUoKTsKKyAgICB2b2lkIHVwZGF0ZSgp
OworICAgIHZvaWQgc3dhcENhY2hlKCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbmNoZWNraW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9D
cnlwdG8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw1ICszMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKIF0gaW50ZXJmYWNlIENyeXB0byB7CiAgICAgW0NvbmRp
dGlvbmFsPVNVQlRMRV9DUllQVE9dIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdWJ0bGVDcnlwdG8gc3Vi
dGxlOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXJyYXlCdWZmZXJWaWV3IGdldFJhbmRvbVZh
bHVlcyhbUmV0dXJuVmFsdWVdIEFycmF5QnVmZmVyVmlldyBhcnJheSk7CisgICAgQXJyYXlCdWZm
ZXJWaWV3IGdldFJhbmRvbVZhbHVlcyhbUmV0dXJuVmFsdWVdIEFycmF5QnVmZmVyVmlldyBhcnJh
eSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxNiArNDEsMTYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyByYW5nZUNvdW50OwogCiAgICAgdm9pZCBjb2xsYXBzZShOb2RlPyBub2RlLCBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBjb2xsYXBzZVRvRW5kKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbGxh
cHNlVG9TdGFydCgpOworICAgIHZvaWQgY29sbGFwc2VUb0VuZCgpOworICAgIHZvaWQgY29sbGFw
c2VUb1N0YXJ0KCk7CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgZGVsZXRlRnJvbURvY3VtZW50
KCk7CiAgICAgYm9vbGVhbiBjb250YWluc05vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFu
IGFsbG93UGFydGlhbCA9IGZhbHNlKTsKICAgICB2b2lkIHNlbGVjdEFsbENoaWxkcmVuKE5vZGUg
bm9kZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZXh0ZW5kKE5vZGUgbm9kZSwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICB2b2lkIGV4dGVuZChOb2Rl
IG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFJhbmdlIGdldFJhbmdlQXQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
UmFuZ2UgZ2V0UmFuZ2VBdCh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2b2lkIHJlbW92ZUFs
bFJhbmdlcygpOwogICAgIHZvaWQgYWRkUmFuZ2UoUmFuZ2UgcmFuZ2UpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdHlw
ZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgbG9uZyByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sgY2FsbGJhY2spOyAvLyBGSVhNRTogU2hv
dWxkIHJldHVybiBhbiB1bnNpZ25lZCBsb25nLgogICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9uRnJh
bWUobG9uZyBoYW5kbGUpOyAvLyBGSVhNRTogaGFuZGxlIHNob3VsZCBiZSBhbiB1bnNpZ25lZCBs
b25nLgogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlJkluY3VtYmVudFdpbmRvdywgRG9Ob3RD
aGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0
aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0U3RhdGUmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNs
YXJlSW5IZWFkZXJdIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJn
ZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAKICAg
ICAvLyBPYnNvbGV0ZSBtZW1iZXJzLCBzdGlsbCBwYXJ0IG9mIHRoZSBIVE1MIHNwZWNpZmljYXRp
b24gKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI1dpbmRvdy1wYXJ0aWFsKS4KICAgICB2
b2lkIGNhcHR1cmVFdmVudHMoKTsgLy8gTm90IGltcGxlbWVudGVkLiBBbHNvIG5vdCBpbiBtb2Rl
cm4gc3RhbmRhcmRzLiBFbXB0eSBmdW5jdGlvbiBtYXkgaGVscCBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQuCkBAIC0xNzksOCArMTc5LDggQEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NT
T01TdHJpbmc7CiAgICAgV2ViS2l0UG9pbnQgd2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1Bh
Z2Uob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwsIG9wdGlvbmFsIFdlYktpdFBvaW50PyBwID0g
bnVsbCk7CiAKICAgICAvLyBJbnRlcm5hbCBvcGVyYXRpb25zLCBub3QgZXhwb3NlZCB0byB0aGUg
V2ViLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jvb3RJ
c0Fsd2F5c09wZW5dIE5vZGVMaXN0IGNvbGxlY3RNYXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJlZShO
b2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IEVuYWJsZWRGb3JXb3JsZD1zaGFkb3dSb290SXNBbHdheXNPcGVuXSBFbGVtZW50PyBtYXRjaGlu
Z0VsZW1lbnRJbkZsYXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAg
IFtFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gTm9kZUxpc3QgY29sbGVj
dE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3Rv
cnMpOworICAgIFtFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gRWxlbWVu
dD8gbWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJlZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0
b3JzKTsKIAogICAgIC8vIGlPUyBHZXN0dXJlIEFQSSBldmVudCBoYW5kbGVycy4KICAgICBbTm90
RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9SU9TX0dFU1RVUkVfRVZFTlRTXSBhdHRyaWJ1dGUgRXZl
bnRIYW5kbGVyIG9uZ2VzdHVyZWNoYW5nZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9y
d2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCBmb3J3YXJkKCk7CiAgICAgW0NhbGxXaXRoPURvY3Vt
ZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIGdvKG9wdGlvbmFsIGxvbmcgZGlzdGFu
Y2UgPSAwKTsKIAotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHB1c2hTdGF0
ZShhbnkgZGF0YSwgRE9NU3RyaW5nIHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51
bGwpOwotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VTdGF0ZShh
bnkgZGF0YSwgRE9NU3RyaW5nIHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwp
OworICAgIFtDdXN0b21dIHZvaWQgcHVzaFN0YXRlKGFueSBkYXRhLCBET01TdHJpbmcgdGl0bGUs
IG9wdGlvbmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CisgICAgW0N1c3RvbV0gdm9pZCByZXBs
YWNlU3RhdGUoYW55IGRhdGEsIERPTVN0cmluZyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1
cmwgPSBudWxsKTsKIH07CiAKIGVudW0gU2Nyb2xsUmVzdG9yYXRpb24geyAiYXV0byIsICJtYW51
YWwiIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVyQ2FsbFdpdGg9
QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3Ry
aW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2
ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb24sIEZvcndhcmREZWNsYXJlSW5I
ZWFkZXJdIHZvaWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1BY3RpdmVX
aW5kb3cmRmlyc3RXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgYXNzaWduKFVT
VlN0cmluZyB1cmwpOwogICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCByZXBsYWNlKFVT
VlN0cmluZyB1cmwpOwogICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJl
SW5IZWFkZXJdIHZvaWQgcmVsb2FkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCB0eXBlZGVmIGRvdWJsZSBE
T01IaWdoUmVzVGltZVN0YW1wOwogICAgIFtFbmFibGVkQXRSdW50aW1lPVJlc291cmNlVGltaW5n
XSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsOwogCiAg
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3VzZXItdGltaW5nLwotICAgIFtFbmFibGVkQXRS
dW50aW1lPVVzZXJUaW1pbmcsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIG1hcmsoRE9NU3RyaW5n
IG1hcmtOYW1lKTsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2b2lkIG1hcmso
RE9NU3RyaW5nIG1hcmtOYW1lKTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2
b2lkIGNsZWFyTWFya3Mob3B0aW9uYWwgRE9NU3RyaW5nIG1hcmtOYW1lKTsKLSAgICBbRW5hYmxl
ZEF0UnVudGltZT1Vc2VyVGltaW5nLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBtZWFzdXJlKERP
TVN0cmluZyBtZWFzdXJlTmFtZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0YXJ0TWFyaywgb3B0aW9u
YWwgRE9NU3RyaW5nIGVuZE1hcmspOworICAgIFtFbmFibGVkQXRSdW50aW1lPVVzZXJUaW1pbmdd
IHZvaWQgbWVhc3VyZShET01TdHJpbmcgbWVhc3VyZU5hbWUsIG9wdGlvbmFsIERPTVN0cmluZyBz
dGFydE1hcmssIG9wdGlvbmFsIERPTVN0cmluZyBlbmRNYXJrKTsKICAgICBbRW5hYmxlZEF0UnVu
dGltZT1Vc2VyVGltaW5nXSB2b2lkIGNsZWFyTWVhc3VyZXMob3B0aW9uYWwgRE9NU3RyaW5nIG1l
YXN1cmVOYW1lKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VP
YnNlcnZlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU9ic2VydmVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU9ic2VydmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAog
ICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBQZXJmb3JtYW5jZU9ic2VydmVyIHsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgb2JzZXJ2ZShQZXJmb3JtYW5jZU9ic2VydmVySW5pdCBvcHRpb25zKTsKKyAg
ICB2b2lkIG9ic2VydmUoUGVyZm9ybWFuY2VPYnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdm9p
ZCBkaXNjb25uZWN0KCk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNz
YWdlSGFuZGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJNZXNzYWdlSGFuZGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDUgKzI2LDUgQEAK
IFsKICAgICBDb25kaXRpb25hbD1VU0VSX01FU1NBR0VfSEFORExFUlMKIF0gaW50ZXJmYWNlIFVz
ZXJNZXNzYWdlSGFuZGxlciB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNz
YWdlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdl
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE1ICs0MCwxNSBAQCB0eXBlZGVmIChDYW52YXNJbWFn
ZVNvdXJjZSBvciBCbG9iIG9yIEltCiAKICAgICAvLyBUaW1lcnMKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdGFrZSBhIFRpbWVySGFuZGxlciAoYS5rLmEuIChET01TdHJpbmcgb3IgRnVuY3Rp
b24pKSByYXRoZXIgdGhhbiBhIFNjaGVkdWxlZEFjdGlvbi4KLSAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBsb25nIHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9u
IGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gbG9uZyBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlv
biBoYW5kbGVyLCBvcHRpb25hbCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsK
ICAgICB2b2lkIGNsZWFyVGltZW91dChvcHRpb25hbCBsb25nIGhhbmRsZSA9IDApOwogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgVGltZXJIYW5kbGVyIChhLmsuYS4gKERPTVN0cmlu
ZyBvciBGdW5jdGlvbikpIHJhdGhlciB0aGFuIGEgU2NoZWR1bGVkQWN0aW9uLgotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgc2V0SW50ZXJ2YWwoU2No
ZWR1bGVkQWN0aW9uIGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBh
cmd1bWVudHMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gbG9uZyBzZXRJbnRlcnZhbChT
Y2hlZHVsZWRBY3Rpb24gaGFuZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55Li4u
IGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVhckludGVydmFsKG9wdGlvbmFsIGxvbmcgaGFuZGxl
ID0gMCk7CiAKICAgICAvLyBCYXNlNjQgdXRpbGl0eSBtZXRob2RzLgotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIGF0b2IoRE9NU3RyaW5nIHN0cmluZyk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgYnRvYShET01TdHJpbmcgc3RyaW5nKTsKKyAgICBET01TdHJp
bmcgYXRvYihET01TdHJpbmcgc3RyaW5nKTsKKyAgICBET01TdHJpbmcgYnRvYShET01TdHJpbmcg
c3RyaW5nKTsKIAogICAgIC8vIFNlY3VyZSBDb250ZXh0cwogICAgIFtFbmFibGVkQXRSdW50aW1l
PUlzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNT
ZWN1cmVDb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw1ICszMiw1IEBACiAgICAgZ2V0dGVyIERPTVN0cmluZz8gZ2V0SXRlbShE
T01TdHJpbmcga2V5KTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNldHRlciB2b2lkIHNldEl0
ZW0oRE9NU3RyaW5nIGtleSwgRE9NU3RyaW5nIGRhdGEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gZGVsZXRlciB2b2lkIHJlbW92ZUl0ZW0oRE9NU3RyaW5nIGtleSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBjbGVhcigpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuZ2xlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuZ2xlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNiBAQAogCiAgICAg
YXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUs
IHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSk7CisgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAg
ICB2b2lkIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgaW50ZXJmYWNlIFNWR0dyYXBoaWNz
RWxlbWVudCA6IFNWR0VsZW1lbgogICAgIFtJbXBsZW1lbnRlZEFzPWdldFNjcmVlbkNUTUZvckJp
bmRpbmdzLCBOZXdPYmplY3RdIFNWR01hdHJpeCBnZXRTY3JlZW5DVE0oKTsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG5vdCBpbiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaGFzIGJlZW4gZHJvcHBl
ZCBieSBCbGluay4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4
IGdldFRyYW5zZm9ybVRvRWxlbWVudChvcHRpb25hbCBTVkdFbGVtZW50PyBlbGVtZW50ID0gbnVs
bCk7CisgICAgW05ld09iamVjdF0gU1ZHTWF0cml4IGdldFRyYW5zZm9ybVRvRWxlbWVudChvcHRp
b25hbCBTVkdFbGVtZW50PyBlbGVtZW50ID0gbnVsbCk7CiB9OwogCiBTVkdHcmFwaGljc0VsZW1l
bnQgaW1wbGVtZW50cyBTVkdUZXN0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNiBAQCBpbnRlcmZhY2UgU1ZHTGVuZ3RoIHsgCiAgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7CiAgICAg
YXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUs
IHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSk7CisgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAg
ICB2b2lkIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDExICsyOSwxMSBAQAogXSBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U1ZHTGVuZ3RoIGluaXRpYWxpemUoU1ZHTGVuZ3RoIGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU1ZHTGVuZ3RoIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBTVkdMZW5ndGggaW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggaXRlbSwg
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGgg
cmVwbGFjZUl0ZW0oU1ZHTGVuZ3RoIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5n
dGggaXRlbSk7CisgICAgdm9pZCBjbGVhcigpOworICAgIFNWR0xlbmd0aCBpbml0aWFsaXplKFNW
R0xlbmd0aCBpdGVtKTsKKyAgICBTVkdMZW5ndGggZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdMZW5ndGggaW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggaXRlbSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHTGVuZ3RoIHJlcGxhY2VJdGVtKFNWR0xlbmd0aCBpdGVt
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdMZW5ndGggcmVtb3ZlSXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5ndGggaXRlbSk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
NSArMzMsMTUgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBlOwogICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGY7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR01hdHJpeCBtdWx0aXBseShTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFNWR01hdHJpeCBpbnZlcnNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdNYXRyaXggdHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggc2NhbGUodW5yZXN0
cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01h
dHJpeCBzY2FsZU5vblVuaWZvcm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5y
ZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBT
VkdNYXRyaXggcm90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQg
eCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0
cml4IGZsaXBYKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggZmxpcFkoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBza2V3WCh1bnJlc3RyaWN0ZWQgZmxv
YXQgYW5nbGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHNrZXdZKHVucmVz
dHJpY3RlZCBmbG9hdCBhbmdsZSk7CisgICAgU1ZHTWF0cml4IG11bHRpcGx5KFNWR01hdHJpeCBz
ZWNvbmRNYXRyaXgpOworICAgIFNWR01hdHJpeCBpbnZlcnNlKCk7CisgICAgU1ZHTWF0cml4IHRy
YW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworICAg
IFNWR01hdHJpeCBzY2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3IpOworICAgIFNW
R01hdHJpeCBzY2FsZU5vblVuaWZvcm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwg
dW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWSk7CisgICAgU1ZHTWF0cml4IHJvdGF0ZSh1
bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOworICAgIFNWR01hdHJpeCByb3RhdGVGcm9tVmVjdG9y
KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CisgICAgU1ZHTWF0
cml4IGZsaXBYKCk7CisgICAgU1ZHTWF0cml4IGZsaXBZKCk7CisgICAgU1ZHTWF0cml4IHNrZXdY
KHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7CisgICAgU1ZHTWF0cml4IHNrZXdZKHVucmVzdHJp
Y3RlZCBmbG9hdCBhbmdsZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJl
ckxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxp
c3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTEgQEAKIGludGVyZmFjZSBTVkdO
dW1iZXJMaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJP
Zkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgaW5pdGlhbGl6ZShTVkdOdW1iZXIgaXRlbSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBpbnNlcnRJdGVtQmVmb3Jl
KFNWR051bWJlciBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFNWR051bWJlciByZXBsYWNlSXRlbShTVkdOdW1iZXIgaXRlbSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgcmVtb3ZlSXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBh
cHBlbmRJdGVtKFNWR051bWJlciBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgU1ZHTnVt
YmVyIGluaXRpYWxpemUoU1ZHTnVtYmVyIGl0ZW0pOworICAgIFNWR051bWJlciBnZXRJdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciBpbnNlcnRJdGVtQmVmb3JlKFNWR051
bWJlciBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgcmVwbGFjZUl0
ZW0oU1ZHTnVtYmVyIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciBy
ZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciBhcHBlbmRJdGVt
KFNWR051bWJlciBpdGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogaW50ZXJmYWNlIFNW
R1BhdGhTZWdMaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIGluaXRpYWxpemUoU1ZHUGF0aFNlZyBuZXdJ
dGVtKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgZ2V0SXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgaW5zZXJ0
SXRlbUJlZm9yZShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyByZXBsYWNlSXRlbShTVkdQYXRoU2VnIG5l
d0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZH
UGF0aFNlZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gU1ZHUGF0aFNlZyBhcHBlbmRJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSk7CisgICAg
dm9pZCBjbGVhcigpOworICAgIFNWR1BhdGhTZWcgaW5pdGlhbGl6ZShTVkdQYXRoU2VnIG5ld0l0
ZW0pOworICAgIFNWR1BhdGhTZWcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBT
VkdQYXRoU2VnIGluc2VydEl0ZW1CZWZvcmUoU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKyAgICBTVkdQYXRoU2VnIHJlcGxhY2VJdGVtKFNWR1BhdGhTZWcgbmV3SXRl
bSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUGF0aFNlZyByZW1vdmVJdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1BhdGhTZWcgYXBwZW5kSXRlbShTVkdQYXRoU2VnIG5l
d0l0ZW0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNiBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgeDsKICAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IE5ld09iamVjdF0gU1ZHUG9pbnQgbWF0cml4VHJhbnNmb3JtKFNWR01hdHJpeCBtYXRyaXgpOwor
ICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXggbWF0cml4
KTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTEgKzI2LDExIEBACiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0IHsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBT
VkdQb2ludCBpbml0aWFsaXplKFNWR1BvaW50IGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU1ZHUG9pbnQgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFNWR1BvaW50IGluc2VydEl0ZW1CZWZvcmUoU1ZHUG9pbnQgaXRlbSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCByZXBsYWNl
SXRlbShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFNWR1BvaW50IHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCBhcHBlbmRJdGVtKFNWR1BvaW50IGl0ZW0pOwor
ICAgIHZvaWQgY2xlYXIoKTsKKyAgICBTVkdQb2ludCBpbml0aWFsaXplKFNWR1BvaW50IGl0ZW0p
OworICAgIFNWR1BvaW50IGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9p
bnQgaW5zZXJ0SXRlbUJlZm9yZShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICBTVkdQb2ludCByZXBsYWNlSXRlbShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBTVkdQb2ludCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IFNWR1BvaW50IGFwcGVuZEl0ZW0oU1ZHUG9pbnQgaXRlbSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHJpbmdMaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0cmluZ0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTEg
QEAKIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5pdGlhbGl6ZShE
T01TdHJpbmcgaXRlbSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0SXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBpbnNlcnRJdGVtQmVmb3JlKERPTVN0cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZXBsYWNlSXRlbShET01TdHJpbmcg
aXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01T
dHJpbmcgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyBhcHBlbmRJdGVtKERPTVN0cmluZyBpdGVtKTsKKyAgICB2b2lkIGNs
ZWFyKCk7CisgICAgRE9NU3RyaW5nIGluaXRpYWxpemUoRE9NU3RyaW5nIGl0ZW0pOworICAgIERP
TVN0cmluZyBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBpbnNl
cnRJdGVtQmVmb3JlKERPTVN0cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBE
T01TdHJpbmcgcmVwbGFjZUl0ZW0oRE9NU3RyaW5nIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIERPTVN0cmluZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERP
TVN0cmluZyBhcHBlbmRJdGVtKERPTVN0cmluZyBpdGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDEzICszNCwxMyBAQCBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50
IDogU1ZHR3JhCiAKICAgICBsb25nIGdldE51bWJlck9mQ2hhcnMoKTsKICAgICB1bnJlc3RyaWN0
ZWQgZmxvYXQgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0U3ViU3RyaW5nTGVuZ3RoKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUG9pbnQgZ2V0U3RhcnRQb3NpdGlv
bk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdQb2ludCBnZXRFbmRQb3NpdGlvbk9mQ2hhcihvcHRp
b25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBTVkdSZWN0IGdldEV4dGVudE9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0
IGdldFJvdGF0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7Cisg
ICAgdW5yZXN0cmljdGVkIGZsb2F0IGdldFN1YlN0cmluZ0xlbmd0aChvcHRpb25hbCB1bnNpZ25l
ZCBsb25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7Cisg
ICAgW05ld09iamVjdF0gU1ZHUG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IGdldEVu
ZFBvc2l0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAg
W05ld09iamVjdF0gU1ZHUmVjdCBnZXRFeHRlbnRPZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQgPSAwKTsKKyAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Um90YXRpb25PZkNoYXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKICAgICBsb25nIGdldENoYXJOdW1B
dFBvc2l0aW9uKFNWR1BvaW50IHBvaW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2VsZWN0U3ViU3RyaW5nKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwgb3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwKTsKKyAgICB2b2lkIHNlbGVjdFN1YlN0cmluZyhv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoID0gMCk7CiB9OwogCiAvLyBGSVhNRTogU1ZHVGV4dENvbnRlbnRFbGVtZW50IGlzIG5v
dCBzdXBwb3NlZCB0byBpbXBsZW1lbnQgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTEgKzM1LDExIEBACiAgICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR01hdHJp
eCBtYXRyaXg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBhbmds
ZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNYXRyaXgoU1ZHTWF0cml4IG1h
dHJpeCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFRyYW5zbGF0ZSh1bnJlc3Ry
aWN0ZWQgZmxvYXQgdHgsIHVucmVzdHJpY3RlZCBmbG9hdCB0eSk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldFNjYWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVk
IGZsb2F0IHN5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Um90YXRlKHVucmVz
dHJpY3RlZCBmbG9hdCBhbmdsZSwgdW5yZXN0cmljdGVkIGZsb2F0IGN4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgY3kpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTa2V3WCh1bnJlc3Ry
aWN0ZWQgZmxvYXQgYW5nbGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTa2V3
WSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOworICAgIHZvaWQgc2V0TWF0cml4KFNWR01hdHJp
eCBtYXRyaXgpOworICAgIHZvaWQgc2V0VHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB0eCwg
dW5yZXN0cmljdGVkIGZsb2F0IHR5KTsKKyAgICB2b2lkIHNldFNjYWxlKHVucmVzdHJpY3RlZCBm
bG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5KTsKKyAgICB2b2lkIHNldFJvdGF0ZSh1bnJl
c3RyaWN0ZWQgZmxvYXQgYW5nbGUsIHVucmVzdHJpY3RlZCBmbG9hdCBjeCwgdW5yZXN0cmljdGVk
IGZsb2F0IGN5KTsKKyAgICB2b2lkIHNldFNrZXdYKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7
CisgICAgdm9pZCBzZXRTa2V3WSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNCArMjcsMTQgQEAKIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0IHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdUcmFuc2Zvcm0gaW5pdGlhbGl6ZShTVkdUcmFuc2Zvcm0gaXRlbSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBpbnNlcnRJdGVtQmVmb3JlKFNW
R1RyYW5zZm9ybSBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFNWR1RyYW5zZm9ybSByZXBsYWNlSXRlbShTVkdUcmFuc2Zvcm0gaXRlbSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gcmVt
b3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNW
R1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKKyAgICB2b2lkIGNsZWFy
KCk7CisgICAgU1ZHVHJhbnNmb3JtIGluaXRpYWxpemUoU1ZHVHJhbnNmb3JtIGl0ZW0pOworICAg
IFNWR1RyYW5zZm9ybSBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5z
Zm9ybSBpbnNlcnRJdGVtQmVmb3JlKFNWR1RyYW5zZm9ybSBpdGVtLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBTVkdUcmFuc2Zvcm0gcmVwbGFjZUl0ZW0oU1ZHVHJhbnNmb3JtIGl0ZW0sIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5zZm9ybSByZW1vdmVJdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBp
dGVtKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0g
Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXggbWF0cml4KTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7Cisg
ICAgW05ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgo
U1ZHTWF0cml4IG1hdHJpeCk7CisgICAgW05ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlk
YXRlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw1OCArMzMsNTggQEAgZW51bSBG
b250TG9hZFRpbWluZ092ZXJyaWRlIHsgIkJsb2NrIiwgIgogICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRl
cmZhY2UgSW50ZXJuYWxTZXR0aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChi
b29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKIAogICAgIC8vIEZvbnRzLCB0ZXh0Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldFN0YW5kYXJkRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01T
dHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2VyaWZGb250
RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHks
IERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGaXhl
ZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KERPTVN0cmluZyBmYW1p
bHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRG
YW50YXN5Rm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoRE9NU3Ry
aW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyhib29sZWFuIHByZWZlclBpY3Rv
Z3JhcGhzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9udExvYWRUaW1pbmdP
dmVycmlkZShGb250TG9hZFRpbWluZ092ZXJyaWRlIG92ZXJyaWRlKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0U2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucyhib29sZWFu
IGlnbm9yZSk7CisgICAgdm9pZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWls
eSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHkoRE9NU3Ry
aW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0
Rml4ZWRGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAg
IHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNj
cmlwdCk7CisgICAgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBE
T01TdHJpbmcgc2NyaXB0KTsKKyAgICB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KERPTVN0
cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0Rm9udEZhbGxiYWNr
UHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2xlYW4gcHJlZmVyUGljdG9ncmFwaHMpOworICAgIHZvaWQg
c2V0Rm9udExvYWRUaW1pbmdPdmVycmlkZShGb250TG9hZFRpbWluZ092ZXJyaWRlIG92ZXJyaWRl
KTsKKyAgICB2b2lkIHNldFNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoYm9vbGVhbiBp
Z25vcmUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFRleHRBdXRvc2l6aW5n
RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRUZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZShsb25nIHdpZHRoLCBsb25nIGhlaWdo
dCk7CisgICAgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsK
KyAgICB2b2lkIHNldFRleHRBdXRvc2l6aW5nV2luZG93U2l6ZU92ZXJyaWRlKGxvbmcgd2lkdGgs
IGxvbmcgaGVpZ2h0KTsKIAogICAgIC8vIE1lZGlhCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNldENhblN0YXJ0TWVkaWEoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbQ29uZGl0aW9uYWw9
VklERU9fVFJBQ0ssIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNob3VsZERpc3BsYXlUcmFj
a0tpbmQoRE9NU3RyaW5nIGtpbmQsIGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW0NvbmRpdGlvbmFs
PVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzaG91bGREaXNwbGF5VHJh
Y2tLaW5kKERPTVN0cmluZyB0cmFja0tpbmQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoRE9NU3RyaW5nIHBvc3Rlcik7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGlu
Z0NvbnRyb2xzKHVucmVzdHJpY3RlZCBkb3VibGUgdGltZSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldE1lZGlhVHlwZU92ZXJyaWRlKERPTVN0cmluZyBtZWRpYVR5cGVPdmVycmlk
ZSk7CisgICAgdm9pZCBzZXRDYW5TdGFydE1lZGlhKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgW0Nv
bmRpdGlvbmFsPVZJREVPX1RSQUNLXSB2b2lkIHNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9N
U3RyaW5nIGtpbmQsIGJvb2xlYW4gZW5hYmxlZCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RS
QUNLXSBib29sZWFuIHNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9NU3RyaW5nIHRyYWNrS2luZCk7
CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoRE9NU3RyaW5nIHBvc3Rlcik7Cisg
ICAgdm9pZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyh1
bnJlc3RyaWN0ZWQgZG91YmxlIHRpbWUpOworICAgIHZvaWQgc2V0TWVkaWFUeXBlT3ZlcnJpZGUo
RE9NU3RyaW5nIG1lZGlhVHlwZU92ZXJyaWRlKTsKICAgICB2b2lkIHNldEFsbG93c0FpclBsYXlG
b3JNZWRpYVBsYXliYWNrKGJvb2xlYW4gYXZhaWxhYmxlKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXF1aXJl
c1NlY3VyZUNvbm5lY3Rpb24oYm9vbGVhbiBlbmFibGUpOworICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU1dIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJv
b2xlYW4gZW5hYmxlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGb3JjZVBl
bmRpbmdXZWJHTFBvbGljeShib29sZWFuIGZvcmNlZCk7CisgICAgdm9pZCBzZXRGb3JjZVBlbmRp
bmdXZWJHTFBvbGljeShib29sZWFuIGZvcmNlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKGJvb2xlYW4gZW5hYmxl
ZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFlvdVR1YmVGbGFzaFBsdWdpblJl
cGxhY2VtZW50RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0UXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRZ
b3VUdWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAog
ICAgIC8vIEVkaXRpbmcsIGZvcm1zCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVk
aXRpbmdCZWhhdmlvcihET01TdHJpbmcgYmVoYXZpb3IpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRTaG91bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weShib29sZWFuIGNvbnZl
cnRQb3NpdGlvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByZWZlck1JTUVU
eXBlRm9ySW1hZ2VzKGJvb2xlYW4gcHJlZmVyTWltZVR5cGVGb3JJbWFnZSk7CisgICAgdm9pZCBz
ZXRFZGl0aW5nQmVoYXZpb3IoRE9NU3RyaW5nIGJlaGF2aW9yKTsKKyAgICB2b2lkIHNldFNob3Vs
ZENvbnZlcnRQb3NpdGlvblN0eWxlT25Db3B5KGJvb2xlYW4gY29udmVydFBvc2l0aW9uKTsKKyAg
ICB2b2lkIHNldFByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKGJvb2xlYW4gcHJlZmVyTWltZVR5cGVG
b3JJbWFnZSk7CiAKICAgICAvLyBPdGhlciBzd2l0Y2hlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGVk
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5
KERPTVN0cmluZyBwb2xpY3kpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRVc2VM
ZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKGJvb2xlYW4gZW5hYmxlZCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEVu
YWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
QmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoYm9vbGVhbiBoYXNFeHRlbmRlZEJhY2tn
cm91bmQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTY3JvbGxpbmdUcmVlSW5j
bHVkZXNGcmFtZXMoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0QWxsb3dVbmNsYW1wZWRTY3JvbGxQb3NpdGlvbihib29sZWFuIGFsbG93VW5jbGFtcGVk
KTsKLQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCh1bnJlc3RyaWN0ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayhib29sZWFuIGFsbG93
cyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEFsbG93c0lubGluZU1lZGlhUGxh
eWJhY2tBZnRlckZ1bGxzY3JlZW4oYm9vbGVhbiBhbGxvd3MpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBzZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJp
YnV0ZShib29sZWFuIHJlcXVpcmVzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
RnJhbWVGbGF0dGVuaW5nKEZyYW1lRmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7Cisg
ICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7CisgICAg
dm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRQREZJ
bWFnZUNhY2hpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7CisgICAgdm9pZCBzZXRVc2VMZWdh
Y3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKGJvb2xlYW4gZW5hYmxlZCk7CisgICAg
dm9pZCBzZXRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3BFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7
CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZShib29sZWFuIGhh
c0V4dGVuZGVkQmFja2dyb3VuZCk7CisgICAgdm9pZCBzZXRTY3JvbGxpbmdUcmVlSW5jbHVkZXNG
cmFtZXMoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNldEFsbG93VW5jbGFtcGVkU2Nyb2xs
UG9zaXRpb24oYm9vbGVhbiBhbGxvd1VuY2xhbXBlZCk7CisKKyAgICB2b2lkIHNldE1pbmltdW1U
aW1lckludGVydmFsKHVucmVzdHJpY3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOworICAg
IHZvaWQgc2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayhib29sZWFuIGFsbG93cyk7CisgICAg
dm9pZCBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuKGJvb2xlYW4g
YWxsb3dzKTsKKyAgICB2b2lkIHNldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5s
aW5lQXR0cmlidXRlKGJvb2xlYW4gcmVxdWlyZXMpOworICAgIHZvaWQgc2V0RnJhbWVGbGF0dGVu
aW5nKEZyYW1lRmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7CiAKICAgICAvLyBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLgogICAgIHZvaWQgc2V0SW5kZXhlZERCV29ya2Vyc0VuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKQEAgLTkzLDIxICs5MywyMSBAQCBlbnVtIEZvbnRMb2FkVGltaW5n
T3ZlcnJpZGUgeyAiQmxvY2siLCAiCiAgICAgdm9pZCBzZXRXZWJHUFVFbmFibGVkKGJvb2xlYW4g
ZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRXZWJWUkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Q
b2xpY3koKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VXNlckludGVyZmFjZURp
cmVjdGlvblBvbGljeShET01TdHJpbmcgcG9saWN5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IERPTVN0cmluZyBzeXN0ZW1MYXlvdXREaXJlY3Rpb24oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKERPTVN0cmluZyBkaXJlY3Rpb24pOwor
ICAgIERPTVN0cmluZyB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KCk7CisgICAgdm9pZCBz
ZXRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KERPTVN0cmluZyBwb2xpY3kpOworICAgIERP
TVN0cmluZyBzeXN0ZW1MYXlvdXREaXJlY3Rpb24oKTsKKyAgICB2b2lkIHNldFN5c3RlbUxheW91
dERpcmVjdGlvbihET01TdHJpbmcgZGlyZWN0aW9uKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gYm9vbGVhbiBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQoKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgc2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7
CisgICAgYm9vbGVhbiBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQoKTsKKyAgICB2b2lkIHNldERl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxp
dHkoYm9vbGVhbiBzaG91bGRNb2NrKTsKKyAgICB2b2lkIHNldFNob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkoYm9vbGVhbiBzaG91bGRNb2NrKTsKIAogICAgIGF0dHJpYnV0
ZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRBY2Nlc3Np
YmlsaXR5VmFsdWU7CiAgICAgYXR0cmlidXRlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3Jj
ZWREaXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlOwogICAgIGF0dHJpYnV0ZSBG
b3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3Np
YmlsaXR5VmFsdWU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2hvdWxkTWFu
YWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkoYm9vbGVhbiBzaG91bGQpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoYm9vbGVhbiBlbmFi
bGVkKTsKKyAgICB2b2lkIHNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KGJvb2xl
YW4gc2hvdWxkKTsKKyAgICB2b2lkIHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29s
ZWFuIGVuYWJsZWQpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3IgewogICAgIGJvb2xlYW4gaXNQYWludGluZ0ZyZXF1ZW50bHkoRWxlbWVudCBlbGVt
ZW50KTsKICAgICB2b2lkIGluY3JlbWVudEZyZXF1ZW50UGFpbnRDb3VudGVyKEVsZW1lbnQgZWxl
bWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBlbGVtZW50UmVuZGVy
VHJlZUFzVGV4dChFbGVtZW50IGVsZW1lbnQpOworICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVy
VHJlZUFzVGV4dChFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoRE9N
U3RyaW5nIHVybCk7CiAgICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoRE9NU3Ry
aW5nIHVybCk7CiAgICAgRE9NU3RyaW5nIGZldGNoUmVzcG9uc2VTb3VyY2UoRmV0Y2hSZXNwb25z
ZSByZXNwb25zZSk7CkBAIC0xMjUsOTMgKzEyNSw5MyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0Jl
aGF2aW9yIHsKICAgICBsb25nIGRlZmVycmVkR3JvdXBSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hl
ZXQpOwogICAgIGxvbmcgZGVmZXJyZWRLZXlmcmFtZXNSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hl
ZXQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUo
Tm9kZSByb290KTsKKyAgICBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUoTm9kZSByb290KTsKICAg
ICBET01TdHJpbmcgc2hhZG93UHNldWRvSWQoRWxlbWVudCBlbGVtZW50KTsKICAgICB2b2lkIHNl
dFNoYWRvd1BzZXVkb0lkKEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGlkKTsKICAgICBOb2Rl
IHRyZWVTY29wZVJvb3ROb2RlKE5vZGUgbm9kZSk7CiAgICAgTm9kZSBwYXJlbnRUcmVlU2NvcGUo
Tm9kZSBub2RlKTsKIAogICAgIC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRp
ZGF0ZUNvdW50KCk7CisgICAgdW5zaWduZWQgbG9uZyBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5k
aWRhdGVDb3VudCgpOwogCiAgICAgLy8gQ1NTIEFuaW1hdGlvbiB0ZXN0aW5nLgogICAgIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4g
YW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVh
biBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudChET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVt
ZW50KERPTVN0cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGlt
ZSwgRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQpOworICAgIHZvaWQgc3VzcGVu
ZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBib29sZWFu
IGFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKTsKKyAgICBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRU
aW1lT25FbGVtZW50KERPTVN0cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50KTsKKyAgICBib29sZWFuIHBhdXNlQW5pbWF0aW9u
QXRUaW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQp
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYW5pbWF0aW9uc0ludGVydmFsOwogCiAg
ICAgLy8gQ1NTIFRyYW5zaXRpb24gdGVzdGluZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJv
b2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eU5h
bWUsIHVucmVzdHJpY3RlZCBkb3VibGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVk
b0VsZW1lbnQoRE9NU3RyaW5nIHByb3BlcnR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGlt
ZSwgRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQpOworICAgIGJvb2xlYW4gcGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIHVucmVz
dHJpY3RlZCBkb3VibGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOworICAgIGJvb2xlYW4g
cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5n
IHBzZXVkb0lkKTsKIAogICAgIERPTVN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCBl
bGVtZW50KTsKICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0RWxl
bWVudCBlbGVtZW50LCBET01TdHJpbmcgY29sb3JWYWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBzZXF1ZW5jZTxET01TdHJpbmc+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9y
eUl0ZW0oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9ybUNvbnRyb2xTdGF0
ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7CisgICAg
c2VxdWVuY2U8RE9NU3RyaW5nPiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVt
KCk7CisgICAgdm9pZCBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKHNl
cXVlbmNlPERPTVN0cmluZz4gdmFsdWVzKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9N
UmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CisgICAgRE9NUmVjdCBhYnNvbHV0ZUNhcmV0Qm91
bmRzKCk7CiAKICAgICBET01SZWN0IGJvdW5kaW5nQm94KEVsZW1lbnQgZWxlbWVudCk7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3RMaXN0IGluc3BlY3RvckhpZ2hsaWdodFJlY3Rz
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5zcGVjdG9ySGlnaGxpZ2h0
T2JqZWN0KCk7CisgICAgRE9NUmVjdExpc3QgaW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoKTsKKyAg
ICBET01TdHJpbmcgaW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KCk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUgbm9kZSwgRE9N
U3RyaW5nIG1hcmtlclR5cGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IG1hcmtl
clJhbmdlRm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtYXJrZXJEZXNj
cmlwdGlvbkZvck5vZGUoTm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZHVtcE1hcmtl
clJlY3RzKERPTVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICB1bnNpZ25lZCBsb25nIG1hcmtlckNv
dW50Rm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICBSYW5nZT8g
bWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUsIHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUo
Tm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgRE9NU3RyaW5nIGR1bXBNYXJrZXJSZWN0cyhET01TdHJpbmcgbWFya2VyVHlwZSk7CiAgICAg
dm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoUmFuZ2UgcmFuZ2UsIGJvb2xlYW4gaXNBY3RpdmUpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKGJvb2xlYW4gZmxhZyk7CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhp
Z2hsaWdodGVkKGJvb2xlYW4gZmxhZyk7CiAKICAgICB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUo
KTsKICAgICB2b2lkIHNldEZvbnRTbW9vdGhpbmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGxvbmcg
eCwgbG9uZyB5KTsKKyAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihsb25nIHgsIGxvbmcg
eSk7CiAKICAgICAvLyBMaWtlIEVsZW1lbnQuc2Nyb2xsVG8oKSwgYnV0IHdpdGhvdXQgY29uc3Rh
aW50cywgZm9yIHRlc3RpbmcgcnViYmVyLWJhbmRpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHVuY29uc3RyYWluZWRTY3JvbGxUbyhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICB2b2lkIHVuY29uc3RyYWlu
ZWRTY3JvbGxUbyhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0
cmljdGVkIGRvdWJsZSB5KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBsYXlv
dXRWaWV3cG9ydFJlY3QoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgdmlzdWFs
Vmlld3BvcnRSZWN0KCk7CisgICAgRE9NUmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKTsKKyAgICBE
T01SZWN0IHZpc3VhbFZpZXdwb3J0UmVjdCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsKKyAg
ICB2b2lkIHNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRQYWdpbmF0aW9uKERPTVN0cmluZyBt
b2RlLCBsb25nIGdhcCwgb3B0aW9uYWwgbG9uZyBwYWdlTGVuZ3RoID0gMCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbGVhbiBl
bmFibGVkKTsKKyAgICB2b2lkIHNldFBhZ2luYXRpb24oRE9NU3RyaW5nIG1vZGUsIGxvbmcgZ2Fw
LCBvcHRpb25hbCBsb25nIHBhZ2VMZW5ndGggPSAwKTsKKyAgICB2b2lkIHNldFBhZ2luYXRpb25M
aW5lR3JpZEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIGNvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCh1bnJlc3RyaWN0ZWQgZmxvYXQg
ZGV2aWNlUGl4ZWxSYXRpbywgbG9uZyBkZXZpY2VXaWR0aCwgbG9uZyBkZXZpY2VIZWlnaHQsIGxv
bmcgYXZhaWxhYmxlV2lkdGgsIGxvbmcgYXZhaWxhYmxlSGVpZ2h0KTsKKyAgICBET01TdHJpbmcg
Y29uZmlndXJhdGlvbkZvclZpZXdwb3J0KHVucmVzdHJpY3RlZCBmbG9hdCBkZXZpY2VQaXhlbFJh
dGlvLCBsb25nIGRldmljZVdpZHRoLCBsb25nIGRldmljZUhlaWdodCwgbG9uZyBhdmFpbGFibGVX
aWR0aCwgbG9uZyBhdmFpbGFibGVIZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBi
b29sZWFuIHdhc0xhc3RDaGFuZ2VVc2VyRWRpdChFbGVtZW50IHRleHRGaWVsZCk7CisgICAgYm9v
bGVhbiB3YXNMYXN0Q2hhbmdlVXNlckVkaXQoRWxlbWVudCB0ZXh0RmllbGQpOwogICAgIGJvb2xl
YW4gZWxlbWVudFNob3VsZEF1dG9Db21wbGV0ZShIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVu
dCk7CiAgICAgdm9pZCBzZXRFZGl0aW5nVmFsdWUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1l
bnQsIERPTVN0cmluZyB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVs
ZW1lbnQgaW5wdXRFbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0U2hvd0F1
dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBBdXRvRmlsbEJ1dHRv
blR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFu
Z2U/IHJhbmdlT2ZTdHJpbmcoRE9NU3RyaW5nIHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwg
c2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVl
bmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3Ry
aW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOworICAgIFJhbmdlPyBy
YW5nZU9mU3RyaW5nKERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVl
bmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOworICAgIHVuc2lnbmVkIGxvbmcgY291bnRNYXRj
aGVzRm9yVGV4dChET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9u
cywgRE9NU3RyaW5nIG1hcmtNYXRjaGVzKTsKKyAgICB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1h
dGNoZXMoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxl
bWVudCBmb3JtQ29udHJvbEVsZW1lbnQpOworICAgIERPTVN0cmluZyBhdXRvZmlsbEZpZWxkTmFt
ZShFbGVtZW50IGZvcm1Db250cm9sRWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcGFpbnRDb250cm9sVGludHMoKTsKKyAgICB2b2lkIHBhaW50Q29udHJvbFRpbnRzKCk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVt
ZW50IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CisgICAgdm9pZCBz
Y3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcg
dywgbG9uZyBoKTsKIAogICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVt
ZW50IHNjb3BlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVu
c2lnbmVkIGxvbmcgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2Up
OwogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdl
IHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIFJh
bmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VM
ZW5ndGgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24obG9uZyB4LCBsb25nIHkpOworICAgIFJhbmdlPyByYW5nZUZvckRp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFu
Z2VPZlN0cmluZ05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcg
dGFyZ2V0T2Zmc2V0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWxlZ2F0
ZXNTY3JvbGxpbmcoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9s
bGluZyhib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGxh
c3RTcGVsbENoZWNrUmVxdWVzdFNlcXVlbmNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBs
b25nIGxhc3RTcGVsbENoZWNrUHJvY2Vzc2VkU2VxdWVuY2UoKTsKKyAgICBsb25nIGxhc3RTcGVs
bENoZWNrUmVxdWVzdFNlcXVlbmNlKCk7CisgICAgbG9uZyBsYXN0U3BlbGxDaGVja1Byb2Nlc3Nl
ZFNlcXVlbmNlKCk7CiAKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKTsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoc2VxdWVuY2U8RE9N
U3RyaW5nPiBsYW5ndWFnZXMpOwpAQCAtMjE5LDEzICsyMTksMTMgQEAgZW51bSBFdmVudFRocm90
dGxpbmdCZWhhdmlvciB7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiB1c2VyUHJlZmVycmVkQXVk
aW9DaGFyYWN0ZXJpc3RpY3MoKTsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRBdWRpb0NoYXJh
Y3RlcmlzdGljKERPTVN0cmluZyBjaGFyYWN0ZXJpc3RpYyk7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuc2lnbmVkIGxvbmcgd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyB0b3VjaEV2ZW50SGFuZGxlckNvdW50KCk7Cisg
ICAgdW5zaWduZWQgbG9uZyB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWduZWQg
bG9uZyB0b3VjaEV2ZW50SGFuZGxlckNvdW50KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IERPTVJlY3RMaXN0IHRvdWNoRXZlbnRSZWN0c0ZvckV2ZW50KERPTVN0cmluZyBldmVudE5hbWUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRM
aXN0ZW5lclJlY3RzKCk7CisgICAgRE9NUmVjdExpc3QgdG91Y2hFdmVudFJlY3RzRm9yRXZlbnQo
RE9NU3RyaW5nIGV2ZW50TmFtZSk7CisgICAgRE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRM
aXN0ZW5lclJlY3RzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGVMaXN0PyBub2Rl
c0Zyb21SZWN0KERvY3VtZW50IGRvY3VtZW50LCBsb25nIHgsIGxvbmcgeSwKKyAgICBOb2RlTGlz
dD8gbm9kZXNGcm9tUmVjdChEb2N1bWVudCBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksCiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywgdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywK
ICAgICAgICAgYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRl
bnQsIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiAKQEAgLTI1MSw3ICsyNTEsNyBA
QCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZTY3JvbGxhYmxlQXJlYXMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVh
biBpc1BhZ2VCb3hWaXNpYmxlKGxvbmcgcGFnZU51bWJlcik7CisgICAgYm9vbGVhbiBpc1BhZ2VC
b3hWaXNpYmxlKGxvbmcgcGFnZU51bWJlcik7CiAKICAgICB1bnNpZ25lZCBsb25nIGltYWdlRnJh
bWVJbmRleChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHZvaWQgc2V0SW1hZ2VGcmFt
ZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgZHVyYXRpb24pOwpAQCAtMjY2LDggKzI2Niw4IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3IgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJbnRlcm5hbFNldHRpbmdzIHNldHRp
bmdzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdvcmtlclRocmVhZENv
dW50OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBhcmVTVkdBbmltYXRpb25zUGF1c2VkOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZG91Ymxl
IHN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQpOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGFyZVNWR0FuaW1hdGlvbnNQYXVzZWQ7CisgICAgZG91Ymxl
IHN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQpOwogCiAgICAgLy8g
RmxhZ3MgZm9yIGxheWVyVHJlZUFzVGV4dC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlF
Ul9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAxOwpAQCAtMjc3LDMxICsyNzcsMzEgQEAg
ZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
TEFZRVJfVFJFRV9JTkNMVURFU19DT05URU5UX0xBWUVSUyA9IDE2OwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfQUNDRUxFUkFURVNfRFJBV0lORyA9IDMyOwog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfQkFDS0lOR19TVE9S
RV9BVFRBQ0hFRCA9IDY0OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGxheWVy
VHJlZUFzVGV4dChEb2N1bWVudCBkb2N1bWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxh
Z3MgPSAwKTsKKyAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50IGRvY3VtZW50
LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxvbmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVt
ZW50KTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBl
bGVtZW50KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIG1haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zKCk7IC8vIEZJWE1FOiByZW5hbWUgdG8gc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKCkuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCBu
b25GYXN0U2Nyb2xsYWJsZVJlY3RzKCk7CisgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dCgpOworICAgIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpOyAv
LyBGSVhNRTogcmVuYW1lIHRvIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpLgorICAgIERP
TVJlY3RMaXN0IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgIERPTVN0cmluZyByZXBh
aW50UmVjdHNBc1RleHQoKTsKIAogICAgIC8vIFRoZXNlIHRocm93IGlmIHRoZSBlbGVtZW50IGRv
ZXMgbm90IGhhdmUgYSBjb21wb3NpdGluZyBsYXllci4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0RWxlbWVudFVzZXNEaXNwbGF5TGlzdERyYXdpbmcoRWxlbWVudCBlbGVtZW50LCBi
b29sZWFuIHVzZXNEaXNwbGF5TGlzdERyYXdpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRFbGVtZW50VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoRWxlbWVudCBlbGVtZW50LCBi
b29sZWFuIHRyYWNrUmVwbGF5KTsKKyAgICB2b2lkIHNldEVsZW1lbnRVc2VzRGlzcGxheUxpc3RE
cmF3aW5nKEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB1c2VzRGlzcGxheUxpc3REcmF3aW5nKTsK
KyAgICB2b2lkIHNldEVsZW1lbnRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShFbGVtZW50IGVsZW1l
bnQsIGJvb2xlYW4gdHJhY2tSZXBsYXkpOwogCiAgICAgLy8gRmxhZ3MgZm9yIGRpc3BsYXlMaXN0
Rm9yRWxlbWVudC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1RfSU5DTFVE
RVNfUExBVEZPUk1fT1BFUkFUSU9OUyA9IDE7CiAgICAgLy8gUmV0dXJucyB0aGUgcmVjb3JkZWQg
ZGlzcGxheSBsaXN0LgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRpc3BsYXlM
aXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZs
YWdzID0gMCk7CisgICAgRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVs
ZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAgICAgLy8gUmV0dXJu
cyB0aGUgZGlzcGxheSBsaXN0IHRoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQuCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1l
bnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01T
dHJpbmcgcmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7CisgICAgdm9pZCBnYXJiYWdl
Q29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgaW5zZXJ0QXV0aG9yQ1NTKERPTVN0cmluZyBjc3MpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBpbnNlcnRVc2VyQ1NTKERPTVN0cmluZyBjc3MpOworICAgIHZvaWQgaW5zZXJ0QXV0
aG9yQ1NTKERPTVN0cmluZyBjc3MpOworICAgIHZvaWQgaW5zZXJ0VXNlckNTUyhET01TdHJpbmcg
Y3NzKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVW5kZXJNZW1vcnlQcmVz
c3VyZTsKICAgICB2b2lkIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKQEAgLTMxMiwy
NiArMzEyLDI2IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHVuc2lnbmVk
IGxvbmcgcmVmZXJlbmNpbmdOb2RlQ291bnQoRG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIERPTVdp
bmRvdz8gb3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoRE9NU3RyaW5nIHVybCk7CiAgICAgdm9p
ZCBjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0SW5zcGVjdG9ySXNVbmRlclRlc3QoYm9vbGVhbiBpc1VuZGVyVGVzdCk7CisgICAg
dm9pZCBzZXRJbnNwZWN0b3JJc1VuZGVyVGVzdChib29sZWFuIGlzVW5kZXJUZXN0KTsKIAogICAg
IERPTVN0cmluZyBjb3VudGVyVmFsdWUoRWxlbWVudCBlbGVtZW50KTsKICAgICBsb25nIHBhZ2VO
dW1iZXIoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZVdp
ZHRoID0gODAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZUhlaWdodCA9IDYwMCk7
CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzaG9ydGN1dEljb25VUkxzKCk7CiAgICAgbG9uZyBu
dW1iZXJPZlBhZ2VzKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZVdpZHRoSW5QaXhl
bHMgPSA4MDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxz
ID0gNjAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYWdlUHJvcGVydHko
RE9NU3RyaW5nIHByb3BlcnR5TmFtZSwgbG9uZyBwYWdlTnVtYmVyKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhsb25nIHBhZ2VJ
bmRleCwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQsIGxvbmcgbWFyZ2luVG9wLCBsb25nIG1hcmdp
blJpZ2h0LCBsb25nIG1hcmdpbkJvdHRvbSwgbG9uZyBtYXJnaW5MZWZ0KTsKKyAgICBET01TdHJp
bmcgcGFnZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7
CisgICAgRE9NU3RyaW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGxvbmcgcGFnZUluZGV4
LCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCwgbG9uZyBtYXJnaW5Ub3AsIGxvbmcgbWFyZ2luUmln
aHQsIGxvbmcgbWFyZ2luQm90dG9tLCBsb25nIG1hcmdpbkxlZnQpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldFBhZ2VTY2FsZUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgc2Nh
bGVGYWN0b3IsIGxvbmcgeCwgbG9uZyB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcigpOworICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKHVucmVzdHJp
Y3RlZCBmbG9hdCBzY2FsZUZhY3RvciwgbG9uZyB4LCBsb25nIHkpOworICAgIGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvcigpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFBhZ2Vab29t
RmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgc2V0VGV4dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0
b3IpOworICAgIHZvaWQgc2V0UGFnZVpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21G
YWN0b3IpOworICAgIHZvaWQgc2V0VGV4dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpv
b21GYWN0b3IpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFVzZUZpeGVkTGF5
b3V0KGJvb2xlYW4gdXNlRml4ZWRMYXlvdXQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXRGaXhlZExheW91dFNpemUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQg
c2V0VXNlRml4ZWRMYXlvdXQoYm9vbGVhbiB1c2VGaXhlZExheW91dCk7CisgICAgdm9pZCBzZXRG
aXhlZExheW91dFNpemUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJp
bnRpbmcobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0
IGhlaWdodCk7CisgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QodW5yZXN0cmljdGVkIGZsb2F0
IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVz
dHJpY3RlZCBmbG9hdCBoZWlnaHQpOwogCiAgICAgdm9pZCBzZXRIZWFkZXJIZWlnaHQodW5yZXN0
cmljdGVkIGZsb2F0IGhlaWdodCk7CiAgICAgdm9pZCBzZXRGb290ZXJIZWlnaHQodW5yZXN0cmlj
dGVkIGZsb2F0IGhlaWdodCk7CkBAIC0zNTgsNDEgKzM1OCw0MSBAQCBlbnVtIEV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBib3RoIHJlc2V0IHRoZSB0
cmFja2VkIHJlcGFpbnQgcmVjdHMuIFRoZXkgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhl
IGZvbGxvd2luZyBvcmRlcjoKICAgICAvLyAgc3RhcnRUcmFja2luZ1JlcGFpbnRzLCByZXBhaW50
UmVjdHNBc1RleHQsIHN0b3BUcmFja2luZ1JlcGFpbnRzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc3RvcFRyYWNraW5nUmVwYWludHMoKTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBh
aW50cygpOworICAgIHZvaWQgc3RvcFRyYWNraW5nUmVwYWludHMoKTsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxheWVyRmx1c2hDb3VudCgpOworICAgIHZvaWQg
c3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygpOworICAgIHVuc2lnbmVkIGxvbmcgbGF5ZXJGbHVz
aENvdW50KCk7CiAKICAgICAvLyBRdWVyeSBpZiBhIHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRs
ZWQsIHRvIGRlYnVnIHRpbWVyIHRocm90dGxpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBi
b29sZWFuIGlzVGltZXJUaHJvdHRsZWQobG9uZyB0aW1lckhhbmRsZSk7CisgICAgYm9vbGVhbiBp
c1RpbWVyVGhyb3R0bGVkKGxvbmcgdGltZXJIYW5kbGUpOwogCiAgICAgYm9vbGVhbiBpc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpOwogICAgIGJvb2xlYW4gYXJlVGltZXJzVGhyb3R0
bGVkKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TG93UG93ZXJNb2RlRW5h
YmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0TG93UG93ZXJNb2RlRW5hYmxlZChi
b29sZWFuIGVuYWJsZWQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lSW50ZXJ2YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc2Ny
aXB0ZWRBbmltYXRpb25zQXJlU3VzcGVuZGVkOwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIGJlaGF2
aW9yIG9mIFdlYlBhZ2U6OmV2ZW50VGhyb3R0bGluZ0RlbGF5KCksIHdoaWNoIG9ubHkgYWZmZWN0
cyBpT1MuCiAgICAgYXR0cmlidXRlIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPyBldmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0
YXJ0VHJhY2tpbmdTdHlsZVJlY2FsY3MoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2ln
bmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOworICAgIHZvaWQgc3RhcnRUcmFja2luZ1N0eWxl
UmVjYWxjcygpOworICAgIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxhc3RTdHlsZVVwZGF0ZVNpemU7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RhcnRUcmFja2luZ0NvbXBvc2l0aW5nVXBkYXRl
cygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb21wb3NpdGluZ1Vw
ZGF0ZUNvdW50KCk7CisgICAgdm9pZCBzdGFydFRyYWNraW5nQ29tcG9zaXRpbmdVcGRhdGVzKCk7
CisgICAgdW5zaWduZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CiAKICAgICAvLyB8
bm9kZXwgc2hvdWxkIGJlIERvY3VtZW50LCBIVE1MSUZyYW1lRWxlbWVudCwgb3IgdW5zcGVjaWZp
ZWQuCiAgICAgLy8gSWYgfG5vZGV8IGlzIGFuIEhUTUxJRnJhbWVFbGVtZW50LCBpdCBhc3N1bWVz
IG5vZGUuY29udGVudERvY3VtZW50IGlzCiAgICAgLy8gc3BlY2lmaWVkIHdpdGhvdXQgc2VjdXJp
dHkgY2hlY2tzLiBVbnNwZWNpZmllZCBvciBudWxsIG1lYW5zIHRoaXMgZG9jdW1lbnQuCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0c0FuZFJ1blBvc3RMYXlvdXRUYXNrcyhvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7Cisg
ICAgdm9pZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5
b3V0VGFza3Mob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbGF5b3V0Q291bnQ7CiAKICAgICAvLyBSZXR1cm5zIGEgc3Ry
aW5nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1vdXNlIGN1cnNvciB1c2VkIGF0IHRoZSBz
cGVjaWZpZWQgY2xpZW50IGxvY2F0aW9uLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIGdldEN1cnJlbnRDdXJzb3JJbmZvKCk7CisgICAgRE9NU3RyaW5nIGdldEN1cnJlbnRDdXJz
b3JJbmZvKCk7CiAKICAgICBET01TdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQg
ZWxlbWVudCk7CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHNlcXVlbmNlPERPTVN0cmluZz4gbWVkaWFS
ZXNwb25zZVNvdXJjZXMoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSk7CiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSBzZXF1ZW5jZTxET01TdHJpbmc+IG1lZGlhUmVzcG9uc2VDb250ZW50UmFuZ2VzKEhU
TUxNZWRpYUVsZW1lbnQgbWVkaWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBzaW11
bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW0Nv
bmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBtZWRpYUVsZW1lbnRI
YXNDaGFyYWN0ZXJpc3RpYyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBjaGFy
YWN0ZXJpc3RpYyk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIG1lZGlhRWxlbWVu
dEhhc0NoYXJhY3RlcmlzdGljKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGNo
YXJhY3RlcmlzdGljKTsKIAogICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElB
XSB2b2lkIGluaXRpYWxpemVNb2NrQ0RNKCk7CiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQV0gTW9ja0NETUZhY3RvcnkgcmVnaXN0ZXJNb2NrQ0RNKCk7CkBAIC00MjMsMTAgKzQyMywx
MCBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIERPTVN0cmluZyBnZXRJ
bWFnZVNvdXJjZVVSTChFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVP
X1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92
ZXJyaWRlKCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShET01TdHJpbmcgb3ZlcnJpZGUp
OwotICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKERPTVN0cmluZyBsYW5ndWFnZSk7
Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRDYXB0aW9uRGlzcGxheU1vZGUoRE9NU3RyaW5nIG1vZGUpOworICAgIFtDb25kaXRpb25hbD1W
SURFT19UUkFDS10gRE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CisgICAg
W0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSB2b2lkIHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKERPTVN0cmluZyBvdmVycmlkZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSB2
b2lkIHNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZShET01TdHJpbmcgbGFuZ3Vh
Z2UpOworICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gdm9pZCBzZXRDYXB0aW9uRGlzcGxh
eU1vZGUoRE9NU3RyaW5nIG1vZGUpOwogCiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBUaW1lUmFu
Z2VzIGNyZWF0ZVRpbWVSYW5nZXMoRmxvYXQzMkFycmF5IHN0YXJ0VGltZXMsIEZsb2F0MzJBcnJh
eQogICAgICBlbmRUaW1lcyk7CkBAIC00MzQsMTcgKzQzNCwxNyBAQCBlbnVtIEV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yIHsKIAogICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUoSFRNTFNl
bGVjdEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4g
aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7
CisgICAgYm9vbGVhbiBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxl
bWVudCBlbGVtZW50KTsKICAgICBib29sZWFuIGlzUGx1Z2luU25hcHNob3R0ZWQoRWxlbWVudCBl
bGVtZW50KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBzZWxlY3Rpb25Cb3Vu
ZHMoKTsKKyAgICBET01SZWN0IHNlbGVjdGlvbkJvdW5kcygpOwogCiAgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NPVVJDRV0gdm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAgICAgW0Nv
bmRpdGlvbmFsPU1FRElBX1NPVVJDRV0gc2VxdWVuY2U8RE9NU3RyaW5nPiBidWZmZXJlZFNhbXBs
ZXNGb3JUcmFja0lEKFNvdXJjZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lEKTsKICAg
ICBbQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFXSBzZXF1ZW5jZTxET01TdHJpbmc+IGVucXVldWVk
U2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVyIGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQp
OwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVU
aW1lc3RhbXBzKFNvdXJjZUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gZmxhZyk7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGJlZ2luTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKERPTVN0cmluZyBpbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBbQ29uZGl0aW9u
YWw9VklERU9dIHZvaWQgYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oRE9NU3RyaW5nIGlu
dGVycnVwdGlvblR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBlbmRNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb24oRE9NU3RyaW5nIGZsYWdzKTsKICAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU0VTU0lPTl0gdm9pZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7CiAgICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHZvaWQgc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50
ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNh
dGVnb3J5KTsKQEAgLTQ1NSwxMyArNDU1LDEzIEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3IgewogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQob3B0aW9uYWwgYm9vbGVhbiBzdXNwZW5kZWRVbmRlckxvY2sgPSBmYWxzZSk7
CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwotICAgIFtD
b25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9u
UmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMp
OwotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBt
ZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CisgICAgW0NvbmRp
dGlvbmFsPVZJREVPXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcg
bWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9VklE
RU9dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlw
ZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0
aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwog
ICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rp
b25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBb
Q29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RSZW1vdGVDb250
cm9sQ29tbWFuZChET01TdHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0
IGFyZ3VtZW50ID0gMCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHBvc3RSZW1vdGVD
b250cm9sQ29tbWFuZChET01TdHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZs
b2F0IGFyZ3VtZW50ID0gMCk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVF0gdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbGVh
biBlbmFibGVkKTsKLSAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VULCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0
YXRlKERPTVN0cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOworICAgIFtD
b25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3RyaW5nIGRl
dmljZVN0YXRlKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIHNldE1vY2tN
ZWRpYUNhcHR1cmVEZXZpY2VzRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCiAgICAgW0NvbmRp
dGlvbmFsPVdFQl9SVENdIHZvaWQgZW11bGF0ZVJUQ1BlZXJDb25uZWN0aW9uUGxhdGZvcm1FdmVu
dChSVENQZWVyQ29ubmVjdGlvbiBjb25uZWN0aW9uLCBET01TdHJpbmcgYWN0aW9uKTsKQEAgLTQ3
NCw4ICs0NzQsOCBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHZvaWQgc2ltdWxhdGVTeXN0ZW1XYWtlKCk7CiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSBib29sZWFuIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVs
ZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE1vY2tQYWdlT3Zlcmxh
eSBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dChvcHRp
b25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIE1vY2tQYWdlT3ZlcmxheSBpbnN0
YWxsTW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKKyAgICBET01TdHJpbmcg
cGFnZU92ZXJsYXlMYXllclRyZWVBc1RleHQob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3Mg
PSAwKTsKIAogICAgIHZvaWQgc2V0UGFnZU11dGVkKERPTVN0cmluZyBtdXRlZFN0YXRlKTsKICAg
ICBET01TdHJpbmcgcGFnZU1lZGlhU3RhdGUoKTsKQEAgLTQ4OCwxMCArNDg4LDEwIEBAIGVudW0g
RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogCiAgICAgW0NvbmRpdGlvbmFsPUNPTlRFTlRfRklM
VEVSSU5HXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBtb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOwogCi0gICAgW0NvbmRpdGlvbmFsPUNTU19TQ1JPTExfU05B
UCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50
IGVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIERPTVN0cmluZyBz
Y3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOwogICAgIFtDb25kaXRpb25hbD1DU1Nf
U0NST0xMX1NOQVBdIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25F
bmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0
cmluZyBwYXRoU3RyaW5nV2l0aFNocmlua1dyYXBwZWRSZWN0cyhzZXF1ZW5jZTxkb3VibGU+IHJl
Y3RDb21wb25lbnRzLCBkb3VibGUgcmFkaXVzKTsKKyAgICBET01TdHJpbmcgcGF0aFN0cmluZ1dp
dGhTaHJpbmtXcmFwcGVkUmVjdHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91
YmxlIHJhZGl1cyk7CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBnZXRDdXJy
ZW50TWVkaWFDb250cm9sc1N0YXR1c0ZvckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50
KTsKIApAQCAtNTA2LDcgKzUwNiw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Igewog
ICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUp
OwogICAgIFtFbmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHZvaWQgc2V0VXNlckdy
YW50c1N0b3JhZ2VBY2Nlc3MoYm9vbGVhbiB2YWx1ZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxvdyk7Cisg
ICAgdm9pZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sZWFuIGFsbG93KTsKIAog
ICAgIERPTVN0cmluZyBjb21wb3NlZFRyZWVBc1RleHQoTm9kZSBwYXJlbnQpOwogCkBAIC01NDks
NyArNTQ5LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTV0gUHJvbWlzZTxJbWFnZURhdGE+IGdyYWJOZXh0TWVkaWFTdHJlYW1U
cmFja0ZyYW1lKCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50OwogICAgIFtDb25kaXRp
b25hbD1NRURJQV9TVFJFQU1dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRyYWNr
VmlkZW9TYW1wbGVDb3VudDsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRNZWRpYURldmljZVN0YXRlKERPTVN0cmluZyBkZXZpY2VJRCwg
RE9NU3RyaW5nIHByb3BlcnR5LCBib29sZWFuIHZhbHVlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNXSB2b2lkIHNldE1lZGlhRGV2aWNlU3RhdGUoRE9NU3RyaW5nIGRldmljZUlELCBE
T01TdHJpbmcgcHJvcGVydHksIGJvb2xlYW4gdmFsdWUpOwogICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU1dIHZvaWQgZGVsYXlNZWRpYVN0cmVhbVRyYWNrU2FtcGxlcyhNZWRpYVN0cmVhbVRy
YWNrIHRyYWNrLCBmbG9hdCBkZWxheSk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0g
dm9pZCBzZXRNZWRpYVN0cmVhbVRyYWNrTXV0ZWQoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgYm9v
bGVhbiBtdXRlZCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCByZW1vdmVN
ZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayB0cmFj
ayk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAKICAgICBHbG9iYWw9KFdvcmtlcixEZWRpY2F0ZWRXb3JrZXIpLAogICAg
IEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlIDogV29ya2VyR2xvYmFsU2NvcGUgewotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlv
bmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxv
YmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1l
c3NhZ2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiBdIGludGVyZmFjZSBXb3JrZXIgOiBFdmVudFRhcmdldCB7CiAg
ICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVl
bmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2
b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRy
YW5zZmVyID0gW10pOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKICAgICAvLyBXb3Jr
ZXJVdGlscwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGltcG9ydFNjcmlwdHMoVVNW
U3RyaW5nLi4uIHVybHMpOworICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhVU1ZTdHJpbmcuLi4gdXJs
cyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CiAK
ICAgICAvLyBBZGRpdGlvbmFsIGNvbnN0cnVjdG9ycwpJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1ICszMiw1IEBACiAgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9FWFBPUlQsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRXh0
ZW5kYWJsZUV2ZW50IDogRXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3YWl0
VW50aWwoUHJvbWlzZTxhbnk+IGYpOworICAgIHZvaWQgd2FpdFVudGlsKFByb21pc2U8YW55PiBm
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZDsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCByZXNwb25kV2l0aChQcm9taXNlPEZldGNoUmVzcG9uc2U+IHIpOworICAg
IHZvaWQgcmVzcG9uZFdpdGgoUHJvbWlzZTxGZXRjaFJlc3BvbnNlPiByKTsKIH07CiAKIGRpY3Rp
b25hcnkgRmV0Y2hFdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogXSBpbnRlcmZhY2UgU2Vy
dmljZVdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIHNjcmlwdFVSTDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlclN0YXRl
IHN0YXRlOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2Jq
ZWN0PiB0cmFuc2ZlciA9IFtdKTsKIAogICAgIC8vIGV2ZW50CiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbnN0YXRlY2hhbmdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBpZDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwg
c2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2Vx
dWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07CiAKIGVudW0gRnJhbWVUeXBlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNSArMjIsNSBA
QAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCiAgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIERPTVBhcnNlciB7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uLCBOZXdPYmplY3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJpbmcgc3RyaW5n
LCBET01TdHJpbmcgY29udGVudFR5cGUpOworICAgIFtOZXdPYmplY3RdIERvY3VtZW50IHBhcnNl
RnJvbVN0cmluZyhET01TdHJpbmcgc3RyaW5nLCBET01TdHJpbmcgY29udGVudFR5cGUpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMTMgKzYwLDEzIEBAIGVudW0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwogCiAgICAg
Ly8gcmVxdWVzdAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBvcGVuKEJ5dGVTdHJpbmcg
bWV0aG9kLCBET01TdHJpbmcgdXJsKTsgLy8gRklYTUU6IHVybCBzaG91bGQgYmUgYSBVU1ZTdHJp
bmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2Qs
IERPTVN0cmluZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlvbmFsIERPTVN0cmluZz8gdXNlciA9
IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZz8gcGFzc3dvcmQgPSBudWxsKTsgLy8gRklYTUU6IHVy
bC91c2VyL3Bhc3N3b3JkIHNob3VsZCBhbGwgYmUgYSBVU1ZTdHJpbmdzLgotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKEJ5dGVTdHJpbmcgaGVhZGVyLCBCeXRl
U3RyaW5nIHZhbHVlKTsKKyAgICB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2QsIERPTVN0cmlu
ZyB1cmwpOyAvLyBGSVhNRTogdXJsIHNob3VsZCBiZSBhIFVTVlN0cmluZy4KKyAgICB2b2lkIG9w
ZW4oQnl0ZVN0cmluZyBtZXRob2QsIERPTVN0cmluZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlv
bmFsIERPTVN0cmluZz8gdXNlciA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZz8gcGFzc3dvcmQg
PSBudWxsKTsgLy8gRklYTUU6IHVybC91c2VyL3Bhc3N3b3JkIHNob3VsZCBhbGwgYmUgYSBVU1ZT
dHJpbmdzLgorICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRlcihCeXRlU3RyaW5nIGhlYWRlciwgQnl0
ZVN0cmluZyB2YWx1ZSk7CiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiB3aXRoQ3JlZGVudGlhbHM7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIHVwbG9hZDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2VuZChvcHRpb25hbCAoRG9jdW1lbnQgb3IgQm9keUluaXQpPyBib2R5ID0gbnVsbCk7
CisgICAgdm9pZCBzZW5kKG9wdGlvbmFsIChEb2N1bWVudCBvciBCb2R5SW5pdCk/IGJvZHkgPSBu
dWxsKTsKICAgICB2b2lkIGFib3J0KCk7CiAKICAgICAvLyByZXNwb25zZQpAQCAtNzUsNyArNzUs
NyBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQnl0ZVN0cmluZyBzdGF0dXNUZXh0OwogICAgIEJ5dGVTdHJpbmc/IGdldFJlc3BvbnNl
SGVhZGVyKEJ5dGVTdHJpbmcgbmFtZSk7CiAgICAgQnl0ZVN0cmluZyBnZXRBbGxSZXNwb25zZUhl
YWRlcnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShE
T01TdHJpbmcgbWltZSk7CisgICAgdm9pZCBvdmVycmlkZU1pbWVUeXBlKERPTVN0cmluZyBtaW1l
KTsKICAgICBhdHRyaWJ1dGUgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBl
OwogICAgIFtDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRl
IGFueSByZXNwb25zZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHJlc3BvbnNl
VGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsMTAgKzIyLDEwIEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKIF0gaW50ZXJmYWNlIFhQYXRoRXZhbHVhdG9yIHsKICAgICAvLyBGSVhNRTogVXNpbmcgInVu
ZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBE
T01TdHJpbmcgZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2
ZXI/IHJlc29sdmVyKTsKKyAgICBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRp
b25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5T
UmVzb2x2ZXI/IHJlc29sdmVyKTsKIAogICAgIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29s
dmVyKG9wdGlvbmFsIE5vZGU/IG5vZGVSZXNvbHZlcik7CiAKICAgICAvLyBGSVhNRTogVXNpbmcg
InVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBET01TdHJpbmcg
ZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBOb2RlPyBjb250ZXh0Tm9kZSwgb3B0
aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlciwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQg
dHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CisgICAgWFBhdGhSZXN1
bHQgZXZhbHVhdGUob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwg
b3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVz
b2x2ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJl
c3VsdD8gaW5SZXN1bHQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJl
c3Npb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Np
b24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHBy
ZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNSArMjIsNSBAQAogICAgIEV4cG9ydFRv
V3JhcHBlZEZ1bmN0aW9uLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVy
ZmFjZSBYUGF0aEV4cHJlc3Npb24gewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1
bHQgZXZhbHVhdGUob3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUgPSBudWxsLCBvcHRpb25hbCB1
bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0g
bnVsbCk7CisgICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwgTm9kZT8gY29udGV4dE5v
ZGUgPSBudWxsLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBh
dGhSZXN1bHQ/IGluUmVzdWx0ID0gbnVsbCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUmVzdWx0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhS
ZXN1bHQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhS
ZXN1bHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw2IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaW52YWxpZEl0ZXJhdG9yU3RhdGU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgc25hcHNob3RMZW5ndGg7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIE5vZGUgaXRlcmF0ZU5leHQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUg
c25hcHNob3RJdGVtKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICBOb2Rl
IGl0ZXJhdGVOZXh0KCk7CisgICAgTm9kZSBzbmFwc2hvdEl0ZW0ob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBpbmRleCA9IDApOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327593</attachid>
            <date>2017-11-26 16:51:05 -0800</date>
            <delta_ts>2017-11-26 17:08:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20171126165104.patch</filename>
            <type>text/plain</type>
            <size>375235</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzNSBAQAorMjAxNy0xMS0yNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbmVl
ZCB0byBzcGVjaWZ5IFtNYXlUaHJvd0V4Y2VwdGlvbl0gZm9yIG9wZXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDAxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlNZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGw6CisgICAgICAgICog
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJl
c3VsdFNldFJvd0xpc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRs
OgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252
ZXJ0QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0
aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9u
Q2FsbCk6CisgICAgICAgIChOZWVkc1ZvaWRPcGVyYXRpb25DYWxsZXJGb3JQb3RlbnRpYWxFeGNl
cHRpb25Qcm9wYWdhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6Cisg
ICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29u
dmVydE5lZWRzU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU01hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25HZXRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uS2V5c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25WYWx1ZXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25BZGRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uQ2xlYXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRGVsZXRlQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2hCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUJvZHkp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENFUmVhY3Rpb25zQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdC
b2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aEFyZ3VtZW50c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZVZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50Qm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6aGFuZGxlRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0
aHJvdzo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25X
aXRoVHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUeXBlZGVmczo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRS
ZXRocm93c0V4Y2VwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uSXRlbUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRC
eVNldHRpbmdPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRp
b25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24yQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVFbmFibGVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJl
c3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JG
dW5jdGlvbkltcGxlbWVudHNNZXRob2Q0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDFCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50
YWxNZXRob2Q0Qm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWREZWxldGVyQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlckJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVk
U2V0dGVyMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcjJCb2R5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVy
YXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0
V29ya2VyUHJvbWlzZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEpTVGVzdE9iajEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9i
ajIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5h
YmxlZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
b3JsZFNwZWNpZmljTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhv
ZFdpdGhBcmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkxvbmdNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0
ZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxN
ZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEVudW1BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOdWxsYWJsZVVTVlN0cmluZ0FyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhC
eXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWVCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29y
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRXhjZXB0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblByaXZhdGVNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlv
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3Vt
ZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudEJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
cmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
QW5kRGVmYXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGxCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxMb25nTG9uZ0lzWmVyb0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U2VxdWVuY2VJc0VtcHR5Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklz
RmFsc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rp
b25BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q4Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q5Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTFCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEy
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxM0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24x
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGlu
Z3Vpc2hpbmdVbmlvbnMxQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGlu
Z3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjJC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVO
b25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGlu
Z1BhcmFtZXRlcjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25DbGFzc01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbEJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdp
dGhvdXROdWxsYWJsZVNlcXVlbmNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5n
ZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhv
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9t
aXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xl
Q29uZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25X
aXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlckJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1l
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5j
dGlvblJldHVybmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmll
clByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRp
ZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9k
eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0JvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRv
d0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmdCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFi
bGVzQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5p
b25zQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uVW5pb25BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVu
Y3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZUJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRp
b25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENh
bGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Vm9pZENhbGxiYWNr
RnVuY3Rpb246OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEltcGxlbWVudHMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRh
bC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGw6
CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAgICAg
ICAgKiBjc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4Lmlk
bDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsOgorICAgICAgICAqIGNzcy9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGw6CisgICAgICAgICogY3NzL0ZvbnRGYWNl
U2V0LmlkbDoKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTTWF0cml4LmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5pZGw6CisgICAg
ICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDoKKyAgICAgICAg
KiBkb20vRE9NUG9pbnRSZWFkT25seS5pZGw6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaWRsOgorICAgICAgICAqIGRv
bS9FeGNlcHRpb25Pci5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaWRsOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAu
aWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9y
LmlkbDoKKyAgICAgICAgKiBkb20vUGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1Jhbmdl
LmlkbDoKKyAgICAgICAgKiBkb20vVGV4dC5pZGw6CisgICAgICAgICogZG9tL1RleHREZWNvZGVy
LmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbDoKKyAg
ICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaWRsOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5pZGw6CisgICAg
ICAgICogaHRtbC9UaW1lUmFuZ2VzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNE
cmF3SW1hZ2UuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1BhdGgyRC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsOgorICAgICAgICAqIHBhZ2Uv
Q3J5cHRvLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5pZGw6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5pZGw6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5pZGw6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckdsb2Jh
bFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAqIHN2
Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1i
ZXJMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdQb2ludC5pZGw6CisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdC5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uaWRsOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGw6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGw6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5pZGw6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5pZGw6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiB4bWwvWFBhdGhFdmFsdWF0b3IuaWRs
OgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24uaWRsOgorICAgICAgICAqIHhtbC9YUGF0
aFJlc3VsdC5pZGw6CisKIDIwMTctMTEtMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIElTTyBhbGxvY2F0ZWQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjMgKzQw
LDIzIEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBVFVTX1BJTl9JTkNPUlJFQ1QgPSA2
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRVU19QSU5fTE9DS09VVCA9IDc7CiAKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0
YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3Rh
dGljIGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBj
YW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVy
KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRp
b25dIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5nIG1l
cmNoYW50SWRlbnRpZmllcik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IHN0YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0aWMgYm9vbGVhbiBjYW5N
YWtlUGF5bWVudHMoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3Rh
dGljIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3Ry
aW5nIG1lcmNoYW50SWRlbnRpZmllcik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllcik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYmVn
aW4oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGNvbXBsZXRlTWVyY2hhbnRW
YWxpZGF0aW9uKGFueSBtZXJjaGFudFNlc3Npb24pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uLCBDb25kaXRpb25hbD1BUFBMRV9QQVlfU0VTU0lPTl9WM10gdm9p
ZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFVwZGF0ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9QVBQ
TEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICB2b2lkIGJl
Z2luKCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9p
ZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhbnkgbWVyY2hhbnRTZXNzaW9uKTsKKyAgICBb
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7CisgICAg
W0NvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlIHVwZGF0ZSk7Cisg
ICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsKKyAg
ICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVuc2ln
bmVkIHNob3J0IHN0YXR1cywgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBw
bGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVz
LCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFw
cGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xp
bmVJdGVtcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbihBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBh
eUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
b21wbGV0ZVBheW1lbnQodW5zaWduZWQgc2hvcnQgc3RhdHVzKTsKKyAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBsZVBheUxp
bmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMp
OworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hv
cnQgc3RhdHVzLCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01l
dGhvZHMsIEFwcGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0
ZW0+IG5ld0xpbmVJdGVtcyk7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24oQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4g
bmV3TGluZUl0ZW1zKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudCh1bnNpZ25lZCBzaG9ydCBz
dGF0dXMpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnZhbGlkYXRlbWVyY2hhbnQ7
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnBheW1lbnRtZXRob2RzZWxlY3RlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlNZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRh
dGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNSArMjcsNSBAQAogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSZQQVlNRU5UX1JFUVVFU1QsCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBBcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50IDogQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9jdW1lbnRd
IHZvaWQgY29tcGxldGUoYW55IG1lcmNoYW50U2Vzc2lvbik7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSB2b2lkIGNvbXBsZXRlKGFueSBtZXJjaGFudFNlc3Npb24pOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQCB0eXBlZGVmIChCbG9i
IG9yIEJ1ZmZlclNvdXJjZSBvciBET01Gb3JtCiBbCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1CZWFj
b25BUEksCiBdIHBhcnRpYWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1
cmwsIG9wdGlvbmFsIEJvZHlJbml0PyBkYXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSBib29sZWFuIHNlbmRCZWFjb24oVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/
IGRhdGEgPSBudWxsKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDYgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUVuY3J5cHRlZE1l
ZGlhQVBJLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRp
YUtleXMgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlT
ZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9u
YWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKICAgICBQ
cm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0
aWZpY2F0ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlT
eXN0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdXBkYXRlKFVpbnQ4QXJyYXkga2V5KTsKKyAgICB2
b2lkIHVwZGF0ZShVaW50OEFycmF5IGtleSk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRrZXlhZGRlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNl
cHRpb24sCiAgICAgRW5hYmxlZEF0UnVudGltZT1MZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSSwKIF0g
aW50ZXJmYWNlIFdlYktpdE1lZGlhS2V5cyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRl
U2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXREYXRhKTsKICAgICBzdGF0aWMg
Ym9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGtleVN5c3RlbSwgb3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVt
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIHR5cGVk
ZWYgKHNlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiAKICAgICBDb25zdHJ1Y3RvcihvcHRp
b25hbCBIZWFkZXJzSW5pdCBpbml0KSwKICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9u
LAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdm9pZCBkZWxldGUoQnl0ZVN0cmlu
ZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJ5dGVTdHJpbmc/IGdldChCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXMoQnl0ZVN0cmlu
ZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0KEJ5dGVTdHJpbmcgbmFt
ZSwgQnl0ZVN0cmluZyB2YWx1ZSk7CisgICAgdm9pZCBhcHBlbmQoQnl0ZVN0cmluZyBuYW1lLCBC
eXRlU3RyaW5nIHZhbHVlKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVdIHZvaWQgZGVsZXRl
KEJ5dGVTdHJpbmcgbmFtZSk7CisgICAgQnl0ZVN0cmluZz8gZ2V0KEJ5dGVTdHJpbmcgbmFtZSk7
CisgICAgYm9vbGVhbiBoYXMoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICB2b2lkIHNldChCeXRlU3Ry
aW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFsdWUpOwogCiAgICAgaXRlcmFibGU8Qnl0ZVN0cmluZywg
Qnl0ZVN0cmluZz47CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHR5cGVkZWYgKEJsb2Igb3IgQnVmZmVyU291cmNlIG9yIERPTUZvcm0KICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGludGVncml0eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBrZWVwYWxpdmU7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRmV0Y2hSZXF1ZXN0IGNsb25lKCk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXF1
ZXN0IGNsb25lKCk7CiB9OwogCiBGZXRjaFJlcXVlc3QgaW1wbGVtZW50cyBGZXRjaEJvZHk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZGljdGlvbmFyeSBG
ZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAgSW50ZXJmYWNlTmFtZT1SZXNwb25zZSwKIF0gaW50ZXJm
YWNlIEZldGNoUmVzcG9uc2UgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBOZXdPYmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0
YXRpYyBGZXRjaFJlc3BvbnNlIHJlZGlyZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHN0YXR1cyA9IDMwMik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5n
IHVybCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBGZXRjaFJlc3BvbnNlVHlwZSB0eXBlOwogCkBAIC02MSw3ICs2MSw3IEBA
IGRpY3Rpb25hcnkgRmV0Y2hSZXNwb25zZUluaXQgewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgdHJhaWxlcnMuCiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8SGVhZGVy
cz4gdHJhaWxlcjsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBj
bG9uZSgpOwogfTsKIAogRmV0Y2hSZXNwb25zZSBpbXBsZW1lbnRzIEZldGNoQm9keTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBhbnkga2V5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtleTsK
IAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgdXBkYXRlKGFueSB2YWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkdmFu
Y2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIGNvbnRpbnVlKG9wdGlvbmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29udGludWVQcmltYXJ5S2V5KGFueSBr
ZXksIGFueSBwcmltYXJ5S2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0
ZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCB1cGRhdGUoYW55IHZh
bHVlKTsKKyAgICB2b2lkIGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3Vu
dCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVu
Y3Rpb25dIHZvaWQgY29udGludWUob3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSB2b2lkIGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtl
eSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0
aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE0IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbG9uZyB2ZXJzaW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdM
aXN0IG9iamVjdFN0b3JlTmFtZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVj
dFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmpl
Y3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKKyAgICBJREJPYmplY3RTdG9y
ZSBjcmVhdGVPYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgSURCT2JqZWN0U3Rv
cmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9N
U3RyaW5nIG5hbWUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMs
IG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgSURC
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+
KSBzdG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25s
eSIpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIHNwZWMsIGJ1dCBp
cyBuZWVkZWQgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS93M2MvSW5kZXhlZERCL2lzc3Vlcy84NQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVzLCBvcHRpb25hbCBJ
REJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIpOworICAgIElEQlRyYW5zYWN0aW9u
IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgb3B0aW9uYWwgSURCVHJhbnNh
Y3Rpb25Nb2RlIG1vZGUgPSAicmVhZG9ubHkiKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYWJvcnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJPcGVuREJSZXF1ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3QgZGVsZXRl
RGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5
VGhyb3dFeGNlcHRpb25dIHNob3J0IGNtcChhbnkgZmlyc3QsIGFueSBzZWNvbmQpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9N
U3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2
ZXJzaW9uKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCT3BlbkRC
UmVxdWVzdCBkZWxldGVEYXRhYmFzZShET01TdHJpbmcgbmFtZSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBzaG9ydCBjbXAoYW55IGZpcnN0LCBhbnkgc2Vjb25kKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIwICszOSwyMCBAQCB0eXBlZGVmIChET01TdHJpbmcg
b3Igc2VxdWVuY2U8RE9NU3RyaW5nCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVs
dGlFbnRyeTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9w
dGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJh
bmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24g
PSAibmV4dCIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4
dCIpOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGws
IG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3Blbktl
eUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0g
Im5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3Qgb3BlbktleUN1
cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Z2V0KGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtF
bmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlv
bmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRp
b25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1
bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9y
Y2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhj
ZXB0aW9uXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFu
Z2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
KyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9w
dGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdl
PyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291
bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFu
eSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlS
YW5nZT8gcmFuZ2UgPSBudWxsKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVl
c3QgY291bnQoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxMCArMzIsMTAgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb3dl
ck9wZW47CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdXBwZXJPcGVuOwogCi0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIG9ubHkoYW55IHZhbHVlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlv
bmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1h
eVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgdXBwZXJCb3VuZChhbnkgdXBwZXIs
IG9wdGlvbmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgYm91bmQoYW55IGxvd2Vy
LCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gdXBwZXJPcGVuID0gZmFsc2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
c3RhdGljIElEQktleVJhbmdlIG9ubHkoYW55IHZhbHVlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dlckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwg
Ym9vbGVhbiBvcGVuID0gZmFsc2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gc3RhdGlj
IElEQktleVJhbmdlIHVwcGVyQm91bmQoYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4g
PSBmYWxzZSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBzdGF0aWMgSURCS2V5UmFuZ2Ug
Ym91bmQoYW55IGxvd2VyLCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gdXBwZXJPcGVuID0gZmFsc2UpOwogCi0gICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpbmNsdWRlcyhhbnkg
a2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIGJvb2xlYW4gaW5jbHVkZXMoYW55IGtl
eSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwyOCArMzksMjggQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvSW5jcmVtZW50OwogCi0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVl
LCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwg
TWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5n
ZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0
aW9uLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQo
SURCS2V5UmFuZ2U/IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtl
eSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBnZXRLZXkoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjbGVhcigpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJL
ZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0
aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24gPSAibmV4dCIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUs
IE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNv
dW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBs
b25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxL
ZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4
IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0
cmluZz4pIGtleVBhdGgsIG9wdGlvbmFsIElEQkluZGV4UGFyYW1ldGVycyBvcHRpb25zKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Y291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5
KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwg
b3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0
IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURC
S2V5UmFuZ2U/IGtleVJhbmdlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGNsZWFyKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJu
ZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJz
b3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJ
REJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
SURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGws
IG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFs
IFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcg
b3Igc2VxdWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0
ZXJzIG9wdGlvbnMpOworICAgIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICB2
b2lkIGRlbGV0ZUluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwog
fTsKIAogZGljdGlvbmFyeSBJREJJbmRleFBhcmFtZXRlcnMgewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIElEQkRhdGFiYXNlIGRiOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FeGNl
cHRpb24gZXJyb3I7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9i
amVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
YWJvcnQoKTsKKyAgICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSk7
CisgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFib3J0
OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTcgKzU0LDE3IEBAIGVudW0gUmVhZHlT
dGF0ZSB7CiAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkdXJhdGlvbjsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU291cmNlQnVmZmVyIGFkZFNvdXJjZUJ1ZmZlcihET01T
dHJpbmcgdHlwZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVNvdXJjZUJ1
ZmZlcihTb3VyY2VCdWZmZXIgYnVmZmVyKTsKKyAgICBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVm
ZmVyKERPTVN0cmluZyB0eXBlKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VC
dWZmZXIgYnVmZmVyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkeVN0YXRlIHJlYWR5
U3RhdGU7CiAgICAgCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGVuZE9mU3RyZWFtKG9w
dGlvbmFsIEVuZE9mU3RyZWFtRXJyb3IgZXJyb3IpOworICAgIHZvaWQgZW5kT2ZTdHJlYW0ob3B0
aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CiAKICAgICBzdGF0aWMgYm9vbGVhbiBpc1R5
cGVTdXBwb3J0ZWQgKERPTVN0cmluZyB0eXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhckxpdmVTZWVrYWJsZVJhbmdlKCk7CisgICAg
dm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAg
IHZvaWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbnNvdXJjZW9wZW47CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZWVu
ZGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Nywx
MSArNTcsMTEgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRXaW5k
b3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIoQnVmZmVyU291cmNlIGRhdGEpOworICAgIHZvaWQgYXBw
ZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50
IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBh
Ym9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoZG91YmxlIHN0YXJ0
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIHZvaWQg
cmVtb3ZlKGRvdWJsZSBzdGFydCwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbnVwZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb251cGRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPVBlZXJDb25uZWN0
aW9uLAogXSBpbnRlcmZhY2UgUlRDRFRNRlNlbmRlciA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBG
SVhNRSAxNjk2NjI6IGNoYW5nZSB0byB1bnNpZ25lZCBsb25nIHdpdGggZGVmYXVsdHMKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0RFRNRihET01TdHJpbmcgdG9uZXMsIG9wdGlv
bmFsIGxvbmcgZHVyYXRpb24sIG9wdGlvbmFsIGxvbmcgaW50ZXJUb25lR2FwKTsKKyAgICB2b2lk
IGluc2VydERUTUYoRE9NU3RyaW5nIHRvbmVzLCBvcHRpb25hbCBsb25nIGR1cmF0aW9uLCBvcHRp
b25hbCBsb25nIGludGVyVG9uZUdhcCk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRv
bmVjaGFuZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0b25lQnVmZmVyOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDEwICs0MywxMCBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3RyaW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJh
eUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAg
IHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAgIHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAK
ICAgICB2b2lkIGNsb3NlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0eXBlZGVmIFJUQ1J0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgSlNCdWlsdGluQ29uc3RydWN0b3IKIF0gaW50
ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9uIDogRXZlbnRUYXJnZXQgewogICAgIC8vIEpTIGJ1aWx0
LWluIGNvbnN0cnVjdG9yIGhhbmRsZXMgdGhlIG9wdGlvbmFsIFJUQ0NvbmZpZ3VyYXRpb24KLSAg
ICBbUHJpdmF0ZUlkZW50aWZpZXIsIENhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBpbml0aWFsaXplV2l0aChSVENDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwor
ICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgaW5pdGlhbGl6
ZVdpdGgoUlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKIAogCiAgICAgLy8gNC4zLjIg
SW50ZXJmYWNlIERlZmluaXRpb24KQEAgLTkzLDcgKzkzLDcgQEAgdHlwZWRlZiBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBSdHBUcgogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlzc2luZyBkZWZh
dWx0SWNlU2VydmVycwogCiAgICAgUlRDQ29uZmlndXJhdGlvbiBnZXRDb25maWd1cmF0aW9uKCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKTsKKyAgICB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmVnb3RpYXRpb25uZWVkZWQ7CkBAIC0xMjMsMTAgKzEyMywx
MCBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgc2VxdWVu
Y2U8UlRDUnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOwogICAgIHNlcXVlbmNlPFJUQ1J0cFRy
YW5zY2VpdmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwg
UHVibGljSWRlbnRpZmllciwgTWF5VGhyb3dFeGNlcHRpb25dIFJUQ1J0cFNlbmRlciBhZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBNZWRpYVN0cmVhbS4uLiBzdHJlYW1zKTsKLSAgICBb
UHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciBzZW5kZXIpOworICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gUlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1lZGlhU3RyZWFt
VHJhY2sgdHJhY2ssIE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOworICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2Vu
ZGVyKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJh
bnNjZWl2ZXIoKE1lZGlhU3RyZWFtVHJhY2sgb3IgRE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOworICAgIFJUQ1J0cFRyYW5zY2VpdmVyIGFkZFRy
YW5zY2VpdmVyKChNZWRpYVN0cmVhbVRyYWNrIG9yIERPTVN0cmluZykgdHJhY2ssIG9wdGlvbmFs
IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBpbml0KTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb250cmFjazsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHR5cGVkZWYgUlRDUnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb24gUnRwVHIKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEgQVBJCiAgICAg
Ly8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0
YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlv
bmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVs
SW5pdCBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZGF0YWNoYW5uZWw7
CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgU2VjdXJlQ29udGV4dAogXSBpbnRlcmZhY2Ug
UGF5bWVudFJlcXVlc3QgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQ
cm9taXNlPFBheW1lbnRSZXNwb25zZT4gc2hvdygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
UHJvbWlzZTx2b2lkPiBhYm9ydCgpOworICAgIFByb21pc2U8dm9pZD4gYWJvcnQoKTsKICAgICBb
Q2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnQoKTsKIAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAg
ICBTZWN1cmVDb250ZXh0CiBdIGludGVyZmFjZSBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IDog
RXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB1cGRhdGVXaXRoKFByb21pc2U8
UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFpbHNQcm9taXNlKTsKKyAgICB2b2lkIHVwZGF0ZVdp
dGgoUHJvbWlzZTxQYXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRs
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksNSArMzksNSBAQAogCiAgICAgLy8g
Q2hhbm5lbCBhY2Nlc3MKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRmxvYXQzMkFycmF5IGdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hhbm5lbEluZGV4KTsKKyAgICBGbG9hdDMyQXJyYXkg
Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOCArNDQsOCBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGxvb3BTdGFy
dDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBsb29wRW5kOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHN0YXJ0KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUg
d2hlbiA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIGdyYWluRHVyYXRpb24pOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzdG9wKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9
IDApOworICAgIHZvaWQgc3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0g
MCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBncmFpbk9mZnNldCA9IDAsIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7CisgICAgdm9pZCBzdG9wKG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDApOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmVuZGVkOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNjEsOCArNjEsOCBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICAvLyBOdW1iZXIg
b2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKICAg
ICAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNp
Z25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMs
IHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4
VG9Nb25vKTsKKyAgICBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVm
ZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KICAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNo
b3VsZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxl
LiBUaGlzIHNob3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCkBAIC03MSwyNyArNzEsMjcgQEAg
ZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CiAgICAgLy8gU291cmNlcwogICAgIEF1ZGlvQnVmZmVy
U291cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURF
TywgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVN
ZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtD
b25kaXRpb25hbD1WSURFT10gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlh
RWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJl
YW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsK
ICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKIAogICAgIC8vIFByb2Nlc3Np
bmcgbm9kZXMKICAgICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBt
YXhEZWxheVRpbWUgPSAxKTsKKyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKICAgICBCaXF1YWRGaWx0ZXJOb2Rl
IGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFw
ZXIoKTsKICAgICBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOwogICAgIENvbnZvbHZlck5vZGUg
Y3JlYXRlQ29udm9sdmVyKCk7CiAgICAgRHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKTsKICAgICBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9k
ZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXpl
ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKICAgICBP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9h
dDMyQXJyYXkgaW1hZyk7CisgICAgUGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9h
dDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwogCiAgICAgLy8gQ2hhbm5lbCBzcGxp
dHRpbmcgYW5kIG1lcmdpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRl
ck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZPdXRwdXRzID0gNik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9k
ZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1
dHMgPSA2KTsKKyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5uZWxN
ZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0cyA9IDYpOwogCiAgICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKICAgICAvLyB2b2lk
IHByZXBhcmVPZmZsaW5lQnVmZmVyUmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBjaGFubmVsQ291bnRNb2RlOwogICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY2hhbm5lbEludGVycHJldGF0aW9uOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGNvbm5lY3QoQXVkaW9Ob2RlIGRlc3RpbmF0aW9uLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG91dHB1dCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5wdXQgPSAwKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29ubmVjdChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG91dHB1dCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7Cisg
ICAgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlucHV0ID0gMCk7CisgICAg
dm9pZCBjb25uZWN0KEF1ZGlvUGFyYW0gZGVzdGluYXRpb24sIG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0ID0gMCk7CisgICAgdm9pZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0ID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw4ICs0OCw4IEBAIGVudW0gT3NjaWxsYXRvclR5cGUgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVu
ID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0
cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7CisgICAgdm9pZCBzdGFydChvcHRpb25hbCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHdoZW4gPSAwKTsKKyAgICB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB3aGVuID0gMCk7CiAKICAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJpb2Rp
Y1dhdmU/IHdhdmUpOyAvLyBGSVhNRTogVGhlIHBhcmFtZXRlciBzaG91bGQgbm90IGJlIG51bGxh
YmxlLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDUgQEAKICAqLwogCiBwYXJ0aWFsIGludGVy
ZmFjZSBET01XaW5kb3cgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGF0YWJhc2U/IG9wZW5E
YXRhYmFzZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZlcnNpb24sIERPTVN0cmluZyBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBvcHRpb25hbCBEYXRhYmFzZUNh
bGxiYWNrPyBjcmVhdGlvbkNhbGxiYWNrKTsKKyAgICBEYXRhYmFzZT8gb3BlbkRhdGFiYXNlKERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmVyc2lvbiwgRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIG9wdGlvbmFsIERhdGFiYXNlQ2FsbGJhY2s/IGNy
ZWF0aW9uQ2FsbGJhY2spOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXRSb3dMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChE
T01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldFJvd0xpc3QgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJl
Y29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNSArMzEsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiBb
CiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVyZmFjZSBTUUxUcmFuc2FjdGlvbiB7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0
YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0
aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGV4ZWN1dGVTcWwoRE9N
U3RyaW5nIHNxbFN0YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVu
dHMgPSBbXSwgb3B0aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25h
bCBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
bmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3Ry
aW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNl
bmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAg
IHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBE
T01TdHJpbmcgcmVhc29uKTsKKyAgICB2b2lkIGNsb3NlKG9wdGlvbmFsIFtDbGFtcF0gdW5zaWdu
ZWQgc2hvcnQgY29kZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHJlYXNvbik7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiAgICAgQ29uc3RydWN0b3IoRWxlbWVudD8gdGFy
Z2V0LCBvYmplY3Q/IGtleWZyYW1lcykKIF0gaW50ZXJmYWNlIEtleWZyYW1lRWZmZWN0IDogQW5p
bWF0aW9uRWZmZWN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGFyZ2V0Owot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgc2V0S2V5
ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZv
aWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDYgQEAKICAgICBhdHRyaWJ1dGUgQW5pbWF0aW9uRWZmZWN0PyBlZmZlY3Q7CiAg
ICAgYXR0cmlidXRlIEFuaW1hdGlvblRpbWVsaW5lPyB0aW1lbGluZTsKICAgICBbSW1wbGVtZW50
ZWRBcz1iaW5kaW5nc1N0YXJ0VGltZV0gYXR0cmlidXRlIGRvdWJsZT8gc3RhcnRUaW1lOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1iaW5kaW5nc0N1cnJlbnRUaW1lXSBh
dHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50VGltZTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5n
c0N1cnJlbnRUaW1lXSBhdHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50VGltZTsKICAgICBhdHRyaWJ1
dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDEwICs4Nyw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4Y2VwdGlvblQK
IH0KIAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0V4Y2VwdGlvbk9yIDogcHVi
bGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVj
YXlfdDxUPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZT4geyB9OwotCi0KIC8vIENvbnZlcnNpb24gZnJv
bSBJbXBsZW1lbnRhdGlvbiAtPiBKU1ZhbHVlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SlNDb252ZXJ0ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3Bl
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01P
cGVyYXRpb24uaAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNCArNjMsMjEgQEAgcHVi
bGljOgogICAgIH0KIH07CiAKK3N0cnVjdCBWb2lkT3BlcmF0aW9uQ2FsbGVyIHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHN0YXRpYyBhdXRvIGNhbGwoSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OlRocm93U2NvcGUmLCBGdW5jdG9yJiYgZnVuY3RvcikgLT4gc3RkOjplbmFibGVf
aWZfdDwhc3RkOjppc19zYW1lPEV4Y2VwdGlvbk9yPHZvaWQ+LCBkZWNsdHlwZShmdW5jdG9yKCkp
Pjo6dmFsdWU+CisgICAgeworICAgICAgICBmdW5jdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBGdW5jdG9yJiYgZnVuY3Rvcikg
LT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RXhjZXB0aW9uT3I8dm9pZD4sIGRlY2x0
eXBlKGZ1bmN0b3IoKSk+Ojp2YWx1ZT4KKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZnVu
Y3RvcigpOworICAgICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ3Mjgs
NyArNDcyOCw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAg
ICAgICAgCiAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7CiAgICAg
ICAgIAotICAgICAgICBteSAkdG9KU0V4cHJlc3Npb24gPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1Jl
ZmVyZW5jZXMoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7
CisgICAgICAgIG15ICR0b0pTRXhwcmVzc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJl
bmNlcygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIikiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkiLCAxKTsK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTtcbiIpIHVubGVzcyAkYXR0cmlidXRlLT5pc1N0YXRpYyBvciAkYXR0cmlidXRl
LT5pc01hcExpa2U7CiAKICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CkBA
IC01MTg0LDkgKzUxODQsMTQgQEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uRGVmaW5pdGlvbgogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOwogICAgICAg
ICB9CisKICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rpb25OYW1lKCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwotICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
PSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5n
KSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJG9wZXJhdGlvbik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCIg
LiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSIpIC4gIik7XG4iKTsK
KworICAgICAgICBpZiAoTmVlZHNWb2lkT3BlcmF0aW9uQ2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0
aW9uUHJvcGFnYXRpb24oJG9wZXJhdGlvbikpIHsKKyAgICAgICAgICAgICRmdW5jdGlvblN0cmlu
ZyA9ICJWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuICRmdW5jdGlvblN0cmluZzsgfSkiOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5n
LCAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpIikgLiAiKTtcbiIsIDEpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CkBAIC01NTUyLDcgKzU1NTcsMjggQEAg
c3ViIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsCiAKICAgICByZXR1cm4gMCB1
bmxlc3MgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259
OwogCi0gICAgcmV0dXJuICRvcGVyYXRpb24tPnR5cGUgJiYgKCRvcGVyYXRpb24tPnR5cGUtPm5h
bWUgZXEgInZvaWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24t
PnR5cGUpIHx8IE9wZXJhdGlvbkhhc0ZvcmNlZFJldHVyblZhbHVlKCRvcGVyYXRpb24pKTsKKyAg
ICAjIENvbnN0cnVjdG9yIG9wZXJlcmF0aW9ucywgd2hpY2ggZG8gbm90IGhhdmUgYSB0eXBlLCBu
ZXZlciBuZWVkIHRvIHVzZSBwcm9wYWdhdGVFeGNlcHRpb24uCisgICAgcmV0dXJuIDAgdW5sZXNz
ICRvcGVyYXRpb24tPnR5cGU7CisKKyAgICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uLT50eXBlLT5u
YW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNl
VHlwZSgkb3BlcmF0aW9uLT50eXBlKTsKKyAgICByZXR1cm4gMSBpZiBPcGVyYXRpb25IYXNGb3Jj
ZWRSZXR1cm5WYWx1ZSgkb3BlcmF0aW9uKTsKKworICAgIHJldHVybiAwOworfQorCitzdWIgTmVl
ZHNWb2lkT3BlcmF0aW9uQ2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0aW9uUHJvcGFnYXRpb24KK3sK
KyAgICBteSAoJG9wZXJhdGlvbikgPSBAXzsKKworICAgICMgQ29uc3RydWN0b3Igb3BlcmVyYXRp
b25zLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR5cGUsIG5ldmVyIG5lZWQgdG8gdXNlIFZvaWRPcGVy
YXRpb25DYWxsZXIuCisgICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPnR5cGU7CisKKyAg
ICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1
cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAm
JiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKKyAgICBy
ZXR1cm4gMSBpZiBPcGVyYXRpb25IYXNGb3JjZWRSZXR1cm5WYWx1ZSgkb3BlcmF0aW9uKTsKKwor
ICAgIHJldHVybiAwOwogfQogCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKQEAgLTU2NzQs
NyArNTcwMCwxMCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBwdXNoKEBhcmd1
bWVudHMsICJXVEZNb3ZlKHByb21pc2UpIikgaWYgJG9wZXJhdGlvbi0+dHlwZSAmJiAkY29kZUdl
bmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKIAogICAgIG15ICRmdW5jdGlvblN0
cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwot
ICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Nj
b3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9u
Q2FsbCgkb3BlcmF0aW9uKTsKKworICAgIGlmIChOZWVkc1ZvaWRPcGVyYXRpb25DYWxsZXJGb3JQ
b3RlbnRpYWxFeGNlcHRpb25Qcm9wYWdhdGlvbigkb3BlcmF0aW9uKSkgeworICAgICAgICAkZnVu
Y3Rpb25TdHJpbmcgPSAiVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiAkZnVuY3Rpb25TdHJpbmc7IH0pIjsKKyAgICB9CiAKICAgICByZXR1
cm4gJGZ1bmN0aW9uU3RyaW5nOwogfQpAQCAtNjEyNCw3ICs2MTUzLDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAk
aW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJG9wZXJhdGlv
bi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAicmV0dXJuIEpTVmFsdWU6OmVuY29kZSgi
IC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAk
ZnVuY3Rpb25TdHJpbmcsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpIC4gIik7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUo
IiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwg
JGZ1bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlLCAxKSAuICIpO1xuIik7CiAg
ICAgfQogfQogCkBAIC02NTE4LDcgKzY1NDcsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlRE9NQ29u
dmVydE5lZWRzU3RhdGUKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiSlNPTiI7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciI7Ci0gICAgCisK
ICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjU1NCwxNyArNjU4MywxNyBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlRE9NQ29udmVydE5lZWRzR2xvYmFsCiAKIHN1YiBOYXRpdmVUb0pTVmFsdWVVc2luZ1Jl
ZmVyZW5jZXMKIHsKLSAgICBteSAoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJGdsb2Jh
bE9iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2
YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFsd2F5c0NoZWNrRXhjZXB0aW9uKSA9IEBf
OwogCi0gICAgcmV0dXJuIE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4dCwgJGludGVyZmFjZSwgJHZh
bHVlLCAic3RhdGUiLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKTsKKyAgICByZXR1cm4gTmF0aXZl
VG9KU1ZhbHVlKCRjb250ZXh0LCAkaW50ZXJmYWNlLCAkdmFsdWUsICJzdGF0ZSIsICRnbG9iYWxP
YmplY3RSZWZlcmVuY2UsICRhbHdheXNDaGVja0V4Y2VwdGlvbik7CiB9CiAKICMgRklYTUU6IFdl
IHNob3VsZCByZW1vdmUgTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycyBhbmQgY29tYmluZSBO
YXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMgYW5kIE5hdGl2ZVRvSlNWYWx1ZQogc3ViIE5h
dGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMKIHsKLSAgICBteSAoJGNvbnRleHQsICRpbnRlcmZh
Y2UsICR2YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAoJGNvbnRl
eHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFsd2F5c0No
ZWNrRXhjZXB0aW9uKSA9IEBfOwogCi0gICAgcmV0dXJuIE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4
dCwgJGludGVyZmFjZSwgJHZhbHVlLCAiKnN0YXRlIiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSk7
CisgICAgcmV0dXJuIE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4dCwgJGludGVyZmFjZSwgJHZhbHVl
LCAiKnN0YXRlIiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFsd2F5c0NoZWNrRXhjZXB0aW9u
KTsKIH0KIAogc3ViIElzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9KU1ZhbHVlCkBAIC02NTc2LDEz
ICs2NjA1LDEzIEBAIHN1YiBJc1ZhbGlkQ29udGV4dEZvck5hdGl2ZVRvSlNWYWx1ZQogCiBzdWIg
TmF0aXZlVG9KU1ZhbHVlCiB7Ci0gICAgbXkgKCRjb250ZXh0LCAkaW50ZXJmYWNlLCAkdmFsdWUs
ICRzdGF0ZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAo
JGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHN0YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2Jq
ZWN0UmVmZXJlbmNlLCAkYWx3YXlzQ2hlY2tFeGNlcHRpb24pID0gQF87CiAKICAgICBhc3NlcnQo
IkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9KU1Zh
bHVlKCRjb250ZXh0KTsKIAogICAgIG15ICRjb25kaXRpb25hbCA9ICRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlw
ZTsKLSAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSByZWYoJGNvbnRleHQpIGVxICJJRExBdHRy
aWJ1dGUiIHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlv
bn07CisgICAgbXkgJG1heVRocm93RXhjZXB0aW9uID0gJGFsd2F5c0NoZWNrRXhjZXB0aW9uIHx8
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAKICAg
ICAjIFdlIGNvdWxkIGluc3RlYWQgb3ZlcmxvYWQgYSBmdW5jdGlvbiB0byB3b3JrIHdpdGggb3B0
aW9uYWwgYXMgd2VsbCBhcyBub24tb3B0aW9uYWwgbnVtYmVycywgYnV0IHRoaXMKICAgICAjIGlz
IHNsaWdodGx5IGJldHRlciBiZWNhdXNlIGl0IGd1YXJhbnRlZXMgd2Ugd2lsbCBmYWlsIHRvIGNv
bXBpbGUgaWYgdGhlIElETCBmaWxlIGRvZXNuJ3QgbWF0Y2ggdGhlIEMrKy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50cy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbXBsZW1l
bnRzLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RJbXBsZW1lbnRzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQAogICAgIGF0dHJpYnV0ZSBOb2RlIGltcGxlbWVudHNOb2RlOwogCiAgICAgdm9pZCBpbXBs
ZW1lbnRzTWV0aG9kMSgpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBpbXBsZW1lbnRzTWV0aG9kMihET01TdHJpbmcgc3Ry
QXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIFRlc3RPYmogaW1wbGVtZW50c01ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBv
YmpBcmcpOwogICAgIFtDdXN0b21dIHZvaWQgaW1wbGVtZW50c01ldGhvZDMoKTsKICAgICBzdGF0
aWMgdm9pZCBpbXBsZW1lbnRzTWV0aG9kNCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2gi
LCAia2luZGEtbG93CiAgICAgdm9pZCBtZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoVGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbiBlbnVtQXJnKTsKICAgICB2b2lkIG1ldGhvZFdpdGhPcHRpb25h
bEVudW1Bcmcob3B0aW9uYWwgVGVzdEVudW1UeXBlIGVudW1BcmcpOwogICAgIHZvaWQgbWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShvcHRpb25hbCBUZXN0RW51bVR5cGUg
ZW51bUFyZyA9ICJFbnVtVmFsdWUxIik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBUZXN0T2Jq
IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRE9NU3RyaW5nIHN0ckFyZywgVGVz
dE9iaiBvYmpBcmcpOworICAgIFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cyhET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CiAKICAgICB2b2lkIG1ldGhv
ZFdpdGhVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nIHN0cik7CiAgICAgdm9pZCBtZXRob2RXaXRoTnVs
bGFibGVVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nPyBzdHIpOwpAQCAtMTY0LDkgKzE2NCw5IEBAIGVu
dW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB2b2lkIG1ldGhvZFdp
dGhSZWNvcmQocmVjb3JkPERPTVN0cmluZywgbG9uZz4gcmVjb3JkUGFyYW1ldGVyKTsKIAogICAg
IC8vIEV4Y2VwdGlvbnMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgbWV0aG9kV2l0aEV4
Y2VwdGlvbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBtZXRob2RXaXRoRXhjZXB0
aW9uUmV0dXJuaW5nTG9uZygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtZXRo
b2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCk7CisgICAgdm9pZCBtZXRob2RXaXRoRXhj
ZXB0aW9uKCk7CisgICAgbG9uZyBtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZygpOwor
ICAgIFRlc3RPYmogbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCgpOwogCiAgICAg
Ly8gJ0N1c3RvbScgZXh0ZW5kZWQgYXR0cmlidXRlCiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIGxv
bmcgICAgICAgICAgICBjdXN0b21BdHRyOwpAQCAtMTkxLDExICsxOTEsMTEgQEAgZW51bSBUZXN0
Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIC8vICdDYWxsV2l0aCcgZXh0ZW5k
ZWQgYXR0cmlidXRlCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRT
dGF0ZVZvaWQoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlw
dFN0YXRlT2JqKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCB3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiB3aXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24oKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgd2l0aFNjcmlwdFN0
YXRlVm9pZEV4Y2VwdGlvbigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gVGVzdE9iaiB3
aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JlNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCZTY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JlNjcmlwdFN0YXRlXSBUZXN0T2JqIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKICAg
ICBbQ2FsbFdpdGg9ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0ICAmICBTY3JpcHRTdGF0ZSAgXSBU
ZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
KCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIHdpdGhEb2N1bWVudEFyZ3VtZW50KCk7
CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB2b2lkIHdpdGhDYWxsZXJEb2N1bWVu
dEFyZ3VtZW50KCk7CkBAIC0zMjksOCArMzI5LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJo
aWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQgY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25P
cHRpb25hbChvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSBsb25nIG9iakFyZ3NMb25nID0gMCk7CiAK
ICAgICB2b2lkIG1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBz
ZXF1ZW5jZTxET01TdHJpbmc+IHN0cmluZ0FycmF5RnVuY3Rpb24oc2VxdWVuY2U8RE9NU3RyaW5n
PiB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nTGlzdCBkb21TdHJp
bmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlzdCB2YWx1ZXMpOworICAgIHNlcXVlbmNlPERPTVN0
cmluZz4gc3RyaW5nQXJyYXlGdW5jdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7Cisg
ICAgRE9NU3RyaW5nTGlzdCBkb21TdHJpbmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlzdCB2YWx1
ZXMpOwogCiAgICAgdm9pZCBvcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihvcHRp
b25hbCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPHVucmVzdHJpY3RlZCBkb3VibGU+KSBvcHRpb25h
bFVuaW9uKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3cKICAgICBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlz
dGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CiAKICAgICBbQ2hlY2tTZWN1
cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7
Ci0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHRG9jdW1l
bnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIFNWR0RvY3Vt
ZW50IGdldFNWR0RvY3VtZW50KCk7CiAKICAgICB2b2lkIGNvbnZlcnQxKFRlc3ROb2RlIHZhbHVl
KTsKICAgICB2b2lkIGNvbnZlcnQyKFRlc3ROb2RlPyB2YWx1ZSk7CkBAIC00MDAsMTIgKzQwMCwx
MiBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgLy8gUHJv
bWlzZSBmdW5jdGlvbgogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbigpOwog
ICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KGZs
b2F0IGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTx2b2lkPiB0ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOworICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb24oKTsKICAgICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChvcHRpb25hbCBsb25nIGEpOwogICAgIFByb21p
c2U8dm9pZD4gdGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oZmxvYXQgYSk7CiAgICAgUHJv
bWlzZTx2b2lkPiB0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihGZXRjaFJlcXVlc3QgcmVx
dWVzdCk7CiAgICAgc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
bigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oKTsKKyAgICBzdGF0aWMgUHJvbWlzZTx2
b2lkPiB0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOwogICAgIFtDdXN0
b21dIFByb21pc2U8dm9pZD4gdGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbigpOwogICAgIFtDdXN0
b21dIHN0YXRpYyBQcm9taXNlPHZvaWQ+IHRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24o
KTsKICAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx2b2lkPiB0ZXN0Q3Vz
dG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbigpOwpAQCAtNDM2LDcgKzQzNiw3IEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBsZWdhY3ljYWxsZXIgdm9p
ZCAoKTsKIAogICAgIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKFtSZXR1cm5WYWx1
ZV0gTm9kZSBhLCBOb2RlIGIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSB0ZXN0UmV0
dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKFtSZXR1cm5WYWx1ZV0gTm9kZSBhLCBO
b2RlIGIpOworICAgIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBiKTsKIAogICAgIFtDb25kaXRpb25hbGx5UmVh
ZFdyaXRlPUNPTkRJVElPTl0gYXR0cmlidXRlIE5vZGUgY29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZTsKICAgICBbQ29uZGl0aW9uYWw9Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxseVJlYWRX
cml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBOb2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZUF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxl
bWVudGFsLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RBdHRyaWJ1dGU7CiAKICAgICB2b2lkIHN1cHBs
ZW1lbnRhbE1ldGhvZDEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01TdHJpbmcg
c3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01TdHJpbmcgc3RyQXJnLCBUZXN0
T2JqIG9iakFyZyk7CiAgICAgW0N1c3RvbV0gdm9pZCBzdXBwbGVtZW50YWxNZXRob2QzKCk7CiAg
ICAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kNCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RUeXBlZGVmcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEzICs2MSwxMyBAQAogCiAg
ICAgU1ZHUE9JTlQgcG9pbnRGdW5jdGlvbigpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBT
RVFVRU5DRV9PRl9TVFJJTkdTIHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24oU0VRVUVOQ0VfT0ZfU1RS
SU5HUyB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8U1RSSU5HPiBz
dHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihzZXF1ZW5jZTxTVFJJTkc+IHZhbHVlcyk7CisgICAgU0VR
VUVOQ0VfT0ZfU1RSSU5HUyBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKFNFUVVFTkNFX09GX1NUUklO
R1MgdmFsdWVzKTsKKyAgICBzZXF1ZW5jZTxTVFJJTkc+IHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24y
KHNlcXVlbmNlPFNUUklORz4gdmFsdWVzKTsKIAogICAgIGJvb2xlYW4gY2FsbFdpdGhTZXF1ZW5j
ZVRoYXRSZXF1aXJlc0luY2x1ZGUoc2VxdWVuY2U8VGVzdEV2ZW50VGFyZ2V0PiBzZXF1ZW5jZUFy
Zyk7CiAKICAgICAvLyBFeGNlcHRpb25zCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIG1l
dGhvZFdpdGhFeGNlcHRpb24oKTsKKyAgICB2b2lkIG1ldGhvZFdpdGhFeGNlcHRpb24oKTsKIAog
ICAgIC8vIEJ1aWx0aW4gVHlwZWRlZnMKICAgICBhdHRyaWJ1dGUgQnVmZmVyU291cmNlIGJ1ZmZl
clNvdXJjZUF0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBrZXkgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRvTWFw
TGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkR2V0
VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChF
eGVjU3RhdGUqIHN0YXRlKQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc01hcEwKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUs
IGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRl
LCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlz
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uRW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhp
cykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRU
aGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uVmFsdWVzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yODMsNyArMjgzLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhp
cywgV1RGTW92ZShjYWxsYmFjaykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEFk
ZFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3
YXJkQWRkVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkFkZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBmb3J3YXJkQ2xlYXJUb01hcExpa2Uo
KnN0YXRlLCAqY2FzdGVkVGhpcyk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBmb3J3YXJkQ2xlYXJUb01hcExpa2UoKnN0YXRl
LCAqY2FzdGVkVGhpcyk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZERl
bGV0ZVRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBm
b3J3YXJkRGVsZXRlVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkRlbGV0ZShFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDks
NyArMjA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01T
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEdldFRvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChFeGVjU3Rh
dGUqIHN0YXRlKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1JlYWQKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGtl
eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFz
VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndh
cmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3Rh
dGUsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRo
aXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb01hcExpa2Uo
KnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9NYXBMaWtlKCpzdGF0ZSwg
KmNhc3RlZFRoaXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFk
T25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI2
MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1Rv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvTWFwTGlr
ZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBz
dGF0ZSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNSZWFkCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFj
ayA9IGNvbnZlcnQ8SURMQW55Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZv
cndhcmRGb3JFYWNoVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJh
Y2spKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBuZXh0Q2hpbGQgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwg
MCwgIm5leHRDaGlsZCIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rpb24i
LCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjM3LDcgKzIzNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIG1lc3NhZ2UgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShX
VEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdl
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhDRVJlYWN0aW9ucygpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ0VSZWFjdGlvbnMoKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEy
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwudmFsdWUoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKICAg
ICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRl
cmFsKCJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIikpOwotICAgIGltcGwudGVzdE9wZXJhdGlvbklu
dGVyZmFjZSgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uSW50ZXJmYWNlKCk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM2Nyw3ICsz
NjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5j
YWxsVHJhY2luZ0FjdGl2ZSgpKSkKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJP
cGVyYXRpb24oaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVkIikpOwot
ICAgIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0
aW9uU3BlY2lmaWVkKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTM5Niw3ICszOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZChjKTsK
ICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlM
aXRlcmFsKCJ0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQ
YXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMo
V1RGTW92ZShhKSwgV1RGTW92ZShiKSwgV1RGTW92ZShjKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVy
YXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUoYykpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00
MjAsNyArNDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgICAgICAgICAgY2FsbFRyYWNlclBhcmFtZXRlcnMuYXBwZW5kKG5vZGVOdWxsYWJsZUFyZyk7
CiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsIEFTQ0lJ
TGl0ZXJhbCgidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50IiksIFdURk1vdmUoY2Fs
bFRyYWNlclBhcmFtZXRlcnMpKTsKICAgICB9Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51
bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KFdURk1vdmUobm9kZU51bGxhYmxlQXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTQ0Myw3ICs0NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgICAgIFdURjo6dmlzaXQoWyZdIChhdXRvJiB2YWx1ZSkgeyBjYWxsVHJhY2VyUGFyYW1l
dGVycy5hcHBlbmQodmFsdWUpOyB9LCB2YXJpYW50QXJnKTsKICAgICAgICAgQ2FsbFRyYWNlcjo6
dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9u
V2l0aFZhcmlhbnRBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQYXJhbWV0ZXJzKSk7CiAg
ICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2
YXJpYW50QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50
KFdURk1vdmUodmFyaWFudEFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC00NjcsNyArNDY3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICAgICAgV1RGOjp2aXNpdChbJl0gKGF1dG8m
IHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZCh2YWx1ZSk7IH0sICp2YXJpYW50
TnVsbGFibGVBcmcpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFj
ZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJn
dW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAgICBpbXBs
LnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50
TnVsbGFibGVBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlh
bnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnROdWxsYWJsZUFyZykpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODksNyArNDg5LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICAgICAgV1RG
Ojp2aXNpdChbJl0gKGF1dG8mIHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZCh2
YWx1ZSk7IH0sICp2YXJpYW50T3B0aW9uYWxBcmcpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0
Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRpb25XaXRo
T3B0aW9uYWxWYXJpYW50QXJndW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykp
OwogICAgIH0KLSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1l
bnQoV1RGTW92ZSh2YXJpYW50T3B0aW9uYWxBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlv
bldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFyZykp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01MTAsNyArNTEwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgICAgICBXVEY6OnZpc2l0KFsmXSAoYXV0byYgdmFsdWUpIHsgY2FsbFRyYWNlclBhcmFt
ZXRlcnMuYXBwZW5kKHZhbHVlKTsgfSwgdmFyaWFudERlZmF1bHRBcmcpOwogICAgICAgICBDYWxs
VHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RP
cGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQ
YXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFy
aWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERlZmF1bHRBcmcpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVz
dE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERlZmF1
bHRBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBuYW1l
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01T
dHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZQogICAgIGF1dG8gbmFtZSA9
IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQoKnN0
YXRlLCBlbmNvZGVkTmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVs
bGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5h
bWUpKSkpOwotfQorMX0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewpAQCAtMTE1MCw3ICsxMTUwLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB5ID0g
Y29udmVydDxJRExVbnNpZ25lZFNob3J0Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIGltcGwuaXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5p
dGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3Rh
dGUpCkBAIC0xMTcxLDE0ICsxMTcxLDE0IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiB1bnNhZmUKICAgICBhdXRvIHkgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExVbnNp
Z25lZFNob3J0Pjo6ZGlyZWN0Q29udmVydCgqc3RhdGUsIGVuY29kZWRZKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1v
dmUoeCksIFdURk1vdmUoeSkpKSk7Ci19CisxfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVCb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUpCkBAIC0xMTk1LDcgKzExOTUsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gdW5zYWZlCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsKLX0KKzF9CiAKIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBjb252ZXJ0PElETFJlcXVpcmVzRXhpc3RpbmdBdG9t
aWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8
RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVs
ZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1l
bnRJZCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTIy
NSw3ICsxMjI1LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZQog
ICAgIGF1dG8gZWxlbWVudElkID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMUmVxdWlyZXNF
eGlzdGluZ0F0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj46OmRpcmVjdENvbnZlcnQo
KnN0YXRlLCBlbmNvZGVkRWxlbWVudElkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKLX0KKzF9CiAK
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CkBAIC0xMjM2LDcgKzEyMzYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbGVtZW50TmFtZSA9IGNvbnZlcnQ8SURMQXRvbWljU3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVM
aXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVu
dHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUo
ZWxlbWVudE5hbWUpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoRXhlY1N0YXRlKiBzdGF0
ZSkKQEAgLTEyNTUsNyArMTI1NSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiB1bnNhZmUKICAgICBhdXRvIGVsZW1lbnROYW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8
SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pjo6ZGlyZWN0Q29udmVydCgqc3Rh
dGUsIGVuY29kZWRFbGVtZW50TmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkpKSk7Ci19Cisx
fQogCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4Miw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5h
YmxlZEJ5U2V0dGluZ09wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZl
cnQ8SURMVW5zaWduZWRMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pdGVtKFdURk1vdmUoaW5kZXgp
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLml0
ZW0oV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDcgKzM4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnJlZ3VsYXJPcGVyYXRpb24oV1RGTW92ZSh0
ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwucmVndWxhck9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJh
bSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB0
ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUo
dGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92
ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNDE4LDcgKzQxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RG
TW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihX
VEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC00NjIsNyArNDYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGQoV1RGTW92ZSh0ZXN0
UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZChXVEZNb3ZlKHRlc3RQ
YXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFt
ID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVk
KFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRX
aGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ5OCw3ICs0OTgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZW5hYmxlZElu
U3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKFdURk1vdmUodGVzdFBhcmFt
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVz
RW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MTMsNyArNTEzLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0UHJpdmF0ZUZ1bmN0aW9uKCk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LnRlc3RQcml2YXRlRnVuY3Rpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlzZSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU0
Myw3ICs1NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29s
ZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGlt
cGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RGZWF0
dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0Myw3ICs4NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICBpbXBsLmltcGxlbWVudHNNZXRob2QxKCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmltcGxlbWVudHNNZXRob2Qx
KCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTg5OSw3ICs4OTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7Ci0gICAgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRl
c3RJbnRlcmZhY2U6OmltcGxlbWVudHNNZXRob2Q0KCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTkxNiw3ICs5MTYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxNZXRob2QxKGltcGwpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3Vw
cGxlbWVudGFsTWV0aG9kMShpbXBsKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtOTcyLDcgKzk3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGxpc3RlbmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2Nv
cGUsIDAsICJsaXN0ZW5lciIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRob2Qi
KTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLm1ldGhvZChsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwubWV0aG9kKGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubmFtZWRTZXR0ZXIo
V1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5uYW1lZFNldHRlcihX
VEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5uYW1lZERlbGV0ZXIoV1RGTW92ZShuYW1lKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm5hbWVkRGVsZXRlcihX
VEZNb3ZlKG5hbWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
bmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwuZ2V0dGVyTmFtZShXVEZNb3ZlKG5hbWUpKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5n
ZXR0ZXJOYW1lKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0
dGVyTmFtZShFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBp
bXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwg
V1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBX
VEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBp
bmRleCA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUs
IGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90
eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
bmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5u
YW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM1NCw3ICszNTQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1
ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZh
bHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IGluZGV4ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJp
bmc+KCpzdGF0ZSwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlck92ZXJsb2FkRGlzcGF0Y2hl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3Bw
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC51bmZvcmdlYWJsZU9w
ZXJhdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9u
KCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwudGVzdFdvcmtlclByb21pc2UoV1RGTW92ZShw
cm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RXb3JrZXJQcm9taXNlKFdURk1vdmUocHJvbWlzZSkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jYWxj
dWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNhbGN1bGF0
ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29s
ZWFuPihpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuZ2V0U2VjcmV0Qm9v
bGVhbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMzI0
LDcgKzMyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVh
bigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlv
blRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUzLDcgKzIwNTMs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPCiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHBhcmFtID0gY29udmVydDxJ
RExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmxl
Z2FjeUNhbGxlck5hbWVkKFdURk1vdmUocGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubGVnYWN5Q2FsbGVy
TmFtZWQoV1RGTW92ZShwYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC0yMDY3LDcgKzIwNjcsNyBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIHBhcmFtID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPihpbXBsLmxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncyhXVEZN
b3ZlKHBhcmFtKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4o
KnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5n
cyhXVEZNb3ZlKHBhcmFtKSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
YWxsSlNUZXN0T2JqMyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsSlNUZXN0TwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJpbmRpbmdzKCk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmxl
Z2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncygpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODMxLDcgKzQ4MzEsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODQ1LDcgKzQ4
NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNv
bnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDg4
OSw3ICs0ODg5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVy
dDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
LmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUo
dGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ5MDcsNyArNDkwNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC53b3JsZFNwZWNpZmljTWV0
aG9kKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndvcmxkU3BlY2lmaWNNZXRob2Qo
V1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkyMSw3ICs0OTIxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkz
NSw3ICs0OTM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4oRXhl
Y1N0YXRlKiBzdGF0ZSkKQEAgLTQ5NDksNyArNDk0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRl
c3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0RmVhdHVyZUdl
dFNlY3JldEJvb2xlYW4oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNT
dGF0ZSogc3RhdGUpCkBAIC00OTY0LDcgKzQ5NjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBpbXBsLnZvaWRNZXRob2QoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudm9pZE1ldGhvZCgpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00OTg2
LDcgKzQ5ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhBcmdzIiwgIlRlc3RP
YmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLnZvaWRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBX
VEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC52b2lkTWV0aG9kV2l0aEFyZ3Mo
V1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTAwMCw3ICs1MDAw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1ldGhvZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEJ5dGU+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5ieXRlTWV0aG9k
KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUwMjEsNyArNTAyMSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2Jq
QXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDIpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDIsICJvYmpB
cmciLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2RX
aXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KCpzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShieXRlQXJnKSwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUp
CkBAIC01MDM0LDcgKzUwMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2QoKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBpbXBsLm9jdGV0TWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3Rh
dGUpCkBAIC01MDU1LDcgKzUwNTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRo
QXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1v
dmUoc3RyQXJnKSwgKm9iakFyZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMT2N0ZXQ+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5vY3RldE1ldGhvZFdpdGhBcmdzKFdU
Rk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MDY4LDcgKzUwNjgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdNZXRob2QoKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTA4OSw3ICs1MDg5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252
ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMiksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0
T2JqZWN0IiwgImxvbmdNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKFdU
Rk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxv
bmdNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpB
cmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxMDIs
NyArNTEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2JqTWV0aG9kKCkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTEyMyw3ICs1MTIzLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElE
TEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMiks
IFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0
IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcp
LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25n
QXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxMzYsNyArNTEzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBsLnVu
Zm9yZ2VhYmxlTWV0aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TG9uZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9u
VW5mb3JnZWFibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUxNTMsNyArNTE1Myw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZN
b3ZlKGFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhXVEZNb3ZlKGFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01MTcxLDcgKzUxNzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byByZXNvbHZlciA9IGNvbnZlcnQ8SURMWFBhdGhOU1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZl
cj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsIDAsICJyZXNvbHZlciIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhY
UGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5tZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKCpyZXNvbHZlcik7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKnJlc29sdmVyKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTE4NSw3
ICs1MTg1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5udWxs
YWJsZVN0cmluZ01ldGhvZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5udWxsYWJs
ZVN0cmluZ01ldGhvZCgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0
YXRlKQpAQCAtNTE5Nyw3ICs1MTk3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJs
ZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIFRlc3RPYmo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0
aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURM
RE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0
YXRpY01ldGhvZCgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKEV4ZWNTdGF0
ZSogc3RhdGUpCkBAIC01MjE0LDcgKzUyMTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBp
bmRleCA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8
SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChX
VEZNb3ZlKGluZGV4KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVs
bGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxlU3Ry
aW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGluZGV4KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3Bl
Y2lhbE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTIzMSw3ICs1MjMxLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gZW51bUFyZyA9IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9i
ajo6RW51bVR5cGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2Jq
OjpFbnVtVHlwZT4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhXVEZNb3ZlKGVu
dW1BcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTUyNDksNyArNTI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGVudW1BcmcgPSBjb252
ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUs
IHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhTdGFuZGFsb25l
RW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVFbnVtZXJh
dGlvbj4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoV1RGTW92
ZShlbnVtQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyhXVEZN
b3ZlKGVudW1BcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTI2NSw3ICs1MjY1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBlbnVtQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+
OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMRW51bWVyYXRpb248
VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpFbnVtVHlwZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBb
XShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUVudW1FcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOyB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUyODEsNyArNTI4MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTEgOiBjb252ZXJ0PElE
TEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImVu
dW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVs
dFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKFdU
Rk1vdmUoZW51bUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5k
RGVmYXVsdFZhbHVlKFdURk1vdmUoZW51bUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MzE4LDcgKzUzMTgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETFVTVlN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJn
KFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoV1RGTW92
ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNTMzNiw3ICs1MzM2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhX
VEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmco
V1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTM1NCw3ICs1MzU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
c3RyID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhV
U1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdU
Rk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTUzNzIsNyArNTM3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0
ciA9IGNvbnZlcnQ8SURMQnl0ZVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MzkwLDcg
KzUzOTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETE51bGxh
YmxlPElETEJ5dGVTdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01NDA4LDcgKzU0MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0
PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNTQyNiw3ICs1NDI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VyaWFsaXplZEFy
ZyA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuc2VyaWFs
aXplZFZhbHVlKFdURk1vdmUoc2VyaWFsaXplZEFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXJpYWxpemVk
VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU0NDQsNyArNTQ0NCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIHJlY29yZFBhcmFtZXRlciA9IGNvbnZlcnQ8SURMUmVjb3JkPElETERP
TVN0cmluZywgSURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwubWV0aG9kV2l0aFJlY29yZChXVEZNb3ZlKHJlY29yZFBhcmFtZXRlcikpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5tZXRob2RXaXRoUmVjb3JkKFdURk1vdmUocmVjb3JkUGFyYW1ldGVyKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU0NTgs
NyArNTQ1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHByb3BhZ2F0ZUV4Y2Vw
dGlvbigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbigpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NTI2LDcgKzU1MjYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFy
Z3VtZW50KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50
KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblByaXZhdGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTU1NDMsNyArNTU0
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZ3VtZW50ID0gY29udmVydDxJRExET01T
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQ
cml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5wdWJsaWNB
bmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0
ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTU2NCw3ICs1NTY0LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB1c2VDYXB0dXJlID0gY29u
dmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmFk
ZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUo
dXNlQ2FwdHVyZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5hZGRFdmVudExpc3RlbmVyKFdURk1vdmUodHlwZSks
IFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTU4Niw3ICs1NTg2LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB1c2VD
YXB0dXJlID0gY29udmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgyKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0
ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5yZW1vdmVFdmVudExpc3Rl
bmVyKFdURk1vdmUodHlwZSksIFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNTYwMCw3ICs1NjAwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC53
aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRTdGF0ZVZv
aWQoKnN0YXRlKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtNTYxNCw3ICs1NjE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0
YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0aFNjcmlwdFN0YXRlT2Jq
KCpzdGF0ZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgaW1wbC53aXRoU2NyaXB0U3RhdGVPYmooKnN0YXRlKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
T2JqKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NjI3LDcgKzU2MjcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCBp
bXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0YXRlKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndp
dGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0YXRlKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTY1Nyw3ICs1NjU3LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1w
bC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgqY29udGV4dCk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTY3NCw3ICs1Njc0LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCpzdGF0ZSwgKmNvbnRleHQp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCpz
dGF0ZSwgKmNvbnRleHQpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC01NzA3LDcgKzU3MDcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlcygqc3RhdGUsICpjb250ZXh0KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhFeGVjU3RhdGUqIHN0YXRlKQpA
QCAtNTcyNSw3ICs1NzI1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICBpbXBsLndpdGhEb2N1bWVudEFyZ3VtZW50
KGRvY3VtZW50KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwud2l0aERvY3VtZW50QXJndW1lbnQoZG9jdW1lbnQpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01
NzQyLDcgKzU3NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byogaW5jdW1iZW50RG9jdW1lbnQgPSBpbmN1bWJlbnRET01XaW5kb3coKnN0YXRl
KS5kb2N1bWVudCgpOwogICAgIGlmICghaW5jdW1iZW50RG9jdW1lbnQpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC53aXRoQ2FsbGVyRG9j
dW1lbnRBcmd1bWVudCgqaW5jdW1iZW50RG9jdW1lbnQpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC53aXRoQ2FsbGVy
RG9jdW1lbnRBcmd1bWVudCgqaW5jdW1iZW50RG9jdW1lbnQpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NzU2LDcgKzU3NTYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLndpdGhDYWxsZXJXaW5kb3dBcmd1bWVu
dChpbmN1bWJlbnRET01XaW5kb3coKnN0YXRlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhDYWxsZXJXaW5k
b3dBcmd1bWVudChpbmN1bWJlbnRET01XaW5kb3coKnN0YXRlKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU3NzIsNyArNTc3Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0
dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBl
Pihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhXVEZNb3ZlKG9wdCkpOworICAgIFZvaWRP
cGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxBcmcoV1RGTW92ZShvcHQpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTc4OCw3ICs1Nzg4LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBcmdBbmRE
ZWZhdWx0VmFsdWUoV1RGTW92ZShvcHQpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
QXJnQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUob3B0KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4MDgsNyArNTgwOCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb3B0ID0gc3RhdGUt
PmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExM
b25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpS
ZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJn
KFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01ODMwLDcgKzU4MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBhdXRvIG9wdDIgPSBzdGF0ZS0+YXJndW1lbnQoMikuaXNVbmRlZmluZWQoKSA/IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMikpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShv
cHQxKSwgV1RGTW92ZShvcHQyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZFR3b09wdGlvbmFsQXJncyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUob3B0MSksIFdURk1v
dmUob3B0MikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC01ODQ2LDcgKzU4NDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkg
OiBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4NjIsNyAr
NTg2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNWU3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbFVTVlN0cmluZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RX
aXRoT3B0aW9uYWxVU1ZTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTg3OCw3ICs1ODc4LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCku
aXNVbmRlZmluZWQoKSA/IG51bGxBdG9tKCkgOiBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nKFdURk1vdmUoc3RyKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU4
OTQsNyArNTg5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0g
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBBU0NJSUxpdGVyYWwoImZvbyIpIDog
Y29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdURk1v
dmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRW
YWx1ZShXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01OTEwLDcgKzU5MTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
QXRvbWljU3RyaW5nKCJmb28iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6
IGNvbnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0
b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShzdHIpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NTkyNiw3ICs1OTI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTQyLDcg
KzU5NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5
NTgsNyArNTk1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0g
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBudWxsQXRvbSgpIDogY29udmVydDxJ
RExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
SXNOdWxsKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21p
Y1N0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTc0LDcgKzU5NzQsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTkwLDcgKzU5OTAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNWU3RyaW5n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02MDA2LDcgKzYwMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlBdG9tKCkgOiBjb252
ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjAyMiw3ICs2
MDIyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252
ZXJ0PElETFVucmVzdHJpY3RlZERvdWJsZT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihXVEZNb3ZlKG51bWJlcikpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihXVEZNb3ZlKG51bWJlcikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02MDM4LDcgKzYwMzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51
bWJlciA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihXVEZNb3ZlKG51
bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKFdURk1vdmUo
bnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTYwNTQsNyArNjA1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9w
dGlvbmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlv
bmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZ0xv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYwNzAsNyArNjA3MCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDxJRExM
b25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxMb25nTG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MDg2LDcgKzYw
ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURM
VW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRl
cjxJRExVbnNpZ25lZExvbmdMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbnNpZ25lZExv
bmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNjEwMiw3ICs2MTAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
dW1iZXIgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVy
byhXVEZNb3ZlKG51bWJlcikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25l
ZExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxMTgsNyArNjExOCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYXJyYXkgPSBzdGF0ZS0+YXJndW1lbnQoMCku
aXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pjo6UmV0
dXJuVHlwZXsgfSA6IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxT
ZXF1ZW5jZShXVEZNb3ZlKGFycmF5KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNl
cXVlbmNlKFdURk1vdmUoYXJyYXkpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjEzNCw3ICs2MTM0LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gQ29udmVydGVyPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBleyB9
IDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNF
bXB0eShXVEZNb3ZlKGFycmF5KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVl
bmNlSXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxNTAsNyArNjE1MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMQm9vbGVhbj46OlJldHVyblR5cGU+KCkg
OiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVy
dDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKFdURk1vdmUoYikpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKFdURk1vdmUoYikpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MTY2LDcgKzYxNjYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETEJvb2xlYW4+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbklzRmFsc2UoV1RGTW92ZShiKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW5Jc0ZhbHNlKFdURk1vdmUoYikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MTgyLDcgKzYxODIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETEFueT4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBbnkoV1RGTW92ZShh
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFueShXVEZNb3ZlKGEpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjE5OCw3
ICs2MTk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExP
YmplY3Q+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMT2JqZWN0
Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExPYmplY3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChXVEZNb3Zl
KGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KFdURk1vdmUoYSkpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
MjE0LDcgKzYyMTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9iaiA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pj4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iaiIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsICJUZXN0
T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoV1RG
TW92ZShvYmopKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVy
KFdURk1vdmUob2JqKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTYyMzAsNyArNjIzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gb2JqID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAwLCAib2JqIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChXVEZNb3ZlKG9iaikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoV1RGTW92ZShvYmopKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjI0Niw3
ICs2MjQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byByZXNvbHZlciA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMWFBhdGhOU1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZlcj4+
Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0
aE5TUmVzb2x2ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjYy
LDcgKzYyNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHJlY29yZCA9
IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpudWxsb3B0IDogY29udmVy
dDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
UmVjb3JkKFdURk1vdmUocmVjb3JkKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFJl
Y29yZChXVEZNb3ZlKHJlY29yZCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC02MjgwLDcgKzYyODAsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNr
LnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC02MzAwLDcgKzYzMDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhXVEZNb3ZlKG5vbkNh
bGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxs
YmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjMxNiw3ICs2MzE2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2Fs
bGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzM0
LDcgKzYzMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
Lm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNjM1NCw3ICs2MzU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZN
b3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShu
b25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzcwLDcgKzYzNzAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJ
RExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4o
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9u
QW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02Mzg1LDcgKzYzODUsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENh
bGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihzdGF0ZSwgc2NvcGUs
IDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gVGVzdE9iajo6c3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NDAy
LDcgKzY0MDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBUZXN0T2JqOjpzdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0MTcsNyAr
NjQxNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEo
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC02NDMzLDcgKzY0MzMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjQ1MCw3ICs2NDUwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
Y29uZGl0aW9uYWxNZXRob2QzKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0NzAsNyArNjQ3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01T
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3Zl
cmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUoc3RyQXJnKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKHN0ckFyZykpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
NDgzLDcgKzY0ODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1l
dGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVy
bG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25nQXJnKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY0OTQsNyAr
NjQ5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyQXJnID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKHN0ckFyZykpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY1MDUsNyArNjUwNSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbG9uZ0FyZyA9IGNvbnZlcnQ8SURMTG9uZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVk
TWV0aG9kKFdURk1vdmUobG9uZ0FyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUobG9uZ0FyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC02NTE2LDcgKzY1MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cihzdGF0ZSwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRN
ZXRob2QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTY1MjcsNyArNjUyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbGlzdEFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPERPTVN0cmlu
Z0xpc3Q+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImxpc3RBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kIiwgIkRPTVN0cmluZ0xpc3QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRo
b2QoV1RGTW92ZShsaXN0QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92
ZShsaXN0QXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTY1MzgsNyArNjUzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETERP
TVN0cmluZz4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9h
ZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjU0OSw3ICs2NTQ5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2Jq
QXJnKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2JqQXJnKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjU2MCw3ICs2NTYw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB3aW5kb3cgPSBjb252ZXJ0
PElETEludGVyZmFjZTxET01XaW5kb3c+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RP
YmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01XaW5kb3ciKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkZWRNZXRob2QoKndpbmRvdyk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKndp
bmRvdyk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTY1NzEsNyArNjU3MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChX
VEZNb3ZlKGFycmF5QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShh
cnJheUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02NTgyLDcgKzY1ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGFycmF5QXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRN
ZXRob2QoV1RGTW92ZShhcnJheUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUoYXJyYXlBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjU5Myw3ICs2NTkzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1v
dmUoc3RyQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNjYwNCw3ICs2NjA0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBi
bG9iQXJncyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExJbnRlcmZhY2U8QmxvYj4+KCpz
dGF0ZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjY2OSw3ICs2
NjY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0
byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
IDEsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFs
UGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShzdHJBcmcpLCBXVEZNb3ZlKG9iakFyZykpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKFdURk1vdmUoc3Ry
QXJnKSwgV1RGTW92ZShvYmpBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjY4Miw3ICs2NjgyLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBsb25nQXJnID0gc3RhdGUtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6
UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5U
eXBlPihjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92
ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02NzI0LDcgKzY3MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9i
amVjdE9yTm9kZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RPYmo+LCBJRExJ
bnRlcmZhY2U8VGVzdE5vZGU+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92
ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5n
dWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY3MzUsNyArNjczNSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETExvbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUodmFsdWUpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUodmFsdWUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNjc3MSw3ICs2NzcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBv
YmplY3RPck5vZGUgPSBjb252ZXJ0PElETFVuaW9uPElETEludGVyZmFjZTxUZXN0T2JqPiwgSURM
SW50ZXJmYWNlPFRlc3ROb2RlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RG
TW92ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlz
dGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjc4Miw3ICs2NzgyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURM
VW5pb248SURMSW50ZXJmYWNlPFRlc3RJbnRlcmZhY2U+LCBJRExET01TdHJpbmcsIElETExvbmc+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKFdURk1vdmUodmFsdWUpKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZSh2
YWx1ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC02ODIyLDcgKzY4MjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAxLCAib2JqZWN0IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9y
Tm9kZSksICpvYmplY3QpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rp
bmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpLCAqb2JqZWN0KTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjgzNSw3ICs2
ODM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0
byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAi
bm9kZSIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hp
bmdVbmlvbiIsICJUZXN0Tm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhO
b25EaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSwgKm5vZGUpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92
ZShvYmplY3RPck5vZGUpLCAqbm9kZSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY4NjgsNyArNjg2OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdE9iaj4sIElETEludGVyZmFjZTxUZXN0Tm9kZT4+Pj4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZFdp
dGhOdWxsYWJsZVVuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJs
b2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjg3OSw3ICs2ODc5
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8
SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5v
dmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUoaW5kZXgpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3Zl
cmxvYWRXaXRoTnVsbGFibGVVbmlvbihXVEZNb3ZlKGluZGV4KSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY5MTcsNyArNjkxNyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyB0cnVlIDogY29udmVydDxJRExVbmlvbjxJRExE
T01TdHJpbmcsIElETEJvb2xlYW4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShvYmplY3RPck5v
ZGUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9iamVj
dE9yTm9kZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02OTI4LDcgKzY5MjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGluZGV4ID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShp
bmRleCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdURk1vdmUoaW5k
ZXgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNjk2OSw3ICs2OTY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgYXV0byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAxLCAibm9kZSIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkV2l0aE51bGxhYmxl
Tm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiLCAiVGVzdE5vZGUiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShvYmop
LCAqbm9kZSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hp
bmdQYXJhbWV0ZXIoV1RGTW92ZShvYmopLCAqbm9kZSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY5ODIsNyArNjk4Miw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gaW5kZXggPSBjb252
ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3Zl
KG5vZGUpLCBXVEZNb3ZlKGluZGV4KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxl
Tm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShub2RlKSwgV1RGTW92ZShpbmRleCkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC03MDEzLDcgKzcwMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7Ci0gICAgVGVzdE9iajo6Y2xhc3NNZXRob2QoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRlc3RPYmo6OmNsYXNz
TWV0aG9kKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTcwMjgsNyArNzAyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBhcmcg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVy
dGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURM
TG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25n
PihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwg
VGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoV1RGTW92ZShhcmcpKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzA1NSw3ICs3MDU1
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgVGVzdE9iajo6b3ZlcmxvYWRl
ZE1ldGhvZDEoV1RGTW92ZShhcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2Qx
KFdURk1vdmUoYXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTcwNjgsNyArNzA2OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byB0eXBlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUodHlwZSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoV1RGTW92ZSh0eXBlKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcxMTQs
NyArNzExNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExv
bmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNz
TWV0aG9kV2l0aENsYW1wKFdURk1vdmUob2JqQXJnc1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9u
ZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5jbGFzc01ldGhvZFdpdGhDbGFtcChXVEZNb3ZlKG9iakFyZ3NTaG9y
dCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzEzMCw3ICs3MTMwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFw
dG9yPElETExvbmc+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNz
TWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTcxNTAsNyArNzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETEVuZm9yY2VSYW5nZUFkYXB0b3I8
SURMVW5zaWduZWRMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoV1RGTW92ZShvYmpBcmdzU2hvcnQp
LCBXVEZNb3ZlKG9iakFyZ3NMb25nKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZShXVEZNb3ZlKG9iakFyZ3NTaG9ydCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzE2
Niw3ICs3MTY2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmpBcmdz
TG9uZyA9IGNvbnZlcnQ8SURMRW5mb3JjZVJhbmdlQWRhcHRvcjxJRExMb25nPj4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VP
bk9wdGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcxODQsNyAr
NzE4NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHVuc2lnbmVkTG9uZ1NlcXVlbmNlID0g
Y29udmVydDxJRExTZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZShXVEZNb3ZlKHVuc2lnbmVkTG9uZ1NlcXVlbmNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhV
bnNpZ25lZExvbmdTZXF1ZW5jZShXVEZNb3ZlKHVuc2lnbmVkTG9uZ1NlcXVlbmNlKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcyMzQs
NyArNzIzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb3B0aW9uYWxV
bmlvbiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxD
b252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0
ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExV
bmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNlPElETFVucmVzdHJpY3RlZERvdWJsZT4+Pjo6
UmV0dXJuVHlwZT4oY29udmVydDxJRExVbmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNlPElE
TFVucmVzdHJpY3RlZERvdWJsZT4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihXVEZNb3Zl
KG9wdGlvbmFsVW5pb24pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25Q
YXJhbWV0ZXIoV1RGTW92ZShvcHRpb25hbFVuaW9uKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTcyNTQsNyArNzI1NCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gbnVsbGFibGVBcnJh
eUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMVW5zaWduZWRMb25nPj4+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51
bGxhYmxlQXJyYXlBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJs
ZVNlcXVlbmNlKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzI3Miw3ICs3MjcyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZWxlbWVudElkID0gY29u
dmVydDxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4oKnN0YXRl
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92
ZShlbGVtZW50SWQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxs
YWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJ
ZCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzMwMiw3ICs3
MzAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETEludGVy
ZmFjZTxUZXN0Tm9kZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNv
bnZlcnQxIiwgIlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5jb252ZXJ0MSgqdmFsdWUpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MzIwLDcgKzczMjAsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RO
b2RlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwg
IlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252ZXJ0MihXVEZNb3ZlKHZhbHVlKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLmNvbnZlcnQyKFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzMzOCw3ICs3MzM4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb252ZXJ0MyhXVEZNb3ZlKHZh
bHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLmNvbnZlcnQzKFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzM1Niw3ICs3MzU2
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxl
PElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwuY29udmVydDQoV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb252ZXJ0NChXVEZN
b3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTczNzAsNyArNzM3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5tdXRhYmxlUG9pbnRGdW5j
dGlvbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxT
VkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03MzgzLDcgKzczODMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICBpbXBsLmJhbmFuYSgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5iYW5hbmEoKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzQwMyw3
ICs3NDAzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETERPTVN0cmluZz4oKnN0YXRl
LCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92
ZSh0YWlsKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCks
IFdURk1vdmUodGFpbCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC03NDIzLDcgKzc0MjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVu
dHM8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC52YXJpYWRpY0Rv
dWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudmFy
aWFkaWNEb3VibGVNZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0NDMsNyAr
NzQ0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1
dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExJbnRlcmZhY2U8Tm9kZT4+KCpz
dGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWls
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTc0NjMsNyArNzQ2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbmlvbjxJRExJ
bnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnZhcmlh
ZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0ODMs
NyArNzQ4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IGF1dG8gYiA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5hbnkoV1RGTW92ZShhKSwgV1RGTW92ZShiKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LmFueShXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzQ5Nyw3ICs3NDk3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJv
bWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC03NTE1LDcgKzc1MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhID0gY29udmVydDxJ
RExGbG9hdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVu
dChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzUyOSw3ICs3NTI5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihXVEZNb3ZlKHByb21p
c2UpKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1v
dmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC03NTQ1LDcgKzc1NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0
aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxD
b252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlv
bldpdGhPcHRpb25hbEludEFyZ3VtZW50KFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RG
TW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc1NjEsNyArNzU2MSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMRmxvYXQ+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVk
RnVuY3Rpb24oV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03
NTcyLDcgKzc1NzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHJlcXVl
c3QgPSBjb252ZXJ0PElETEludGVyZmFjZTxGZXRjaFJlcXVlc3Q+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAi
cmVxdWVzdCIsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIiwg
IkZldGNoUmVxdWVzdCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rp
b24oKnJlcXVlc3QsIFdURk1vdmUocHJvbWlzZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbigqcmVxdWVzdCwgV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc2MDMsNyArNzYw
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBU
ZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzYxNiw3ICs3NjE2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsIFRlc3RPYmo6
OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1vdmUocHJvbWlzZSkp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
KFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC03NjY2LDcgKzc2NjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExWb2lk
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwudGVzdFJldHVybnNP
d25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFZvaWQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0UmV0dXJuc093blByb21pc2VBbmRQ
cm9taXNlUHJveHlGdW5jdGlvbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9t
aXNlUHJveHlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzY4Miw3ICs3NjgyLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5jb25k
aXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsT3Zl
cmxvYWQoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNzY5Niw3ICs3Njk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShh
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc3MzgsNyAr
NzczOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwuc2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKHN0cikpOworICAgIFZvaWRP
cGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1w
bC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc3NTAsNyArNzc1MCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMTG9u
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5zaW5nbGVD
b25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zaW5nbGVDb25kaXRp
b25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03Nzg4LDcgKzc3ODgsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byBpbml0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmF0dGFj
aFNoYWRvd1Jvb3QoV1RGTW92ZShpbml0KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmF0dGFjaFNoYWRvd1Jvb3Qo
V1RGTW92ZShpbml0KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTc4MDYsNyArNzgwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGRpY3QgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoRXh0
ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKFdURk1vdmUoZGljdCkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vcGVy
YXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKFdURk1vdmUoZGljdCkpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03ODI0
LDcgKzc4MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBkYXRhID0gY29udmVydDxJRExV
bmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5idWZmZXJTb3VyY2VQYXJhbWV0ZXIoV1RG
TW92ZShkYXRhKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmJ1ZmZlclNvdXJjZVBhcmFtZXRlcihXVEZNb3ZlKGRh
dGEpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNzg0Miw3ICs3ODQyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gcGFyYW0gPSBj
b252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwubGVnYWN5Q2FsbGVyTmFtZWQoV1RGTW92ZShwYXJhbSkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5sZWdh
Y3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc4NjMsNyArNzg2Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURM
SW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAiYiIsICJUZXN0T2JqZWN0IiwgInRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50ZXN0UmV0dXJu
VmFsdWVPcHRpbWl6YXRpb24oKmEsICpiKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFJldHVyblZhbHVlT3B0
aW1pemF0aW9uKCphLCAqYik7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmV0dXJu
VmFsdWUpOwogfQogCkBAIC03ODg0LDcgKzc4ODQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2Rl
Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIFtdKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KHN0YXRlLCBzY29wZSwgMSwgImIiLCAiVGVzdE9iamVjdCIsICJ0ZXN0UmV0dXJuVmFsdWVPcHRp
bWl6YXRpb25XaXRoRXhjZXB0aW9uIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRp
b24oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldp
dGhFeGNlcHRpb24oKmEsICpiKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RSZXR1cm5WYWx1ZU9wdGltaXph
dGlvbldpdGhFeGNlcHRpb24oKmEsICpiKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTc4OTgsNyArNzg5OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9u
KCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbigpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03
OTEyLDcgKzc5MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbigpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb25kaXRpb25h
bGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzkyNiw3ICs3OTI2LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5k
V29ya2VyRnVuY3Rpb24oKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0FuZFdvcmtlckZ1bmN0aW9uKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTc5NDAsNyArNzk0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpz
dGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVTVlN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmlu
Z2lmaWVyQXR0cmlidXRlKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw3ICsyMjYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBp
bXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252
ZXJ0PElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmZ1bmN0aW9uKFdURk1v
dmUodmFsdWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZnVuY3Rpb24oV1RGTW92ZSh2YWx1ZSkpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zMjcsNyAr
MzI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5mdW5jdGlvblJldHVy
bmluZygpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5mdW5jdGlvblJldHVybmluZygpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZyhFeGVjU3RhdGUq
IHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5nKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwudG9TdHJpbmcoKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJv
dG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5nKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUs
IHRocm93U2NvcGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmlkZW50aWZpZXIoKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5p
ZGVudGlmaWVyKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKEV4ZWNT
dGF0ZSogc3RhdGUpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBp
bXBsLmlkZW50aWZpZXIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCBpbXBsLmFsdGVybmF0ZUlkZW50aWZpZXIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5hbHRlcm5hdGVJ
ZGVudGlmaWVyKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbklkZW50aWZp
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmFsdGVy
bmF0ZUlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcw
LDcgKzE3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC50b1N0cmluZygpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJv
d1Njb3BlLCBpbXBsLnRvU3RyaW5nKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBs
LmlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byB4ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
KCkgPyBDb252ZXJ0ZXI8SURMU2VxdWVuY2U8SURMTG9uZz4+OjpSZXR1cm5UeXBleyB9IDogY29u
dmVydDxJRExTZXF1ZW5jZTxJRExMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5mdW5jKFdURk1vdmUoeCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jKFdURk1v
dmUoeCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC01MDgsNyArNTA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgYXV0byBhbHBoYSA9IHN0YXRlLT5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgp
ID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+OjpSZXR1cm5U
eXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+OjpS
ZXR1cm5UeXBlPihjb252ZXJ0PElETFVucmVzdHJpY3RlZEZsb2F0Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCg0KSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5zZXRTaGFkb3coV1RGTW92ZSh3aWR0aCks
IFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyKSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUo
YWxwaGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0U2hhZG93KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhl
aWdodCksIFdURk1vdmUoYmx1ciksIFdURk1vdmUoY29sb3IpLCBXVEZNb3ZlKGFscGhhKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUy
Niw3ICs1MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZl
cnQ8SURMU2VxdWVuY2U8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oaW1wbC5tZXRob2RXaXRo
U2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuc2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1w
bC5tZXRob2RXaXRoU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTQzLDcgKzU0Myw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJRExOdWxs
YWJsZTxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5udWxsYWJsZVNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVu
Y2VBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwubnVsbGFibGVTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNl
QXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFy
ZyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuc2VxdWVuY2VPZk51bGxh
Ymxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6
Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNlcXVlbmNlT2ZOdWxs
YWJsZXNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NzksNyArNTc5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVl
bmNlPElETE51bGxhYmxlPElETERPTVN0cmluZz4+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5udWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoV1RG
TW92ZShzZXF1ZW5jZUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJs
ZXNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTcsNyArNTk3LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNl
PElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4+Pj4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5udWxsYWJsZVNlcXVl
bmNlT2ZVbmlvbnNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5udWxsYWJs
ZVNlcXVlbmNlT2ZVbmlvbnNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MTUsNyArNjE1LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdW5pb25BcmcgPSBjb252ZXJ0PElETFVuaW9uPElE
TERPTVN0cmluZywgSURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGltcGwudW5pb25BcmcoV1RGTW92ZSh1bmlvbkFyZykpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC51bmlv
bkFyZyhXVEZNb3ZlKHVuaW9uQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGFyZzIgPSBzdGF0ZS0+YXJndW1lbnQo
MSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETENsYW1wQWRhcHRv
cjxJRExVbnNpZ25lZExvbmdMb25nPj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENv
bnZlcnRlcjxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBl
Pihjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZnVuY1dpdGhDbGFtcChXVEZN
b3ZlKGFyZzEpLCBXVEZNb3ZlKGFyZzIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZnVuY1dpdGhDbGFtcChXVEZN
b3ZlKGFyZzEpLCBXVEZNb3ZlKGFyZzIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmZ1bmNXaXRoQ2xhbXBJblR5
cGVkZWYoV1RGTW92ZShhcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZnVuY1dpdGhDbGFtcEluVHlwZWRlZihX
VEZNb3ZlKGFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC02NjcsNyArNjY3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpz
dGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBvaW50RnVuY3Rpb24oKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5w
b2ludEZ1bmN0aW9uKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQpAQCAtNzE4LDcgKzcxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcXVlbmNlQXJn
ID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdEV2ZW50VGFyZ2V0Pj4+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJ
bmNsdWRlKFdURk1vdmUoc2VxdWVuY2VBcmcpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuY2FsbFdpdGhTZXF1
ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUpCkBA
IC03MzEsNyArNzMxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcHJvcGFnYXRl
RXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uKCkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uKCk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NNZWRpYVJ1bGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
ZWRpYVJ1bGUuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TWVkaWFSdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNiBAQCBpbnRlcmZhY2Ug
Q1NTTWVkaWFSdWxlIDogQ1NTUnVsZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhTGlz
dCBtZWRpYTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShvcHRpb25h
bCBET01TdHJpbmcgcnVsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlu
ZGV4ID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZVJ1bGUob3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVs
ZShvcHRpb25hbCBET01TdHJpbmcgcnVsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25l
ZCBsb25nIGluZGV4ID0gMCk7CisgICAgdm9pZCBkZWxldGVSdWxlKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgaW5kZXggPSAwKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMCBA
QAogCiAgICAgRE9NU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5TmFt
ZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVt
b3ZlUHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CisgICAgW0NFUmVhY3Rpb25zXSBE
T01TdHJpbmcgcmVtb3ZlUHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAgICAgRE9N
U3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogCi0g
ICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRQcm9wZXJ0eShET01T
dHJpbmcgcHJvcGVydHlOYW1lLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2
YWx1ZSwgb3B0aW9uYWwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3Jp
dHkgPSAiIik7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHNldFByb3BlcnR5KERPTVN0cmluZyBw
cm9wZXJ0eU5hbWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBv
cHRpb25hbCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIi
KTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBn
ZXR0ZXIgRE9NU3RyaW5nIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEzICsyMiwx
MyBAQCBpbnRlcmZhY2UgQ1NTU3R5bGVTaGVldCA6IFN0eWxlU2hlZXQgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBDU1NSdWxlIG93bmVyUnVsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NT
UnVsZUxpc3QgY3NzUnVsZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxv
bmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRl
eCA9IDApOworICAgIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCBkZWxldGVS
dWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1
bGVMaXN0IHJ1bGVzOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gb3BlcmF0aW9ucyBhcmUg
V2ViS2l0LXNwZWNpZmljLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBhZGRSdWxlKG9w
dGlvbmFsIERPTVN0cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJp
bmcgc3R5bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBpbmRleCA9IDApOworICAgIGxvbmcgYWRkUnVsZShvcHRpb25hbCBET01TdHJpbmcgc2Vs
ZWN0b3IgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0eWxlID0gInVuZGVmaW5l
ZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgcmVtb3ZlUnVsZShv
cHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdXBwb3J0c1J1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw2
IEBAIGludGVyZmFjZSBDU1NTdXBwb3J0c1J1bGUgOiBDU1NSdWxlIHsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBjb25kaXRpb25UZXh0OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1bGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
aW5kZXggPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5n
IHJ1bGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICB2b2lkIGRlbGV0
ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0RPTU1hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXgu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiAgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlciksCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogIF0gaW50ZXJmYWNlIERP
TU1hdHJpeCA6IERPTU1hdHJpeFJlYWRPbmx5IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5l
d09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeElu
aXQgb3RoZXIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9N
TWF0cml4IGZyb21GbG9hdDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5MzIpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDY0QXJy
YXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRy
aXggZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBbTmV3T2Jq
ZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5
MzIpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0NjRBcnJheShG
bG9hdDY0QXJyYXkgYXJyYXk2NCk7CiAKICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBzaW1w
bGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJpeAogICAgIGlu
aGVyaXQgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYTsgLy8gQWxpYXMgZm9yIG0xMS4K
QEAgLTYyLDggKzYyLDggQEAKICAgICBpbmhlcml0IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91
YmxlIG00NDsKIAogICAgIC8vIE11dGFibGUgdHJhbnNmb3JtIG1ldGhvZHMKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIERPTU1hdHJpeCBtdWx0aXBseVNlbGYob3B0aW9uYWwgRE9NTWF0cml4SW5p
dCBvdGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01NYXRyaXggcHJlTXVsdGlwbHlT
ZWxmKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOworICAgIERPTU1hdHJpeCBtdWx0aXBs
eVNlbGYob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgRE9NTWF0cml4IHByZU11
bHRpcGx5U2VsZihvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKICAgICBET01NYXRyaXgg
dHJhbnNsYXRlU2VsZihvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHR4ID0gMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHR5ID0g
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHR6ID0gMCk7CkBAIC05MCw1ICs5MCw1IEBACiAgICAgRE9NTWF0cml4IHNrZXdZU2VsZihv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3Jl
ZXMuCiAgICAgRE9NTWF0cml4IGludmVydFNlbGYoKTsKIAotICAgIFtFeHBvc2VkPVdpbmRvdywg
TWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c2V0TWF0cml4VmFsdWVGb3JCaW5kaW5n
c10gRE9NTWF0cml4IHNldE1hdHJpeFZhbHVlKERPTVN0cmluZyB0cmFuc2Zvcm1MaXN0KTsKKyAg
ICBbRXhwb3NlZD1XaW5kb3csIEltcGxlbWVudGVkQXM9c2V0TWF0cml4VmFsdWVGb3JCaW5kaW5n
c10gRE9NTWF0cml4IHNldE1hdHJpeFZhbHVlKERPTVN0cmluZyB0cmFuc2Zvcm1MaXN0KTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2Vy
KSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBET01NYXRyaXhS
ZWFkT25seSB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01N
YXRyaXhSZWFkT25seSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9u
bHkgZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQ2
NEFycmF5KEZsb2F0NjRBcnJheSBhcnJheTY0KTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9N
TWF0cml4UmVhZE9ubHkgZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsK
KyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0MzJBcnJh
eShGbG9hdDMyQXJyYXkgYXJyYXkzMik7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJp
eFJlYWRPbmx5IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOwogCiAgICAg
Ly8gVGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFzZXMgZm9yIGNlcnRhaW4gZWxlbWVu
dHMgb2YgdGhlIDR4NCBtYXRyaXgKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSBhOyAvLyBBbGlhcyBmb3IgbTExLgpAQCAtODgsMTUgKzg4LDE1IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGFuZ2xlID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCiAgICAgW05ld09iamVj
dF0gRE9NTWF0cml4IHNrZXdYKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgc3ggPSAwKTsg
Ly8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggc2tld1ko
b3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeSA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdy
ZWVzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBET01NYXRyaXggbXVsdGlw
bHkob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgW05ld09iamVjdF0gRE9NTWF0
cml4IG11bHRpcGx5KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwogICAgIFtOZXdPYmpl
Y3RdIERPTU1hdHJpeCBmbGlwWCgpOwogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBmbGlwWSgp
OwogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBpbnZlcnNlKCk7CiAKICAgICBbTmV3T2JqZWN0
XSBET01Qb2ludCB0cmFuc2Zvcm1Qb2ludChvcHRpb25hbCBET01Qb2ludEluaXQgcG9pbnQpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRmxvYXQzMkFycmF5IHRvRmxvYXQzMkFycmF5KCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBGbG9hdDY0QXJyYXkgdG9GbG9hdDY0QXJyYXkoKTsKKyAg
ICBGbG9hdDMyQXJyYXkgdG9GbG9hdDMyQXJyYXkoKTsKKyAgICBGbG9hdDY0QXJyYXkgdG9GbG9h
dDY0QXJyYXkoKTsKIAotICAgIFtFeHBvc2VkPVdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHN0
cmluZ2lmaWVyOworICAgIFtFeHBvc2VkPVdpbmRvd10gc3RyaW5naWZpZXI7CiAgICAgc2VyaWFs
aXplciA9IHsgYXR0cmlidXRlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RlcHJl
Y2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMyArNTUsMTMgQEAKICAgICAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBzZXRGbG9hdFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRU
eXBlID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGZsb2F0VmFsdWUgPSBOYU4pOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdldEZsb2F0VmFsdWUo
b3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwKTsKKyAgICB2b2lkIHNldEZsb2F0
VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwLCBvcHRpb25hbCB1bnJl
c3RyaWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9IE5hTik7CisgICAgdW5yZXN0cmljdGVkIGZsb2F0
IGdldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdHJpbmdWYWx1ZShvcHRpb25hbCB1bnNp
Z25lZCBzaG9ydCBzdHJpbmdUeXBlID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZ1ZhbHVl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBnZXRTdHJpbmdWYWx1ZSgpOwor
ICAgIHZvaWQgc2V0U3RyaW5nVmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RyaW5nVHlw
ZSA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgRE9NU3RyaW5nIGdl
dFN0cmluZ1ZhbHVlKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERlcHJlY2F0ZWRDU1NP
TUNvdW50ZXIgZ2V0Q291bnRlclZhbHVlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBEZXBy
ZWNhdGVkQ1NTT01SZWN0IGdldFJlY3RWYWx1ZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RGVwcmVjYXRlZENTU09NUkdCQ29sb3IgZ2V0UkdCQ29sb3JWYWx1ZSgpOworICAgIERlcHJlY2F0
ZWRDU1NPTUNvdW50ZXIgZ2V0Q291bnRlclZhbHVlKCk7CisgICAgRGVwcmVjYXRlZENTU09NUmVj
dCBnZXRSZWN0VmFsdWUoKTsKKyAgICBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBnZXRSR0JDb2xv
clZhbHVlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGVudW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOwogCiAgICAgUHJvbWlzZTxz
ZXF1ZW5jZTxGb250RmFjZT4+IGxvYWQoRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmlu
ZyB0ZXh0ID0gIiAiKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gY2hlY2soRE9N
U3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0gIiAiKTsKKyAgICBib29sZWFu
IGNoZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIgIik7CiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxGb250RmFjZVNldD4gcmVhZHk7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyBzdGF0dXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDYgQEAKIAog
ICAgIGdldHRlciBET01TdHJpbmc/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlTWVkaXVtKERPTVN0cmluZyBvbGRNZWRpdW0p
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcHBlbmRNZWRpdW0oRE9NU3RyaW5nIG5l
d01lZGl1bSk7CisgICAgdm9pZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9sZE1lZGl1bSk7Cisg
ICAgdm9pZCBhcHBlbmRNZWRpdW0oRE9NU3RyaW5nIG5ld01lZGl1bSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMyArNTcsMTMgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBtNDQ7CiAK
ICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFs
dWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1hdHJpeFZhbHVl
KG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmcgPSAidW5kZWZpbmVkIik7CisgICAgdm9pZCBzZXRN
YXRyaXhWYWx1ZShvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nID0gInVuZGVmaW5lZCIpOwogICAg
IAogICAgIC8vIE11bHRpcGx5IHRoaXMgbWF0cml4IGJ5IHNlY29uZE1hdHJpeCwgb24gdGhlIHJp
Z2h0IChyZXN1bHQgPSB0aGlzICogc2Vjb25kTWF0cml4KQogICAgIFdlYktpdENTU01hdHJpeCBt
dWx0aXBseShvcHRpb25hbCBXZWJLaXRDU1NNYXRyaXg/IHNlY29uZE1hdHJpeCA9IG51bGwpOwog
ICAgIAogICAgIC8vIFJldHVybiB0aGUgaW52ZXJzZSBvZiB0aGlzIG1hdHJpeC4gVGhyb3cgYW4g
ZXhjZXB0aW9uIGlmIHRoZSBtYXRyaXggaXMgbm90IGludmVydGlibGUKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFdlYktpdENTU01hdHJpeCBpbnZlcnNlKCk7CisgICAgV2ViS2l0Q1NTTWF0cml4
IGludmVyc2UoKTsKICAgICAKICAgICAvLyBSZXR1cm4gdGhpcyBtYXRyaXggdHJhbnNsYXRlZCBi
eSB0aGUgcGFzc2VkIHZhbHVlcy4KICAgICAvLyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNlIGEgdmFs
dWUgb2YgMC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9u
cwpAQCAtOTIsNSArOTIsNSBAQAogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1
ZSBvZiAwLgogICAgIFdlYktpdENTU01hdHJpeCBza2V3WShvcHRpb25hbCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGFuZ2xlID0gTmFOKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc3RyaW5naWZp
ZXI7CisgICAgc3RyaW5naWZpZXI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMSArMjAsMTEgQEAKIGludGVyZmFjZSBD
aGFyYWN0ZXJEYXRhIDogTm9kZSB7CiAgICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGRhdGE7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHN1YnN0cmluZ0Rh
dGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIERPTVN0
cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNv
dW50KTsKICAgICB2b2lkIGFwcGVuZERhdGEoRE9NU3RyaW5nIGRhdGEpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnREYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBET01TdHJp
bmcgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZURhdGEodW5zaWdu
ZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCByZXBsYWNlRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9u
ZyBjb3VudCwgRE9NU3RyaW5nIGRhdGEpOworICAgIHZvaWQgaW5zZXJ0RGF0YSh1bnNpZ25lZCBs
b25nIG9mZnNldCwgRE9NU3RyaW5nIGRhdGEpOworICAgIHZvaWQgZGVsZXRlRGF0YSh1bnNpZ25l
ZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgdm9pZCByZXBsYWNlRGF0
YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCwgRE9NU3RyaW5nIGRh
dGEpOwogfTsKIAogQ2hhcmFjdGVyRGF0YSBpbXBsZW1lbnRzIENoaWxkTm9kZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogWwog
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQ2hpbGROb2RlIHsKLSAgICBbQ0VS
ZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGJlZm9yZSgoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUs
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9k
ZXMpOwotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgcmVwbGFjZVdpdGgoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVh
Y3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoKTsKKyAg
ICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmlu
ZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdm9pZCBhZnRlcigo
Tm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFi
bGVdIHZvaWQgcmVwbGFjZVdpdGgoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAg
W0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB2b2lkIHJlbW92ZSgpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNSArMzAsNSBAQAogXSBpbnRlcmZhY2UgQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5IHsKICAgICBbQ0VSZWFjdGlvbnMsIEN1c3RvbV0gdm9pZCBkZWZpbmUoRE9NU3RyaW5n
IG5hbWUsIEZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsKICAgICBhbnkgZ2V0KERPTVN0cmluZyBuYW1l
KTsKLSAgICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbiwgUmV0dXJuc093blByb21pc2VdIFBy
b21pc2U8dm9pZD4gd2hlbkRlZmluZWQoRE9NU3RyaW5nIG5hbWUpOworICAgIFtDdXN0b20sIFJl
dHVybnNPd25Qcm9taXNlXSBQcm9taXNlPHZvaWQ+IHdoZW5EZWZpbmVkKERPTVN0cmluZyBuYW1l
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxEb2N1bWVudCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRl
cmZhY2UgRE9NSW1wbGVtZW50YXRpb24gewotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0
aW9uXSBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lLCBET01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBzeXN0ZW1JZCk7Ci0gICAgW05ld09i
amVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0
cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAg
ICBbTmV3T2JqZWN0XSBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBET01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBzeXN0ZW1JZCk7Cisg
ICAgW05ld09iamVjdF0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOwogICAgIFtOZXdPYmpl
Y3RdIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1MRG9jdW1lbnQob3B0aW9uYWwgRE9NU3RyaW5nIHRp
dGxlKTsKIAogICAgIGJvb2xlYW4gaGFzRmVhdHVyZSgpOyAvLyBVc2VsZXNzOyBhbHdheXMgcmV0
dXJucyB0cnVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Qb2ludFJlYWRPbmx5LmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9ubHku
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGludGVyZmFjZSBET01Qb2ludFJl
YWRPbmx5IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSB6Owog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHc7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVBvaW50IG1hdHJpeFRyYW5zZm9ybShvcHRpb25hbCBET01NYXRy
aXhJbml0IG1hdHJpeCk7CisgICAgRE9NUG9pbnQgbWF0cml4VHJhbnNmb3JtKG9wdGlvbmFsIERP
TU1hdHJpeEluaXQgbWF0cml4KTsKIAogICAgIHNlcmlhbGl6ZXIgPSB7IGF0dHJpYnV0ZSB9Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1M
aXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERhdGFUcmFu
c2Zlckl0ZW0/IGFkZChET01TdHJpbmcgZGF0YSwgRE9NU3RyaW5nIHR5cGUpOworICAgIERhdGFU
cmFuc2Zlckl0ZW0/IGFkZChET01TdHJpbmcgZGF0YSwgRE9NU3RyaW5nIHR5cGUpOwogICAgIERh
dGFUcmFuc2Zlckl0ZW0/IGFkZChGaWxlIGZpbGUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBsb25nIGluZGV4KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDIxICs1OCwyMSBAQCB0eXBlZGVmICgK
ICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKERPTVN0cmluZz8gbmFt
ZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKERPTVN0cmluZyBjbGFzc05hbWVzKTsKIAotICAgIFtOZXdPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWNyZWF0ZUVsZW1lbnRGb3JCaW5k
aW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KERPTVN0cmluZyBsb2NhbE5hbWUpOyAvLyBGSVhN
RTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsgLy8gRklYTUU6IG1pc3Npbmcgb3B0aW9ucyBwYXJh
bWV0ZXIuCisgICAgW05ld09iamVjdCwgSW1wbGVtZW50ZWRBcz1jcmVhdGVFbGVtZW50Rm9yQmlu
ZGluZ3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChET01TdHJpbmcgbG9jYWxOYW1lKTsgLy8gRklY
TUU6IG1pc3Npbmcgb3B0aW9ucyBwYXJhbWV0ZXIuCisgICAgW05ld09iamVjdF0gRWxlbWVudCBj
cmVhdGVFbGVtZW50TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lKTsgLy8gRklYTUU6IG1pc3Npbmcgb3B0aW9ucyBwYXJhbWV0ZXIuCiAgICAgW05ld09i
amVjdF0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgW05l
d09iamVjdF0gVGV4dCBjcmVhdGVUZXh0Tm9kZShET01TdHJpbmcgZGF0YSk7Ci0gICAgW05ld09i
amVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIENEQVRBU2VjdGlvbiBjcmVhdGVDREFUQVNlY3Rpb24o
RE9NU3RyaW5nIGRhdGEpOworICAgIFtOZXdPYmplY3RdIENEQVRBU2VjdGlvbiBjcmVhdGVDREFU
QVNlY3Rpb24oRE9NU3RyaW5nIGRhdGEpOwogICAgIFtOZXdPYmplY3RdIENvbW1lbnQgY3JlYXRl
Q29tbWVudChET01TdHJpbmcgZGF0YSk7Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRp
b25dIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRE9N
U3RyaW5nIHRhcmdldCwgRE9NU3RyaW5nIGRhdGEpOworICAgIFtOZXdPYmplY3RdIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRE9NU3RyaW5nIHRhcmdl
dCwgRE9NU3RyaW5nIGRhdGEpOwogCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
biwgTmV3T2JqZWN0XSBOb2RlIGltcG9ydE5vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFu
IGRlZXAgPSBmYWxzZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTm9k
ZSBhZG9wdE5vZGUoTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVjdF0gTm9k
ZSBpbXBvcnROb2RlKE5vZGUgbm9kZSwgb3B0aW9uYWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOwor
ICAgIFtDRVJlYWN0aW9uc10gTm9kZSBhZG9wdE5vZGUoTm9kZSBub2RlKTsKIAotICAgIFtOZXdP
YmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZShET01TdHJpbmcg
bG9jYWxOYW1lKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciBjcmVh
dGVBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmll
ZE5hbWUpOworICAgIFtOZXdPYmplY3RdIEF0dHIgY3JlYXRlQXR0cmlidXRlKERPTVN0cmluZyBs
b2NhbE5hbWUpOworICAgIFtOZXdPYmplY3RdIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBFdmVudCBjcmVhdGVFdmVudChET01TdHJpbmcgdHlw
ZSk7CisgICAgW05ld09iamVjdF0gRXZlbnQgY3JlYXRlRXZlbnQoRE9NU3RyaW5nIHR5cGUpOwog
CiAgICAgW05ld09iamVjdF0gUmFuZ2UgY3JlYXRlUmFuZ2UoKTsKIApAQCAtMTA2LDExICsxMDYs
MTEgQEAgdHlwZWRlZiAoCiAgICAgLy8gRklYTUU6IFRoZSBIVE1MIHNwZWMgc2F5cyB0aGlzIHNo
b3VsZCBjb25zdWx0IHRoZSAicmVzcG9uc2libGUgZG9jdW1lbnQiLiBXZSBzaG91bGQgZW5zdXJl
CiAgICAgLy8gdGhhdCB0aGUgY2FsbGVyIGRvY3VtZW50IG1hdGNoZXMgdGhvc2Ugc2VtYW50aWNz
LiBJdCBpcyBwb3NzaWJsZSB3ZSBzaG91bGQgcmVwbGFjZSBpdCB3aXRoCiAgICAgLy8gdGhlIGV4
aXN0aW5nICdpbmN1bWJlbnQgZG9jdW1lbnQnIGNvbmNlcHQuCi0gICAgW0NFUmVhY3Rpb25zLCBD
YWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5n
cywgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IG9wZW4ob3B0aW9uYWwgRE9NU3RyaW5nIHR5
cGUgPSAidGV4dC9odG1sIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHJlcGxhY2UgPSAiIik7Ci0gICAg
W0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgSW1wbGVtZW50ZWRBcz1vcGVuRm9y
QmluZGluZ3MsIE1heVRocm93RXhjZXB0aW9uXSBET01XaW5kb3cgb3BlbihVU1ZTdHJpbmcgdXJs
LCBET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIGZlYXR1cmVzKTsKLSAgICBbQ0VSZWFjdGlvbnMs
IEltcGxlbWVudGVkQXM9Y2xvc2VGb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
Y2xvc2UoKTsKLSAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQs
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHdyaXRlKERPTVN0cmluZy4uLiB0ZXh0KTsKLSAgICBb
Q0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHdyaXRlbG4oRE9NU3RyaW5nLi4uIHRleHQpOworICAgIFtDRVJlYWN0aW9ucywg
Q2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudCwgSW1wbGVtZW50ZWRBcz1vcGVuRm9yQmluZGlu
Z3NdIERvY3VtZW50IG9wZW4ob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidGV4dC9odG1sIiwg
b3B0aW9uYWwgRE9NU3RyaW5nIHJlcGxhY2UgPSAiIik7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvdywgSW1wbGVtZW50ZWRBcz1vcGVuRm9yQmluZGluZ3NdIERPTVdpbmRv
dyBvcGVuKFVTVlN0cmluZyB1cmwsIERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMp
OworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzXSB2b2lk
IGNsb3NlKCk7CisgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50
XSB2b2lkIHdyaXRlKERPTVN0cmluZy4uLiB0ZXh0KTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxX
aXRoPVJlc3BvbnNpYmxlRG9jdW1lbnRdIHZvaWQgd3JpdGVsbihET01TdHJpbmcuLi4gdGV4dCk7
CiAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3c/IGRlZmF1bHRWaWV3OwpAQCAtMTM4LDkgKzEzOCw5IEBAIHR5cGVkZWYgKAogICAgIERP
TVNlbGVjdGlvbj8gZ2V0U2VsZWN0aW9uKCk7CiAKICAgICAvLyBYUGF0aCBleHRlbnNpb25zICho
dHRwczovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtWFBhdGgveHBhdGguaHRtbCNYUGF0aEV2
YWx1YXRvcikuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBYUGF0aEV4cHJlc3Npb24gY3JlYXRl
RXhwcmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBv
cHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsgLy8gRklYTUU6IFVzaW5nICJ1bmRl
ZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgorICAgIFhQYXRoRXhw
cmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9uID0g
InVuZGVmaW5lZCIsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOyAvLyBGSVhN
RTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jvbmcu
CiAgICAgWFBhdGhOU1Jlc29sdmVyIGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZT8gbm9kZVJlc29sdmVy
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFs
IERPTVN0cmluZyBleHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIE5vZGU/IGNvbnRl
eHROb2RlLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLCBvcHRpb25hbCB1bnNp
Z25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsgLy8g
RklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdy
b25nLgorICAgIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNz
aW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIE5vZGU/IGNvbnRleHROb2RlLCBvcHRpb25hbCBY
UGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBlID0g
MCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsgLy8gRklYTUU6IFVzaW5nICJ1bmRl
ZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgogCiAgICAgLy8gRXh0
ZW5zaW9ucyBmcm9tIEZ1bGxTY3JlZW4gQVBJIChodHRwczovL2Z1bGxzY3JlZW4uc3BlYy53aGF0
d2cub3JnLyNhcGkpLgogICAgIC8vIEZJWE1FOiBTaG91bGQgcHJvYmFibHkgYmUgdW5wcmVmaXhl
ZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBA
QAogICAgIHNlcXVlbmNlPERPTVN0cmluZz4gZ2V0QXR0cmlidXRlTmFtZXMoKTsKICAgICBbRE9N
SklUPVJlYWRET01dIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lKTsKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3Ry
aW5nIHZhbHVlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgc2V0QXR0cmli
dXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOworICAgIFtDRVJl
YWN0aW9uc10gdm9pZCBzZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7CiAgICAgW0NFUmVhY3Rpb25z
XSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgW0NF
UmVhY3Rpb25zXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJ
LCBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZShET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSk7CkBAIC00OSwyMyArNDksMjMgQEAKIAogICAgIFtET01KSVQ9UmVh
ZERPTV0gQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAg
ICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9kZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBB
dHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0dHIgYXR0cik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0QXR0cmlidXRlTm9kZU5TKEF0dHIgYXR0cik7Ci0gICAg
W0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2Rl
KEF0dHIgYXR0cik7CisgICAgW0NFUmVhY3Rpb25zXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0
dHIgYXR0cik7CisgICAgW0NFUmVhY3Rpb25zXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0
ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRy
IGF0dHIpOwogCi0gICAgW0VuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9NLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gU2hhZG93Um9vdCBhdHRhY2hTaGFkb3coU2hhZG93Um9vdEluaXQgaW5pdCk7CisgICAg
W0VuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9NXSBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhTaGFk
b3dSb290SW5pdCBpbml0KTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET00sIEltcGxl
bWVudGVkQXM9c2hhZG93Um9vdEZvckJpbmRpbmdzLCBDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIFNoYWRvd1Jvb3Q/IHNoYWRvd1Jvb3Q7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEVsZW1lbnQ/IGNsb3Nlc3QoRE9NU3RyaW5nIHNlbGVjdG9ycyk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBib29sZWFuIG1hdGNoZXMoRE9NU3RyaW5nIHNlbGVjdG9ycyk7Ci0g
ICAgW0ltcGxlbWVudGVkQXM9bWF0Y2hlcywgTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gd2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOyAvLyBIaXN0b3JpY2FsIGFs
aWFzIG9mIC5tYXRjaGVzLgorICAgIEVsZW1lbnQ/IGNsb3Nlc3QoRE9NU3RyaW5nIHNlbGVjdG9y
cyk7CisgICAgYm9vbGVhbiBtYXRjaGVzKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtJbXBs
ZW1lbnRlZEFzPW1hdGNoZXNdIGJvb2xlYW4gd2Via2l0TWF0Y2hlc1NlbGVjdG9yKERPTVN0cmlu
ZyBzZWxlY3RvcnMpOyAvLyBIaXN0b3JpY2FsIGFsaWFzIG9mIC5tYXRjaGVzLgogCiAgICAgW0RP
TUpJVD1SZWFkRE9NXSBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZShET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05h
bWVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAgICAg
SFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShET01TdHJpbmcgbmFtZSk7CiAK
LSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBpbnNlcnRBZGph
Y2VudEVsZW1lbnQoRE9NU3RyaW5nIHdoZXJlLCBFbGVtZW50IGVsZW1lbnQpOyAvLyBIaXN0b3Jp
Y2FsLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnRBZGphY2VudFRleHQoRE9N
U3RyaW5nIHdoZXJlLCBET01TdHJpbmcgZGF0YSk7IC8vIEhpc3RvcmljYWwuCisgICAgW0NFUmVh
Y3Rpb25zXSBFbGVtZW50PyBpbnNlcnRBZGphY2VudEVsZW1lbnQoRE9NU3RyaW5nIHdoZXJlLCBF
bGVtZW50IGVsZW1lbnQpOyAvLyBIaXN0b3JpY2FsLgorICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRU
ZXh0KERPTVN0cmluZyB3aGVyZSwgRE9NU3RyaW5nIGRhdGEpOyAvLyBIaXN0b3JpY2FsLgogCiAg
ICAgLy8gQ1NTT00tdmlldyBleHRlbnNpb25zIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20tdmlldy8jZXh0ZW5zaW9uLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSkuCiAgICAgRE9NUmVj
dExpc3QgZ2V0Q2xpZW50UmVjdHMoKTsKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vRE9NLVBhcnNpbmcvI2V4dGVuc2lvbnMtdG8tdGhlLWVsZW1lbnQtaW50
ZXJmYWNlCiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgaW5uZXJIVE1MOwogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtU
cmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVySFRNTDsKLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydEFkamFjZW50SFRNTChET01TdHJp
bmcgcG9zaXRpb24sIERPTVN0cmluZyB0ZXh0KTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgaW5z
ZXJ0QWRqYWNlbnRIVE1MKERPTVN0cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOwogCiAg
ICAgLy8gRXh0ZW5zaW9ucyBmcm9tIEZ1bGwgU2NyZWVuIEFQSSAoaHR0cHM6Ly9mdWxsc2NyZWVu
LnNwZWMud2hhdHdnLm9yZy8jYXBpKS4KICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCB1bnBy
ZWZpeGVkIHZlcnNpb25zPwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiBdIGludGVyZmFjZSBFdmVudFRhcmdldCB7CiAg
ICAgW0ltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzXSB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/
IGNhbGxiYWNrLCBvcHRpb25hbCAoQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikg
b3B0aW9ucyA9IGZhbHNlKTsKICAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVy
Rm9yQmluZGluZ3NdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBET01T
dHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lcj8gY2FsbGJhY2ssIG9wdGlvbmFsIChFdmVudExpc3Rl
bmVyT3B0aW9ucyBvciBib29sZWFuKSBvcHRpb25zID0gZmFsc2UpOwotICAgIFtJbXBsZW1lbnRl
ZEFzPWRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7CisgICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hF
dmVudEZvckJpbmRpbmdzXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOwogfTsK
IAogZGljdGlvbmFyeSBFdmVudExpc3RlbmVyT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uT3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uT3IuaAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbk9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsOSBAQCBpbmxpbmUgRXhjZXB0
aW9uT3I8dm9pZD4gaXNvbGF0ZWRDb3B5KEV4CiAgICAgcmV0dXJuIHsgfTsKIH0KIAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNFeGNlcHRpb25PciA6IHB1YmxpYyBzdGQ6OmludGVn
cmFsX2NvbnN0YW50PGJvb2wsIFdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VD4sIEV4Y2Vw
dGlvbk9yPjo6dmFsdWU+IHsgfTsKKwogfQogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwK
IF0gaW50ZXJmYWNlIE1lc3NhZ2VQb3J0IDogRXZlbnRUYXJnZXQgewotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3Nh
Z2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBz
ZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2
b2lkIGNsb3NlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogICAgIExlZ2FjeVdpbmRv
d0FsaWFzPVdlYktpdE11dGF0aW9uT2JzZXJ2ZXIsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24K
IF0gaW50ZXJmYWNlIE11dGF0aW9uT2JzZXJ2ZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBvYnNlcnZlKE5vZGUgdGFyZ2V0LCBvcHRpb25hbCBNdXRhdGlvbk9ic2VydmVySW5pdCBv
cHRpb25zKTsKKyAgICB2b2lkIG9ic2VydmUoTm9kZSB0YXJnZXQsIG9wdGlvbmFsIE11dGF0aW9u
T2JzZXJ2ZXJJbml0IG9wdGlvbnMpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgIHNlcXVl
bmNlPE11dGF0aW9uUmVjb3JkPiB0YWtlUmVjb3JkcygpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTmFtZWROb2RlTWFwLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogICAg
IGdldHRlciBBdHRyPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIGdldHRlciBBdHRy
PyBnZXROYW1lZEl0ZW0oRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIEF0dHI/IGdldE5h
bWVkSXRlbU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsK
LSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXROYW1lZEl0ZW0o
QXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPXNldE5hbWVkSXRlbV0gQXR0cj8gc2V0TmFtZWRJdGVtTlMoQXR0ciBhdHRyKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZU5hbWVkSXRlbShE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gQXR0ciByZW1vdmVOYW1lZEl0ZW1OUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9N
U3RyaW5nIGxvY2FsTmFtZSk7CisgICAgW0NFUmVhY3Rpb25zXSBBdHRyPyBzZXROYW1lZEl0ZW0o
QXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9c2V0TmFtZWRJdGVt
XSBBdHRyPyBzZXROYW1lZEl0ZW1OUyhBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9uc10gQXR0
ciByZW1vdmVOYW1lZEl0ZW0oRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOworICAgIFtDRVJlYWN0
aW9uc10gQXR0ciByZW1vdmVOYW1lZEl0ZW1OUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9N
U3RyaW5nIGxvY2FsTmFtZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBACiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB0ZXh0
Q29udGVudDsKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgbm9ybWFsaXplKCk7CiAKLSAgICBbQ0VS
ZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9Y2xvbmVOb2RlRm9yQmluZGluZ3MsIE1heVRocm93RXhj
ZXB0aW9uLCBOZXdPYmplY3RdIE5vZGUgY2xvbmVOb2RlKG9wdGlvbmFsIGJvb2xlYW4gZGVlcCA9
IGZhbHNlKTsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9Y2xvbmVOb2RlRm9yQmlu
ZGluZ3MsIE5ld09iamVjdF0gTm9kZSBjbG9uZU5vZGUob3B0aW9uYWwgYm9vbGVhbiBkZWVwID0g
ZmFsc2UpOwogICAgIGJvb2xlYW4gaXNFcXVhbE5vZGUoTm9kZT8gb3RoZXIpOwogICAgIGJvb2xl
YW4gaXNTYW1lTm9kZShOb2RlPyBvdGhlcik7IC8vIEhpc3RvcmljYWwgYWxpYXMgb2YgPT09Lgog
CkBAIC03NywxMCArNzcsMTAgQEAKICAgICBET01TdHJpbmc/IGxvb2t1cE5hbWVzcGFjZVVSSShE
T01TdHJpbmc/IHByZWZpeCk7CiAgICAgYm9vbGVhbiBpc0RlZmF1bHROYW1lc3BhY2UoRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkkpOwogCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gTm9kZSBpbnNlcnRCZWZvcmUoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUsIE5vZGU/IGNoaWxk
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2RlIGFwcGVuZENoaWxk
KFtSZXR1cm5WYWx1ZV0gTm9kZSBub2RlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSBOb2RlIHJlcGxhY2VDaGlsZChOb2RlIG5vZGUsIFtSZXR1cm5WYWx1ZV0gTm9kZSBj
aGlsZCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSByZW1vdmVD
aGlsZChbUmV0dXJuVmFsdWVdIE5vZGUgY2hpbGQpOworICAgIFtDRVJlYWN0aW9uc10gTm9kZSBp
bnNlcnRCZWZvcmUoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUsIE5vZGU/IGNoaWxkKTsKKyAgICBb
Q0VSZWFjdGlvbnNdIE5vZGUgYXBwZW5kQ2hpbGQoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUpOwor
ICAgIFtDRVJlYWN0aW9uc10gTm9kZSByZXBsYWNlQ2hpbGQoTm9kZSBub2RlLCBbUmV0dXJuVmFs
dWVdIE5vZGUgY2hpbGQpOworICAgIFtDRVJlYWN0aW9uc10gTm9kZSByZW1vdmVDaGlsZChbUmV0
dXJuVmFsdWVdIE5vZGUgY2hpbGQpOwogfTsKIAogZGljdGlvbmFyeSBHZXRSb290Tm9kZU9wdGlv
bnMgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw4ICsyOSw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
d2hhdFRvU2hvdzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUZpbHRlcj8gZmlsdGVyOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBuZXh0Tm9kZSgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gTm9kZT8gcHJldmlvdXNOb2RlKCk7CisgICAgTm9kZT8gbmV4dE5vZGUoKTsK
KyAgICBOb2RlPyBwcmV2aW91c05vZGUoKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGxhc3RFbGVtZW50Q2hpbGQ7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAK
LSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBy
ZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBV
bnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3Ry
aW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB2b2lkIHByZXBl
bmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNj
b3BhYmxlXSB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gcXVlcnlTZWxlY3RvcihET01TdHJpbmcgc2Vs
ZWN0b3JzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gTm9kZUxpc3QgcXVl
cnlTZWxlY3RvckFsbChET01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBFbGVtZW50PyBxdWVyeVNl
bGVjdG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtOZXdPYmplY3RdIE5vZGVMaXN0IHF1
ZXJ5U2VsZWN0b3JBbGwoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzNSArMzEsMzUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBjb2xsYXBzZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgY29tbW9u
QW5jZXN0b3JDb250YWluZXI7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3Rh
cnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldEVuZChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3RhcnRCZWZvcmUoTm9kZSBub2RlKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlIG5vZGUpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRFbmRCZWZvcmUoTm9kZSBub2RlKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RW5kQWZ0ZXIoTm9kZSBub2RlKTsKKyAgICB2b2lkIHNl
dFN0YXJ0KE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHZvaWQgc2V0RW5k
KE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHZvaWQgc2V0U3RhcnRCZWZv
cmUoTm9kZSBub2RlKTsKKyAgICB2b2lkIHNldFN0YXJ0QWZ0ZXIoTm9kZSBub2RlKTsKKyAgICB2
b2lkIHNldEVuZEJlZm9yZShOb2RlIG5vZGUpOworICAgIHZvaWQgc2V0RW5kQWZ0ZXIoTm9kZSBu
b2RlKTsKICAgICB2b2lkIGNvbGxhcHNlKG9wdGlvbmFsIGJvb2xlYW4gdG9TdGFydCA9IGZhbHNl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2VsZWN0Tm9kZShOb2RlIG5vZGUpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZWxlY3ROb2RlQ29udGVudHMoTm9kZSBub2Rl
KTsKKyAgICB2b2lkIHNlbGVjdE5vZGUoTm9kZSBub2RlKTsKKyAgICB2b2lkIHNlbGVjdE5vZGVD
b250ZW50cyhOb2RlIG5vZGUpOwogCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBUlRfVE9f
U1RBUlQgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVJUX1RPX0VORCA9IDE7CiAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5EX1RPX0VORCA9IDI7CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgRU5EX1RPX1NUQVJUID0gMzsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxl
bWVudGVkQXM9Y29tcGFyZUJvdW5kYXJ5UG9pbnRzRm9yQmluZGluZ3NdIHNob3J0IGNvbXBhcmVC
b3VuZGFyeVBvaW50cyh1bnNpZ25lZCBzaG9ydCBob3csIFJhbmdlIHNvdXJjZVJhbmdlKTsKKyAg
ICBbSW1wbGVtZW50ZWRBcz1jb21wYXJlQm91bmRhcnlQb2ludHNGb3JCaW5kaW5nc10gc2hvcnQg
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHVuc2lnbmVkIHNob3J0IGhvdywgUmFuZ2Ugc291cmNlUmFu
Z2UpOwogCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVD
b250ZW50cygpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVj
dF0gRG9jdW1lbnRGcmFnbWVudCBleHRyYWN0Q29udGVudHMoKTsKLSAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50RnJhZ21lbnQgY2xvbmVDb250
ZW50cygpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0
Tm9kZShOb2RlIG5vZGUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc3Vycm91bmRDb250ZW50cyhOb2RlIG5ld1BhcmVudCk7CisgICAgW0NFUmVhY3Rpb25zXSB2
b2lkIGRlbGV0ZUNvbnRlbnRzKCk7CisgICAgW0NFUmVhY3Rpb25zLCBOZXdPYmplY3RdIERvY3Vt
ZW50RnJhZ21lbnQgZXh0cmFjdENvbnRlbnRzKCk7CisgICAgW0NFUmVhY3Rpb25zLCBOZXdPYmpl
Y3RdIERvY3VtZW50RnJhZ21lbnQgY2xvbmVDb250ZW50cygpOworICAgIFtDRVJlYWN0aW9uc10g
dm9pZCBpbnNlcnROb2RlKE5vZGUgbm9kZSk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHN1cnJv
dW5kQ29udGVudHMoTm9kZSBuZXdQYXJlbnQpOwogCiAgICAgW05ld09iamVjdF0gUmFuZ2UgY2xv
bmVSYW5nZSgpOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IGJvb2xlYW4gaXNQb2ludEluUmFuZ2UoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJlUG9pbnQoTm9kZSBub2RlLCB1
bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgYm9vbGVhbiBpc1BvaW50SW5SYW5nZShOb2RlIG5v
ZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBzaG9ydCBjb21wYXJlUG9pbnQoTm9kZSBu
b2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJv
b2xlYW4gaW50ZXJzZWN0c05vZGUoTm9kZSBub2RlKTsKKyAgICBib29sZWFuIGludGVyc2VjdHNO
b2RlKE5vZGUgbm9kZSk7CiAKICAgICBzdHJpbmdpZmllcjsKIApAQCAtNjgsMTMgKzY4LDEzIEBA
CiAgICAgW05ld09iamVjdF0gRE9NUmVjdCBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIAogICAg
IC8vIEV4dGVuc2lvbnMgZnJvbSBET01QYXJzaW5nIGFuZCBTZXJpYWxpemF0aW9uIHNwZWNpZmlj
YXRpb24gKGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10
aGUtcmFuZ2UtaW50ZXJmYWNlKS4KLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
LCBOZXdPYmplY3RdIERvY3VtZW50RnJhZ21lbnQgY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KERP
TVN0cmluZyBmcmFnbWVudCk7CisgICAgW0NFUmVhY3Rpb25zLCBOZXdPYmplY3RdIERvY3VtZW50
RnJhZ21lbnQgY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KERPTVN0cmluZyBmcmFnbWVudCk7CiAK
ICAgICAvLyBOb24gc3RhbmRhcmQuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGV4cGFu
ZChvcHRpb25hbCBET01TdHJpbmcgdW5pdCA9ICIiKTsKKyAgICB2b2lkIGV4cGFuZChvcHRpb25h
bCBET01TdHJpbmcgdW5pdCA9ICIiKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbGlrZWx5
IGRyb3AgdGhpcyBzaW5jZSBubyBvdGhlciBicm93c2VyIHN1cHBvcnRzIGl0LgotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gc2hvcnQgY29tcGFyZU5vZGUoTm9kZSBub2RlKTsKKyAgICBzaG9ydCBj
b21wYXJlTm9kZShOb2RlIG5vZGUpOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQkVG
T1JFID0gMDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBOT0RFX0FGVEVSID0gMTsKICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBOT0RFX0JFRk9SRV9BTkRfQUZURVIgPSAyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uc3RydWN0b3JDYWxs
V2l0aD1Eb2N1bWVudCwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgVGV4dCA6
IENoYXJhY3RlckRhdGEgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGV4dCBzcGxpdFRleHQo
dW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIFRleHQgc3BsaXRUZXh0KHVuc2lnbmVkIGxvbmcg
b2Zmc2V0KTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdob2xlVGV4dDsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNSArNDEsNSBAQCBkaWN0aW9uYXJ5IFRleHREZWNvZGVPcHRpb25zIHsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuY29kaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGZhdGFsOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlnbm9yZUJPTTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFVTVlN0cmluZyBkZWNvZGUob3B0aW9uYWwgQnVmZmVy
U291cmNlPyBpbnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CisgICAg
VVNWU3RyaW5nIGRlY29kZShvcHRpb25hbCBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBU
ZXh0RGVjb2RlT3B0aW9ucyBvcHRpb25zKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVdhbGtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxr
ZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMSBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBOb2RlRmlsdGVyPyBmaWx0ZXI7CiAgICAgYXR0cmlidXRlIE5vZGUgY3VycmVudE5v
ZGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IHBhcmVudE5vZGUoKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IGZpcnN0Q2hpbGQoKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIE5vZGU/IGxhc3RDaGlsZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8g
cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBuZXh0U2li
bGluZygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcHJldmlvdXNOb2RlKCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBuZXh0Tm9kZSgpOworICAgIE5vZGU/IHBhcmVu
dE5vZGUoKTsKKyAgICBOb2RlPyBmaXJzdENoaWxkKCk7CisgICAgTm9kZT8gbGFzdENoaWxkKCk7
CisgICAgTm9kZT8gcHJldmlvdXNTaWJsaW5nKCk7CisgICAgTm9kZT8gbmV4dFNpYmxpbmcoKTsK
KyAgICBOb2RlPyBwcmV2aW91c05vZGUoKTsKKyAgICBOb2RlPyBuZXh0Tm9kZSgpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTAgKzQzLDEwIEBACiAKICAgICAvLyBGSVhNRTogSW4gYWxsIGZvdXIgbWV0aG9kcyBm
b3VuZCBiZWxvdywgdGhlIGJsb2IgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAg
ICAgLy8gYXN5bmMgcmVhZCBtZXRob2RzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJl
YWRBc0FycmF5QnVmZmVyKEJsb2I/IGJsb2IpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCByZWFkQXNCaW5hcnlTdHJpbmcoQmxvYj8gYmxvYik7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHJlYWRBc1RleHQoQmxvYj8gYmxvYiwgb3B0aW9uYWwgRE9NU3RyaW5nIGVuY29kaW5n
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVhZEFzRGF0YVVSTChCbG9iPyBibG9i
KTsKKyAgICB2b2lkIHJlYWRBc0FycmF5QnVmZmVyKEJsb2I/IGJsb2IpOworICAgIHZvaWQgcmVh
ZEFzQmluYXJ5U3RyaW5nKEJsb2I/IGJsb2IpOworICAgIHZvaWQgcmVhZEFzVGV4dChCbG9iPyBi
bG9iLCBvcHRpb25hbCBET01TdHJpbmcgZW5jb2RpbmcpOworICAgIHZvaWQgcmVhZEFzRGF0YVVS
TChCbG9iPyBibG9iKTsKIAogICAgIHZvaWQgYWJvcnQoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw4ICszMyw4IEBACiAgICAgRXhwb3NlZD1Xb3JrZXIsCiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKIF0gaW50ZXJmYWNlIEZpbGVSZWFkZXJTeW5jIHsKLSAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIEFycmF5QnVmZmVyIHJlYWRB
c0FycmF5QnVmZmVyKEJsb2IgYmxvYik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVhZEFzQmluYXJ5U3RyaW5nKEJs
b2IgYmxvYik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgcmVhZEFzVGV4dChCbG9iIGJsb2IsIG9wdGlvbmFsIERPTVN0
cmluZyBlbmNvZGluZyA9ICIiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZWFkQXNEYXRhVVJMKEJsb2IgYmxvYik7
CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIEFycmF5QnVmZmVyIHJlYWRB
c0FycmF5QnVmZmVyKEJsb2IgYmxvYik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIERPTVN0cmluZyByZWFkQXNCaW5hcnlTdHJpbmcoQmxvYiBibG9iKTsKKyAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJlYWRBc1RleHQoQmxvYiBi
bG9iLCBvcHRpb25hbCBET01TdHJpbmcgZW5jb2RpbmcgPSAiIik7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIERPTVN0cmluZyByZWFkQXNEYXRhVVJMKEJsb2IgYmxvYik7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMSArMzAsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKICAgICBib29sZWFuIGNvbnRhaW5zKERPTVN0cmluZyB0b2tlbik7Ci0gICAgW0NFUmVh
Y3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoRE9NU3RyaW5nLi4uIHRva2Vucyk7
Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoRE9NU3Ry
aW5nLi4uIHRva2Vucyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9v
bGVhbiB0b2dnbGUoRE9NU3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2UoRE9NU3RyaW5n
IHRva2VuLCBET01TdHJpbmcgbmV3VG9rZW4pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9v
bGVhbiBzdXBwb3J0cyhET01TdHJpbmcgdG9rZW4pOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBh
ZGQoRE9NU3RyaW5nLi4uIHRva2Vucyk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZShE
T01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbQ0VSZWFjdGlvbnNdIGJvb2xlYW4gdG9nZ2xlKERP
TVN0cmluZyB0b2tlbiwgb3B0aW9uYWwgYm9vbGVhbiBmb3JjZSk7CisgICAgW0NFUmVhY3Rpb25z
XSB2b2lkIHJlcGxhY2UoRE9NU3RyaW5nIHRva2VuLCBET01TdHJpbmcgbmV3VG9rZW4pOworICAg
IGJvb2xlYW4gc3VwcG9ydHMoRE9NU3RyaW5nIHRva2VuKTsKICAgICBbQ0VSZWFjdGlvbnNdIHN0
cmluZ2lmaWVyIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAgICAgaXRlcmFibGU8RE9NU3Ry
aW5nPjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmlk
bAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQCB0eXBlZGVmICgKICAg
ICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBoZWlnaHQ7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0
aW9uXSBSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFu
eS4uLiBhcmd1bWVudHMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gUmVuZGVyaW5nQ29u
dGV4dD8gZ2V0Q29udGV4dChET01TdHJpbmcgY29udGV4dElkLCBhbnkuLi4gYXJndW1lbnRzKTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHRvRGF0YVVSTChvcHRpb25hbCBE
T01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1YWxpdHkpOwotICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0b0Jsb2IoQmxvYkNh
bGxiYWNrIGNhbGxiYWNrLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1
YWxpdHkpOworICAgIERPTVN0cmluZyB0b0RhdGFVUkwob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUs
IG9wdGlvbmFsIGFueSBxdWFsaXR5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gdm9pZCB0b0Jsb2IoQmxvYkNhbGxiYWNrIGNhbGxiYWNrLCBvcHRpb25hbCBET01TdHJp
bmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1YWxpdHkpOwogCi0gICAgW0NvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTSwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRp
b24sIE5ld09iamVjdF0gTWVkaWFTdHJlYW0gY2FwdHVyZVN0cmVhbShvcHRpb25hbCBkb3VibGUg
ZnJhbWVSZXF1ZXN0UmF0ZSk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTmV3T2JqZWN0XSBNZWRpYVN0cmVhbSBjYXB0dXJl
U3RyZWFtKG9wdGlvbmFsIGRvdWJsZSBmcmFtZVJlcXVlc3RSYXRlKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDUgKzI4LDUgQEAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBl
OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdpZHRoOwogCi0gICAgW0NoZWNr
U2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1l
bnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3VtZW50
KCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIGludGVyZmFjZSBIVE1MRnJhbWVF
bGVtZW50IDogSFRNTEVsZW1lbnQKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRoOwog
Ci0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQg
Z2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdl
dFNWR0RvY3VtZW50KCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBoZWlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDUg
KzM5LDUgQEAgaW50ZXJmYWNlIEhUTUxJRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbgogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBjb250ZW50V2luZG93OwogCi0gICAgW0NoZWNr
U2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1l
bnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3VtZW50
KCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4IEBACiAgICAgYXR0cmlidXRlIERhdGU/
IHZhbHVlQXNEYXRlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHZhbHVlQXNO
dW1iZXI7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RlcFVwKG9wdGlvbmFsIGxv
bmcgbiA9IDEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdGVwRG93bihvcHRpb25h
bCBsb25nIG4gPSAxKTsKKyAgICB2b2lkIHN0ZXBVcChvcHRpb25hbCBsb25nIG4gPSAxKTsKKyAg
ICB2b2lkIHN0ZXBEb3duKG9wdGlvbmFsIGxvbmcgbiA9IDEpOwogCiAgICAgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZh
bGlkYXRlOwpAQCAtODEsMTAgKzgxLDEwIEBACiAgICAgW0ltcGxlbWVudGVkQXM9c2VsZWN0aW9u
RW5kRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGlvbkVuZDsKICAgICBbSW1wbGVt
ZW50ZWRBcz1zZWxlY3Rpb25EaXJlY3Rpb25Gb3JCaW5kaW5nc10gYXR0cmlidXRlIERPTVN0cmlu
ZyBzZWxlY3Rpb25EaXJlY3Rpb247CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcg
c3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9k
ZSk7CisgICAgdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKKyAgICB2
b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3Rh
cnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7
CiAKLSAgICBbSW1wbGVtZW50ZWRBcz1zZXRTZWxlY3Rpb25SYW5nZUZvckJpbmRpbmdzLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShsb25nIHN0YXJ0LCBsb25nIGVu
ZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CisgICAgW0ltcGxlbWVudGVkQXM9c2V0
U2VsZWN0aW9uUmFuZ2VGb3JCaW5kaW5nc10gdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShsb25nIHN0
YXJ0LCBsb25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CiAKICAgICBbUmVm
bGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZyB1c2VNYXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB0eXBlZGVm
ICgKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBFbmFibGVkQXRSdW50aW1lPUVu
Y3J5cHRlZE1lZGlhQVBJXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ud2FpdGluZ2ZvcmtleTsK
ICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBFbmFibGVkQXRSdW50aW1lPUVuY3J5
cHRlZE1lZGlhQVBJXSBQcm9taXNlPHZvaWQ+IHNldE1lZGlhS2V5cyhNZWRpYUtleXM/IG1lZGlh
S2V5cyk7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIE1heVRocm93RXhjZXB0aW9u
XSBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKERPTVN0cmluZyBraW5kLCBvcHRpb25hbCBET01TdHJp
bmcgbGFiZWwgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGxhbmd1YWdlID0gIiIpOworICAgIFtD
b25kaXRpb25hbD1WSURFT19UUkFDS10gVGV4dFRyYWNrIGFkZFRleHRUcmFjayhET01TdHJpbmcg
a2luZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGxhYmVsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyBs
YW5ndWFnZSA9ICIiKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNrczsKICAgICBbQ29uZGl0aW9uYWw9VklE
RU9fVFJBQ0tdIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CiAg
ICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSByZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9UcmFj
a0xpc3QgdmlkZW9UcmFja3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDUgKzQ3LDUgQEAKIAogICAg
IFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRl
bnREb2N1bWVudDsKIAotICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRp
b25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CisgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2Rl
XSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNyBAQAogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIDog
SFRNTENvbGxlY3Rpb24gewogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwogICAgIFtDRVJlYWN0aW9uc10gc2V0dGVyIHZvaWQgKHVuc2lnbmVkIGxvbmcg
aW5kZXgsIEhUTUxPcHRpb25FbGVtZW50PyBvcHRpb24pOwotICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgYWRkKChIVE1MT3B0aW9uRWxlbWVudCBvciBIVE1MT3B0R3Jv
dXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9y
ZSA9IG51bGwpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBhZGQoKEhUTUxPcHRpb25FbGVtZW50
IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVudCBv
ciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZShs
b25nIGluZGV4KTsKIAogICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVkSW5kZXg7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDggQEAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBoYXMgdGhpcyByZXR1cm5pbmcg
RWxlbWVudD8uCiAgICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShET01TdHJpbmcgbmFt
ZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoKEhUTUxP
cHRpb25FbGVtZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChI
VE1MRWxlbWVudCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoKTsgLy8gQ2hpbGROb2RlIG92ZXJsb2FkCisg
ICAgW0NFUmVhY3Rpb25zXSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdy
b3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZv
cmUgPSBudWxsKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlKCk7IC8vIENoaWxkTm9k
ZSBvdmVybG9hZAogICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmUobG9uZyBpbmRleCk7CiAg
ICAgW0NFUmVhY3Rpb25zXSBzZXR0ZXIgdm9pZCAodW5zaWduZWQgbG9uZyBpbmRleCwgSFRNTE9w
dGlvbkVsZW1lbnQ/IG9wdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNiBAQCBpbnRl
cmZhY2UgSFRNTFRhYmxlRWxlbWVudCA6IEhUTUxFbGVtZW50CiAgICAgSFRNTEVsZW1lbnQgY3Jl
YXRlQ2FwdGlvbigpOwogICAgIFtDRVJlYWN0aW9uc10gdm9pZCBkZWxldGVDYXB0aW9uKCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBs
b25nIGluZGV4ID0gLTEpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgZGVsZXRlUm93KGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRp
b25hbCBsb25nIGluZGV4ID0gLTEpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBkZWxldGVSb3co
bG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dF
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw2IEBAIGlu
dGVyZmFjZSBIVE1MVGFibGVSb3dFbGVtZW50IDogSFRNTEVsZW0KICAgICBbUmVmbGVjdD1jaGFy
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtSZWZsZWN0PWNoYXJvZmZdIGF0dHJpYnV0
ZSBET01TdHJpbmcgY2hPZmY7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdkFs
aWduOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSFRNTEVsZW1lbnQgaW5zZXJ0Q2VsbChvcHRp
b25hbCBsb25nIGluZGV4ID0gLTEpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgZGVsZXRlQ2VsbChsb25nIGluZGV4KTsKKyAgICBIVE1MRWxlbWVudCBpbnNlcnRD
ZWxsKG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRl
bGV0ZUNlbGwobG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw2IEBACiAgICAgW1JlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0
cmluZyBjaE9mZjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB2QWxpZ247CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHJvd3M7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0x
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZVJvdyhs
b25nIGluZGV4KTsKKyAgICBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0aW9uYWwgbG9uZyBpbmRl
eCA9IC0xKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgZGVsZXRlUm93KGxvbmcgaW5kZXgpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBpbnRlcmZhY2UgSFRNTFRl
eHRBcmVhRWxlbWVudCA6IEhUTUxFbGVtCiAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0aW9uRW5k
OwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc2VsZWN0aW9uRGlyZWN0aW9uOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJl
cGxhY2VtZW50LCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgb3B0aW9u
YWwgRE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUpOworICAgIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0
cmluZyByZXBsYWNlbWVudCk7CisgICAgdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxh
Y2VtZW50LCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgb3B0aW9uYWwg
RE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUpOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShv
cHRpb25hbCBsb25nIHN0YXJ0ID0gMCwgb3B0aW9uYWwgbG9uZyBlbmQgPSAwLCBvcHRpb25hbCBE
T01TdHJpbmcgZGlyZWN0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTIgQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRTdXBwb3J0c0Z1bGxzY3JlZW47CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW47
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd2Via2l0RW50ZXJGdWxsc2NyZWVuKCk7
CisgICAgdm9pZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIHdlYmtpdEV4aXRG
dWxsc2NyZWVuKCk7CiAKICAgICAvLyBNYWludGFpbiAiRnVsbFNjcmVlbiIgY2FwaXRhbGl6YXRp
b24gc2NoZW1lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYwODEKLSAgICBbSW1wbGVtZW50ZWRBcz13
ZWJraXRFbnRlckZ1bGxzY3JlZW4sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHdlYmtpdEVudGVy
RnVsbFNjcmVlbigpOworICAgIFtJbXBsZW1lbnRlZEFzPXdlYmtpdEVudGVyRnVsbHNjcmVlbl0g
dm9pZCB3ZWJraXRFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBbSW1wbGVtZW50ZWRBcz13ZWJraXRF
eGl0RnVsbHNjcmVlbl0gdm9pZCB3ZWJraXRFeGl0RnVsbFNjcmVlbigpOwogCiAgICAgW0NvbmRp
dGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L09mZnNjcmVlbkNhbnZhcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL09mZnNjcmVlbkNhbnZhcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAg
ZW51bSBPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlwZQogICAgIGF0dHJpYnV0ZSBbRW5mb3Jj
ZVJhbmdlXSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdl
XSB1bnNpZ25lZCBsb25nIGhlaWdodDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5
VGhyb3dFeGNlcHRpb24sIENvbmRpdGlvbmFsPVdFQkdMXSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ/
IGdldENvbnRleHQoT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIGFu
eS4uLiBhcmd1bWVudHMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgQ29uZGl0aW9uYWw9
V0VCR0xdIFdlYkdMUmVuZGVyaW5nQ29udGV4dD8gZ2V0Q29udGV4dChPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgYW55Li4uIGFyZ3VtZW50cyk7CiAgICAgSW1hZ2VC
aXRtYXAgdHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7CiAgICAgLy8gUHJvbWlzZTxCbG9iPiBjb252
ZXJ0VG9CbG9iKG9wdGlvbmFsIEltYWdlRW5jb2RlT3B0aW9ucyBvcHRpb25zKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw2
IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFRpbWVSYW5n
ZXMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnQodW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZG91YmxlIGVu
ZCh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0KHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0RyYXdJbWFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzRHJhd0ltYWdlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiAgICAgLy8g
RklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91bGQg
YmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCiAKICAgICAvLyBkcmF3aW5nIGltYWdlcwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2Us
IHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHkpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2Us
IHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHksIHVucmVzdHJp
Y3RlZCBkb3VibGUgZHcsIHVucmVzdHJpY3RlZCBkb3VibGUgZGgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJp
Y3RlZCBkb3VibGUgc3gsIHVucmVzdHJpY3RlZCBkb3VibGUgc3ksIHVucmVzdHJpY3RlZCBkb3Vi
bGUgc3csIHVucmVzdHJpY3RlZCBkb3VibGUgc2gsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVu
cmVzdHJpY3RlZCBkb3VibGUgZHksIHVucmVzdHJpY3RlZCBkb3VibGUgZHcsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgZGgpOworICAgIHZvaWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdl
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5KTsKKyAgICB2
b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5y
ZXN0cmljdGVkIGRvdWJsZSBkaCk7CisgICAgdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3Vy
Y2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgc3gsIHVucmVzdHJpY3RlZCBkb3VibGUgc3ks
IHVucmVzdHJpY3RlZCBkb3VibGUgc3csIHVucmVzdHJpY3RlZCBkb3VibGUgc2gsIHVucmVzdHJp
Y3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHksIHVucmVzdHJpY3RlZCBkb3Vi
bGUgZHcsIHVucmVzdHJpY3RlZCBkb3VibGUgZGgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ry
b2tlU3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCB0eXBlZGVmIChI
VE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiAgICAgYXR0cmlidXRlIChET01TdHJpbmcg
b3IgQ2FudmFzR3JhZGllbnQgb3IgQ2FudmFzUGF0dGVybikgZmlsbFN0eWxlOyAvLyAoZGVmYXVs
dCBibGFjaykKIAogICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cg
c2hvdWxkIGJlIGRvdWJsZXMuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVu
dCBjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9h
dCB5MSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRp
YWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQg
eTEsIGZsb2F0IHIxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4/IGNy
ZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOworICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxp
bmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKKyAg
ICBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAs
IGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKKyAgICBDYW52YXNQYXR0
ZXJuPyBjcmVhdGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIERPTVN0cmluZyByZXBldGl0aW9uKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAKICAgICAvLyBGSVhNRTogVGhlIGZsb2F0IHBhcmFt
ZXRlcnMgYmVsb3cgc2hvdWxkIGJlIGEgZG91YmxlLgogCiAgICAgLy8gb3BhcXVlIG9iamVjdAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQgb2Zmc2V0LCBE
T01TdHJpbmcgY29sb3IpOworICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IG9mZnNldCwgRE9N
U3RyaW5nIGNvbG9yKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNJbWFnZURhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0ltYWdlRGF0YS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkg
KzMwLDkgQEAKICAgICAvLyBGSVhNRTogQWxsIHRoZSBmbG9hdCBhcmd1bWVudHMgYmVsb3cgc2hv
dWxkIGJlIGxvbmdzLgogCiAgICAgLy8gcGl4ZWwgbWFuaXB1bGF0aW9uCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKGZsb2F0IHN3LCBmbG9hdCBzaCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKEltYWdl
RGF0YT8gaW1hZ2VkYXRhKTsgLy8gRklYTUU6IGltYWdlZGF0YSBzaG91bGQgbm90IGJlIG9wdGlv
bmFsCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKGZsb2F0
IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRl
SW1hZ2VEYXRhKGZsb2F0IHN3LCBmbG9hdCBzaCk7CisgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdl
RGF0YShJbWFnZURhdGE/IGltYWdlZGF0YSk7IC8vIEZJWE1FOiBpbWFnZWRhdGEgc2hvdWxkIG5v
dCBiZSBvcHRpb25hbAorICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoZmxvYXQgc3gsIGZsb2F0
IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOwogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0
YSBpbWFnZWRhdGEsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhIGltYWdlZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkaXJ0eVgsIGZs
b2F0IGRpcnR5WSwgZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGlydHlIZWlnaHQpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDExIEBACiAgICAgdm9pZCBsaW5lVG8odW5yZXN0cmlj
dGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOwogICAgIHZvaWQgcXVhZHJhdGlj
Q3VydmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIGNweCwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcHks
IHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKICAgICB2b2lk
IGJlemllckN1cnZlVG8odW5yZXN0cmljdGVkIGRvdWJsZSBjcDF4LCB1bnJlc3RyaWN0ZWQgZG91
YmxlIGNwMXksIHVucmVzdHJpY3RlZCBkb3VibGUgY3AyeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBj
cDJ5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUgeDEsIHVu
cmVzdHJpY3RlZCBkb3VibGUgeTEsIHVucmVzdHJpY3RlZCBkb3VibGUgeDIsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgeTIsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzKTsKLSAgICAvLyBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5yZXN0cmljdGVkIGRvdWJs
ZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJh
ZGl1c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90YXRpb24pOworICAgIHZvaWQgYXJjVG8odW5y
ZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVk
IGRvdWJsZSB4MiwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSBy
YWRpdXMpOworICAgIC8vIHZvaWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5yZXN0
cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5yZXN0cmljdGVkIGRv
dWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHJhZGl1c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90YXRpb24pOwogICAgIHZvaWQgcmVjdCh1
bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmljdGVk
IGRvdWJsZSB3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBhcmModW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHks
IHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5n
bGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNs
b2Nrd2lzZSA9IGZhbHNlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZWxsaXBzZSh1
bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmljdGVk
IGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1ksIHVucmVzdHJpY3Rl
ZCBkb3VibGUgcm90YXRpb24sIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnRBbmdsZSwgdW5yZXN0
cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0g
ZmFsc2UpOworICAgIHZvaWQgYXJjKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVk
IGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1cywgdW5yZXN0cmljdGVkIGRvdWJs
ZSBzdGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29s
ZWFuIGFudGljbG9ja3dpc2UgPSBmYWxzZSk7CisgICAgdm9pZCBlbGxpcHNlKHVucmVzdHJpY3Rl
ZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJh
ZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSBy
b3RhdGlvbiwgdW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFuIGFudGljbG9ja3dpc2UgPSBmYWxzZSk7CiAK
ICAgICBbRW5hYmxlZEF0UnVudGltZT1JbnNwZWN0b3JBZGRpdGlvbnNdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBmbG9hdCBjdXJyZW50WDsKICAgICBbRW5hYmxlZEF0UnVudGltZT1JbnNwZWN0b3JBZGRp
dGlvbnNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBjdXJyZW50WTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUK
IF0gaW50ZXJmYWNlIENhbnZhc1BhdHRlcm4gewogICAgIC8vIG9wYXF1ZSBvYmplY3QKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJpeDJE
SW5pdCB0cmFuc2Zvcm0pOworICAgIHZvaWQgc2V0VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJp
eDJESW5pdCB0cmFuc2Zvcm0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQAogCiAgICAgLy8gTm9uLXN0
YW5kYXJkIGZ1bmN0aW9uYWxpdHkgKENhbnZhc0ltYWdlRGF0YSkuCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGZsb2F0IHdlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW87Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBJbWFnZURhdGEgd2Via2l0R2V0SW1hZ2VEYXRhSEQoZmxvYXQgc3gsIGZsb2F0
IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOworICAgIEltYWdlRGF0YSB3ZWJraXRHZXRJbWFnZURh
dGFIRChmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CiAgICAgdm9pZCB3
ZWJraXRQdXRJbWFnZURhdGFIRChJbWFnZURhdGEgaW1hZ2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQg
ZHkpOwogICAgIHZvaWQgd2Via2l0UHV0SW1hZ2VEYXRhSEQoSW1hZ2VEYXRhIGltYWdlZGF0YSwg
ZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkaXJ0eVgsIGZsb2F0IGRpcnR5WSwgZmxvYXQgZGly
dHlXaWR0aCwgZmxvYXQgZGlydHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDYgQEAKIAogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBnZXRUcmFu
c2Zvcm0oKTsKICAgICB2b2lkIHNldFRyYW5zZm9ybSh1bnJlc3RyaWN0ZWQgZmxvYXQgYSwgdW5y
ZXN0cmljdGVkIGZsb2F0IGIsIHVucmVzdHJpY3RlZCBmbG9hdCBjLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgZCwgdW5yZXN0cmljdGVkIGZsb2F0IGUsIHVucmVzdHJpY3RlZCBmbG9hdCBmKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJpeDJE
SW5pdCB0cmFuc2Zvcm0pOworICAgIHZvaWQgc2V0VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJp
eDJESW5pdCB0cmFuc2Zvcm0pOwogICAgIHZvaWQgcmVzZXRUcmFuc2Zvcm0oKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDYgQEAKIF0gaW50ZXJmYWNlIEltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhczsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0cmFuc2ZlckZyb21JbWFnZUJpdG1hcChJ
bWFnZUJpdG1hcD8gYml0bWFwKTsKKyAgICB2b2lkIHRyYW5zZmVyRnJvbUltYWdlQml0bWFwKElt
YWdlQml0bWFwPyBiaXRtYXApOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGF0aDJELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
YXRoMkQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9QYXRoMkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgRXhwb3Nl
ZD0oV2luZG93LFdvcmtlciksCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQKIF0gaW50
ZXJmYWNlIFBhdGgyRCB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZFBhdGgoUGF0
aDJEIHBhdGgsIG9wdGlvbmFsIERPTU1hdHJpeDJESW5pdCB0cmFuc2Zvcm0pOworICAgIHZvaWQg
YWRkUGF0aChQYXRoMkQgcGF0aCwgb3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7
CiB9OwogCiBQYXRoMkQgaW1wbGVtZW50cyBDYW52YXNQYXRoOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsMTAgKzM1MCwxMCBAQCB0eXBl
ZGVmIChJbWFnZURhdGEgb3IgSFRNTEltYWdlRWxlbWVudCBvCiAKICAgICAvLyBXZWJHTDEgbGVn
YWN5IGVudHJ5cG9pbnRzOgogICAgIHZvaWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZm
ZXJWaWV3PyBwaXhlbHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0ZXhJbWFnZTJE
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZT8gc291cmNlKTsKKyAgICB2b2lk
IHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2Up
OwogCiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldz8gcGl4ZWxzKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2UpOworICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3Vy
Y2UpOwogCiAgICAgLy8gV2ViR0wyIGVudHJ5cG9pbnRzOgogICAgIHZvaWQgdGV4SW1hZ2UyRChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludHB0ciBwYm9PZmZzZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZWRlZiAoSW1hZ2VEYXRh
IG9yIEhUTUxJbWFnZUVsZW1lbnQgbwogICAgIC8vIGNvbmZpY3RzIHdpdGggb3ZlcmxvYWRzIGlu
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQuCiAKICAgICB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEFycmF5QnVmZmVyVmlldz8gcGl4ZWxzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
dGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/IHNvdXJjZSk7
CisgICAgdm9pZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJj
ZT8gc291cmNlKTsKIAogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXc/
IHBpeGVscyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHRleFN1YkltYWdlMkQoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZT8gc291cmNlKTsKKyAgICB2
b2lkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNv
dXJjZT8gc291cmNlKTsKIAogICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEzIEBAIGVudW0gVGV4dFRyYWNrS2luZCB7ICJzdWJ0aXRs
ZXMiLCAiY2FwdGkKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrQ3VlTGlzdD8gY3Vl
czsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrQ3VlTGlzdD8gYWN0aXZlQ3VlczsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGRDdWUoVGV4dFRyYWNrQ3VlIGN1ZSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUgY3Vl
KTsKKyAgICB2b2lkIGFkZEN1ZShUZXh0VHJhY2tDdWUgY3VlKTsKKyAgICB2b2lkIHJlbW92ZUN1
ZShUZXh0VHJhY2tDdWUgY3VlKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jdWVj
aGFuZ2U7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVlRUUmVnaW9uTGlzdCByZWdpb25zOwog
ICAgIC8vIEZJWE1FOiByZWdpb24gcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgbnVsbGFibGUgaW4g
YWRkUmVnaW9uIGFuZCByZW1vdmVSZWdpb24uCiAgICAgdm9pZCBhZGRSZWdpb24oVlRUUmVnaW9u
PyByZWdpb24pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVSZWdpb24oVlRU
UmVnaW9uPyByZWdpb24pOworICAgIHZvaWQgcmVtb3ZlUmVnaW9uKFZUVFJlZ2lvbj8gcmVnaW9u
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDggKzM3LDggQEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBPQlNPTEVURSA9
IDU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHN0YXR1czsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB1cGRhdGUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc3dhcENhY2hlKCk7CisgICAgdm9pZCB1cGRhdGUoKTsKKyAgICB2b2lkIHN3YXBD
YWNoZSgpOwogICAgIHZvaWQgYWJvcnQoKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25jaGVja2luZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NSArMzIsNSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCiBdIGludGVyZmFjZSBDcnlwdG8gewogICAgIFtDb25kaXRpb25hbD1TVUJUTEVfQ1JZ
UFRPXSByZWFkb25seSBhdHRyaWJ1dGUgU3VidGxlQ3J5cHRvIHN1YnRsZTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIEFycmF5QnVmZmVyVmlldyBnZXRSYW5kb21WYWx1ZXMoW1JldHVyblZhbHVl
XSBBcnJheUJ1ZmZlclZpZXcgYXJyYXkpOworICAgIEFycmF5QnVmZmVyVmlldyBnZXRSYW5kb21W
YWx1ZXMoW1JldHVyblZhbHVlXSBBcnJheUJ1ZmZlclZpZXcgYXJyYXkpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTYg
KzQxLDE2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcmFuZ2VDb3Vu
dDsKIAogICAgIHZvaWQgY29sbGFwc2UoTm9kZT8gbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQgPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29sbGFwc2VUb0Vu
ZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjb2xsYXBzZVRvU3RhcnQoKTsKKyAg
ICB2b2lkIGNvbGxhcHNlVG9FbmQoKTsKKyAgICB2b2lkIGNvbGxhcHNlVG9TdGFydCgpOwogCiAg
ICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRlbGV0ZUZyb21Eb2N1bWVudCgpOwogICAgIGJvb2xlYW4g
Y29udGFpbnNOb2RlKE5vZGUgbm9kZSwgb3B0aW9uYWwgYm9vbGVhbiBhbGxvd1BhcnRpYWwgPSBm
YWxzZSk7CiAgICAgdm9pZCBzZWxlY3RBbGxDaGlsZHJlbihOb2RlIG5vZGUpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGV4dGVuZChOb2RlIG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdm9pZCBleHRlbmQoTm9kZSBub2RlLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5n
ZSBnZXRSYW5nZUF0KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFJhbmdlIGdldFJhbmdlQXQo
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdm9pZCByZW1vdmVBbGxSYW5nZXMoKTsKICAgICB2
b2lkIGFkZFJhbmdlKFJhbmdlIHJhbmdlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHR5cGVkZWYgVVNWU3RyaW5nIENT
U09NU3RyaW5nOwogICAgIGxvbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrIGNhbGxiYWNrKTsgLy8gRklYTUU6IFNob3VsZCByZXR1cm4gYW4gdW5z
aWduZWQgbG9uZy4KICAgICB2b2lkIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGxvbmcgaGFuZGxlKTsg
Ly8gRklYTUU6IGhhbmRsZSBzaG91bGQgYmUgYW4gdW5zaWduZWQgbG9uZy4KIAotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwgRm9y
d2FyZERlY2xhcmVJbkhlYWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2Uo
YW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9i
amVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlJkluY3VtYmVu
dFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lk
IHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25h
bCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAgICAgLy8gT2Jzb2xldGUgbWVt
YmVycywgc3RpbGwgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyNXaW5kb3ctcGFydGlhbCkuCiAgICAgdm9pZCBjYXB0dXJlRXZlbnRz
KCk7IC8vIE5vdCBpbXBsZW1lbnRlZC4gQWxzbyBub3QgaW4gbW9kZXJuIHN0YW5kYXJkcy4gRW1w
dHkgZnVuY3Rpb24gbWF5IGhlbHAgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb250ZW50LgpA
QCAtMTc5LDggKzE3OSw4IEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwogICAgIFdl
YktpdFBvaW50IHdlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKG9wdGlvbmFsIE5vZGU/
IG5vZGUgPSBudWxsLCBvcHRpb25hbCBXZWJLaXRQb2ludD8gcCA9IG51bGwpOwogCiAgICAgLy8g
SW50ZXJuYWwgb3BlcmF0aW9ucywgbm90IGV4cG9zZWQgdG8gdGhlIFdlYi4KLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIEVuYWJsZWRGb3JXb3JsZD1zaGFkb3dSb290SXNBbHdheXNPcGVuXSBOb2Rl
TGlzdCBjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUoTm9kZSBzY29wZSwgRE9NU3Ry
aW5nIHNlbGVjdG9ycyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBFbmFibGVkRm9yV29ybGQ9
c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gRWxlbWVudD8gbWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJl
ZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbRW5hYmxlZEZvcldvcmxk
PXNoYWRvd1Jvb3RJc0Fsd2F5c09wZW5dIE5vZGVMaXN0IGNvbGxlY3RNYXRjaGluZ0VsZW1lbnRz
SW5GbGF0VHJlZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbRW5hYmxl
ZEZvcldvcmxkPXNoYWRvd1Jvb3RJc0Fsd2F5c09wZW5dIEVsZW1lbnQ/IG1hdGNoaW5nRWxlbWVu
dEluRmxhdFRyZWUoTm9kZSBzY29wZSwgRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiAKICAgICAvLyBp
T1MgR2VzdHVyZSBBUEkgZXZlbnQgaGFuZGxlcnMuCiAgICAgW05vdEVudW1lcmFibGUsIENvbmRp
dGlvbmFsPUlPU19HRVNUVVJFX0VWRU5UU10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmdlc3R1
cmVjaGFuZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHJldmlzaW9uIDIyNTE0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDggKzM0LDggQEAKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFk
ZXJdIHZvaWQgZm9yd2FyZCgpOwogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xh
cmVJbkhlYWRlcl0gdm9pZCBnbyhvcHRpb25hbCBsb25nIGRpc3RhbmNlID0gMCk7CiAKLSAgICBb
Q3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwdXNoU3RhdGUoYW55IGRhdGEsIERPTVN0
cmluZyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKLSAgICBbQ3VzdG9t
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZXBsYWNlU3RhdGUoYW55IGRhdGEsIERPTVN0cmlu
ZyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKKyAgICBbQ3VzdG9tXSB2
b2lkIHB1c2hTdGF0ZShhbnkgZGF0YSwgRE9NU3RyaW5nIHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJp
bmc/IHVybCA9IG51bGwpOworICAgIFtDdXN0b21dIHZvaWQgcmVwbGFjZVN0YXRlKGFueSBkYXRh
LCBET01TdHJpbmcgdGl0bGUsIG9wdGlvbmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CiB9Owog
CiBlbnVtIFNjcm9sbFJlc3RvcmF0aW9uIHsgImF1dG8iLCAibWFudWFsIiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiBdIGlu
dGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJz
dFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5k
b3csIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIGFzc2ln
bihVU1ZTdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93
LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKICAg
ICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKICAg
ICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIHJl
bG9hZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDkgKzU1LDkgQEAgdHlwZWRlZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFt
cDsKICAgICBbRW5hYmxlZEF0UnVudGltZT1SZXNvdXJjZVRpbWluZ10gYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbnJlc291cmNldGltaW5nYnVmZmVyZnVsbDsKIAogICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby91c2VyLXRpbWluZy8KLSAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5n
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBtYXJrKERPTVN0cmluZyBtYXJrTmFtZSk7CisgICAg
W0VuYWJsZWRBdFJ1bnRpbWU9VXNlclRpbWluZ10gdm9pZCBtYXJrKERPTVN0cmluZyBtYXJrTmFt
ZSk7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9VXNlclRpbWluZ10gdm9pZCBjbGVhck1hcmtzKG9w
dGlvbmFsIERPTVN0cmluZyBtYXJrTmFtZSk7Ci0gICAgW0VuYWJsZWRBdFJ1bnRpbWU9VXNlclRp
bWluZywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgbWVhc3VyZShET01TdHJpbmcgbWVhc3VyZU5h
bWUsIG9wdGlvbmFsIERPTVN0cmluZyBzdGFydE1hcmssIG9wdGlvbmFsIERPTVN0cmluZyBlbmRN
YXJrKTsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2b2lkIG1lYXN1cmUoRE9N
U3RyaW5nIG1lYXN1cmVOYW1lLCBvcHRpb25hbCBET01TdHJpbmcgc3RhcnRNYXJrLCBvcHRpb25h
bCBET01TdHJpbmcgZW5kTWFyayk7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9VXNlclRpbWluZ10g
dm9pZCBjbGVhck1lYXN1cmVzKG9wdGlvbmFsIERPTVN0cmluZyBtZWFzdXJlTmFtZSk7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBFeHBvc2VkPShXaW5k
b3csV29ya2VyKSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2Ug
UGVyZm9ybWFuY2VPYnNlcnZlciB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIG9ic2Vy
dmUoUGVyZm9ybWFuY2VPYnNlcnZlckluaXQgb3B0aW9ucyk7CisgICAgdm9pZCBvYnNlcnZlKFBl
cmZvcm1hbmNlT2JzZXJ2ZXJJbml0IG9wdGlvbnMpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9u
YWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJTCiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIg
ewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgbWVzc2FnZSk7CisgICAgdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0
VmFsdWUgbWVzc2FnZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldv
cmtlckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dp
bmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxNSArNDAsMTUgQEAgdHlwZWRlZiAoQ2FudmFzSW1hZ2VTb3VyY2Ugb3IgQmxvYiBv
ciBJbQogCiAgICAgLy8gVGltZXJzCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgYSBU
aW1lckhhbmRsZXIgKGEuay5hLiAoRE9NU3RyaW5nIG9yIEZ1bmN0aW9uKSkgcmF0aGVyIHRoYW4g
YSBTY2hlZHVsZWRBY3Rpb24uCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gbG9uZyBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiBoYW5kbGVyLCBvcHRpb25h
bCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0U3RhdGVdIGxvbmcgc2V0VGltZW91dChTY2hlZHVsZWRBY3Rpb24gaGFuZGxlciwgb3B0aW9u
YWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55Li4uIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVhclRp
bWVvdXQob3B0aW9uYWwgbG9uZyBoYW5kbGUgPSAwKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdGFrZSBhIFRpbWVySGFuZGxlciAoYS5rLmEuIChET01TdHJpbmcgb3IgRnVuY3Rpb24pKSBy
YXRoZXIgdGhhbiBhIFNjaGVkdWxlZEFjdGlvbi4KLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUs
IE1heVRocm93RXhjZXB0aW9uXSBsb25nIHNldEludGVydmFsKFNjaGVkdWxlZEFjdGlvbiBoYW5k
bGVyLCBvcHRpb25hbCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGVdIGxvbmcgc2V0SW50ZXJ2YWwoU2NoZWR1bGVkQWN0aW9uIGhh
bmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOwogICAg
IHZvaWQgY2xlYXJJbnRlcnZhbChvcHRpb25hbCBsb25nIGhhbmRsZSA9IDApOwogCiAgICAgLy8g
QmFzZTY0IHV0aWxpdHkgbWV0aG9kcy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBhdG9iKERPTVN0cmluZyBzdHJpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIGJ0b2EoRE9NU3RyaW5nIHN0cmluZyk7CisgICAgRE9NU3RyaW5nIGF0b2IoRE9NU3RyaW5n
IHN0cmluZyk7CisgICAgRE9NU3RyaW5nIGJ0b2EoRE9NU3RyaW5nIHN0cmluZyk7CiAKICAgICAv
LyBTZWN1cmUgQ29udGV4dHMKICAgICBbRW5hYmxlZEF0UnVudGltZT1Jc1NlY3VyZUNvbnRleHRB
dHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzU2VjdXJlQ29udGV4dDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSAr
MzIsNSBAQAogICAgIGdldHRlciBET01TdHJpbmc/IGdldEl0ZW0oRE9NU3RyaW5nIGtleSk7CiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSBzZXR0ZXIgdm9pZCBzZXRJdGVtKERPTVN0cmluZyBrZXks
IERPTVN0cmluZyBkYXRhKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGRlbGV0ZXIgdm9pZCBy
ZW1vdmVJdGVtKERPTVN0cmluZyBrZXkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
bGVhcigpOworICAgIHZvaWQgY2xlYXIoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5nbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDYgQEAKIAogICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgdmFsdWVBc1N0cmluZzsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOworICAgIHZv
aWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0
cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgdm9pZCBjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIGludGVyZmFjZSBTVkdHcmFwaGljc0VsZW1lbnQgOiBTVkdFbGVt
ZW4KICAgICBbSW1wbGVtZW50ZWRBcz1nZXRTY3JlZW5DVE1Gb3JCaW5kaW5ncywgTmV3T2JqZWN0
XSBTVkdNYXRyaXggZ2V0U2NyZWVuQ1RNKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3Qg
aW4gdGhlIHNwZWNpZmljYXRpb24gYW5kIGhhcyBiZWVuIGRyb3BwZWQgYnkgQmxpbmsuCi0gICAg
W01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR01hdHJpeCBnZXRUcmFuc2Zvcm1Ub0Vs
ZW1lbnQob3B0aW9uYWwgU1ZHRWxlbWVudD8gZWxlbWVudCA9IG51bGwpOworICAgIFtOZXdPYmpl
Y3RdIFNWR01hdHJpeCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQob3B0aW9uYWwgU1ZHRWxlbWVudD8g
ZWxlbWVudCA9IG51bGwpOwogfTsKIAogU1ZHR3JhcGhpY3NFbGVtZW50IGltcGxlbWVudHMgU1ZH
VGVzdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDYgQEAgaW50ZXJmYWNlIFNWR0xlbmd0aCB7IAogICAgIGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzOwogICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgdmFsdWVBc1N0cmluZzsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOworICAgIHZv
aWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0
cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgdm9pZCBjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjks
MTEgQEAKIF0gaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgY2xlYXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR0xlbmd0aCBpbml0aWFs
aXplKFNWR0xlbmd0aCBpdGVtKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR0xlbmd0aCBn
ZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZH
TGVuZ3RoIGluc2VydEl0ZW1CZWZvcmUoU1ZHTGVuZ3RoIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIHJlcGxhY2VJdGVtKFNWR0xl
bmd0aCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR0xlbmd0aCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIGFwcGVuZEl0ZW0oU1ZHTGVuZ3RoIGl0ZW0pOworICAgIHZv
aWQgY2xlYXIoKTsKKyAgICBTVkdMZW5ndGggaW5pdGlhbGl6ZShTVkdMZW5ndGggaXRlbSk7Cisg
ICAgU1ZHTGVuZ3RoIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHTGVuZ3Ro
IGluc2VydEl0ZW1CZWZvcmUoU1ZHTGVuZ3RoIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFNWR0xlbmd0aCByZXBsYWNlSXRlbShTVkdMZW5ndGggaXRlbSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgU1ZHTGVuZ3RoIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgU1ZHTGVuZ3RoIGFwcGVuZEl0ZW0oU1ZHTGVuZ3RoIGl0ZW0pOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXRyaXguaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWF0cml4LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE1IEBACiAgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZTsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGRvdWJsZSBmOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggbXVsdGlw
bHkoU1ZHTWF0cml4IHNlY29uZE1hdHJpeCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdN
YXRyaXggaW52ZXJzZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHRyYW5z
bGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHNjYWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzY2Fs
ZUZhY3Rvcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggc2NhbGVOb25Vbmlm
b3JtKHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZhY3RvclgsIHVucmVzdHJpY3RlZCBmbG9hdCBz
Y2FsZUZhY3RvclkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHJvdGF0ZSh1
bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0
cml4IHJvdGF0ZUZyb21WZWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBm
bG9hdCB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBmbGlwWCgpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IGZsaXBZKCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBTVkdNYXRyaXggc2tld1godW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBza2V3WSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5n
bGUpOworICAgIFNWR01hdHJpeCBtdWx0aXBseShTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKKyAg
ICBTVkdNYXRyaXggaW52ZXJzZSgpOworICAgIFNWR01hdHJpeCB0cmFuc2xhdGUodW5yZXN0cmlj
dGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKKyAgICBTVkdNYXRyaXggc2NhbGUo
dW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yKTsKKyAgICBTVkdNYXRyaXggc2NhbGVOb25V
bmlmb3JtKHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZhY3RvclgsIHVucmVzdHJpY3RlZCBmbG9h
dCBzY2FsZUZhY3RvclkpOworICAgIFNWR01hdHJpeCByb3RhdGUodW5yZXN0cmljdGVkIGZsb2F0
IGFuZ2xlKTsKKyAgICBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3Rvcih1bnJlc3RyaWN0ZWQgZmxv
YXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworICAgIFNWR01hdHJpeCBmbGlwWCgpOworICAg
IFNWR01hdHJpeCBmbGlwWSgpOworICAgIFNWR01hdHJpeCBza2V3WCh1bnJlc3RyaWN0ZWQgZmxv
YXQgYW5nbGUpOworICAgIFNWR01hdHJpeCBza2V3WSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTEgKzI3LDExIEBACiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U1ZHTnVtYmVyIGluaXRpYWxpemUoU1ZHTnVtYmVyIGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU1ZHTnVtYmVyIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgaW5zZXJ0SXRlbUJlZm9yZShTVkdOdW1iZXIgaXRlbSwg
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIg
cmVwbGFjZUl0ZW0oU1ZHTnVtYmVyIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTnVtYmVyIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgYXBwZW5kSXRlbShTVkdOdW1i
ZXIgaXRlbSk7CisgICAgdm9pZCBjbGVhcigpOworICAgIFNWR051bWJlciBpbml0aWFsaXplKFNW
R051bWJlciBpdGVtKTsKKyAgICBTVkdOdW1iZXIgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdOdW1iZXIgaW5zZXJ0SXRlbUJlZm9yZShTVkdOdW1iZXIgaXRlbSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHTnVtYmVyIHJlcGxhY2VJdGVtKFNWR051bWJlciBpdGVt
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgcmVtb3ZlSXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgYXBwZW5kSXRlbShTVkdOdW1iZXIgaXRlbSk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxMSArMjcsMTEgQEAKIGludGVyZmFjZSBTVkdQYXRoU2VnTGlzdCB7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU1ZHUGF0aFNlZyBpbml0aWFsaXplKFNWR1BhdGhTZWcgbmV3SXRlbSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIGluc2VydEl0ZW1CZWZvcmUoU1ZHUGF0
aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFNWR1BhdGhTZWcgcmVwbGFjZUl0ZW0oU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgcmVtb3ZlSXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhT
ZWcgYXBwZW5kSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0pOworICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICBTVkdQYXRoU2VnIGluaXRpYWxpemUoU1ZHUGF0aFNlZyBuZXdJdGVtKTsKKyAgICBTVkdQYXRo
U2VnIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUGF0aFNlZyBpbnNlcnRJ
dGVtQmVmb3JlKFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
U1ZHUGF0aFNlZyByZXBsYWNlSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgIFNWR1BhdGhTZWcgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICBTVkdQYXRoU2VnIGFwcGVuZEl0ZW0oU1ZHUGF0aFNlZyBuZXdJdGVtKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2ludC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDYgQEAKICAg
ICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHg7CiAgICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCB5OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR1Bv
aW50IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXggbWF0cml4KTsKKyAgICBbTmV3T2JqZWN0XSBT
VkdQb2ludCBtYXRyaXhUcmFuc2Zvcm0oU1ZHTWF0cml4IG1hdHJpeCk7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsy
NiwxMSBAQAogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgaW5pdGlhbGl6
ZShTVkdQb2ludCBpdGVtKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50IGdldEl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2lu
dCBpbnNlcnRJdGVtQmVmb3JlKFNWR1BvaW50IGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgcmVwbGFjZUl0ZW0oU1ZHUG9pbnQgaXRl
bSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2lu
dCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU1ZHUG9pbnQgYXBwZW5kSXRlbShTVkdQb2ludCBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7
CisgICAgU1ZHUG9pbnQgaW5pdGlhbGl6ZShTVkdQb2ludCBpdGVtKTsKKyAgICBTVkdQb2ludCBn
ZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1BvaW50IGluc2VydEl0ZW1CZWZv
cmUoU1ZHUG9pbnQgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9pbnQgcmVw
bGFjZUl0ZW0oU1ZHUG9pbnQgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9p
bnQgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQb2ludCBhcHBlbmRJ
dGVtKFNWR1BvaW50IGl0ZW0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJp
bmdMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlz
dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdM
aXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDExIEBACiBpbnRlcmZhY2UgU1ZH
U3RyaW5nTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZJdGVtczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhcigpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGluaXRpYWxpemUoRE9NU3RyaW5nIGl0ZW0pOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldEl0ZW0odW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5zZXJ0SXRlbUJlZm9y
ZShET01TdHJpbmcgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBET01TdHJpbmcgcmVwbGFjZUl0ZW0oRE9NU3RyaW5nIGl0ZW0sIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92ZUl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcg
YXBwZW5kSXRlbShET01TdHJpbmcgaXRlbSk7CisgICAgdm9pZCBjbGVhcigpOworICAgIERPTVN0
cmluZyBpbml0aWFsaXplKERPTVN0cmluZyBpdGVtKTsKKyAgICBET01TdHJpbmcgZ2V0SXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcgaW5zZXJ0SXRlbUJlZm9yZShET01T
dHJpbmcgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgRE9NU3RyaW5nIHJlcGxhY2VJ
dGVtKERPTVN0cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcg
cmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcgYXBwZW5kSXRl
bShET01TdHJpbmcgaXRlbSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRDb250ZW50RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyAr
MzQsMTMgQEAgaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCA6IFNWR0dyYQogCiAgICAg
bG9uZyBnZXROdW1iZXJPZkNoYXJzKCk7CiAgICAgdW5yZXN0cmljdGVkIGZsb2F0IGdldENvbXB1
dGVkVGV4dExlbmd0aCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZs
b2F0IGdldFN1YlN0cmluZ0xlbmd0aChvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAs
IG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uLCBOZXdPYmplY3RdIFNWR1BvaW50IGdldFN0YXJ0UG9zaXRpb25PZkNoYXIob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09i
amVjdF0gU1ZHUG9pbnQgZ2V0RW5kUG9zaXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQgPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUmVj
dCBnZXRFeHRlbnRPZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRSb3RhdGlvbk9mQ2hh
cihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIHVucmVzdHJpY3RlZCBm
bG9hdCBnZXRTdWJTdHJpbmdMZW5ndGgob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAw
LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxlbmd0aCA9IDApOworICAgIFtOZXdPYmplY3RdIFNW
R1BvaW50IGdldFN0YXJ0UG9zaXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZz
ZXQgPSAwKTsKKyAgICBbTmV3T2JqZWN0XSBTVkdQb2ludCBnZXRFbmRQb3NpdGlvbk9mQ2hhcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1Jl
Y3QgZ2V0RXh0ZW50T2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7Cisg
ICAgdW5yZXN0cmljdGVkIGZsb2F0IGdldFJvdGF0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0ID0gMCk7CiAgICAgbG9uZyBnZXRDaGFyTnVtQXRQb3NpdGlvbihTVkdQb2lu
dCBwb2ludCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbGVjdFN1YlN0cmluZyhv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoID0gMCk7CisgICAgdm9pZCBzZWxlY3RTdWJTdHJpbmcob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvZmZzZXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxlbmd0aCA9IDApOwogfTsK
IAogLy8gRklYTUU6IFNWR1RleHRDb250ZW50RWxlbWVudCBpcyBub3Qgc3VwcG9zZWQgdG8gaW1w
bGVtZW50IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMSBAQAogICAg
IFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdNYXRyaXggbWF0cml4OwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGU7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4KFNWR01hdHJpeCBtYXRyaXgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2xhdGUodW5yZXN0cmljdGVkIGZsb2F0IHR4LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgdHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRT
Y2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJpY3RlZCBmbG9hdCBzeSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFJvdGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5n
bGUsIHVucmVzdHJpY3RlZCBmbG9hdCBjeCwgdW5yZXN0cmljdGVkIGZsb2F0IGN5KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2tld1godW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2tld1kodW5yZXN0cmljdGVkIGZs
b2F0IGFuZ2xlKTsKKyAgICB2b2lkIHNldE1hdHJpeChTVkdNYXRyaXggbWF0cml4KTsKKyAgICB2
b2lkIHNldFRyYW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgdHgsIHVucmVzdHJpY3RlZCBmbG9h
dCB0eSk7CisgICAgdm9pZCBzZXRTY2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJp
Y3RlZCBmbG9hdCBzeSk7CisgICAgdm9pZCBzZXRSb3RhdGUodW5yZXN0cmljdGVkIGZsb2F0IGFu
Z2xlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3gsIHVucmVzdHJpY3RlZCBmbG9hdCBjeSk7CisgICAg
dm9pZCBzZXRTa2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOworICAgIHZvaWQgc2V0U2tl
d1kodW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtTGlzdC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3
LDE0IEBACiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHVHJhbnNmb3JtIGlu
aXRpYWxpemUoU1ZHVHJhbnNmb3JtIGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZH
VHJhbnNmb3JtIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBTVkdUcmFuc2Zvcm0gaW5zZXJ0SXRlbUJlZm9yZShTVkdUcmFuc2Zvcm0gaXRlbSwg
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zv
cm0gcmVwbGFjZUl0ZW0oU1ZHVHJhbnNmb3JtIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHVHJhbnNmb3JtIHJlbW92ZUl0ZW0odW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gYXBwZW5k
SXRlbShTVkdUcmFuc2Zvcm0gaXRlbSk7CisgICAgdm9pZCBjbGVhcigpOworICAgIFNWR1RyYW5z
Zm9ybSBpbml0aWFsaXplKFNWR1RyYW5zZm9ybSBpdGVtKTsKKyAgICBTVkdUcmFuc2Zvcm0gZ2V0
SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdUcmFuc2Zvcm0gaW5zZXJ0SXRlbUJl
Zm9yZShTVkdUcmFuc2Zvcm0gaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHVHJh
bnNmb3JtIHJlcGxhY2VJdGVtKFNWR1RyYW5zZm9ybSBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdUcmFuc2Zvcm0gcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBTVkdUcmFuc2Zvcm0gYXBwZW5kSXRlbShTVkdUcmFuc2Zvcm0gaXRlbSk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9y
bUZyb21NYXRyaXgoU1ZHTWF0cml4IG1hdHJpeCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBO
ZXdPYmplY3RdIFNWR1RyYW5zZm9ybSBjb25zb2xpZGF0ZSgpOworICAgIFtOZXdPYmplY3RdIFNW
R1RyYW5zZm9ybSBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCBtYXRyaXgp
OworICAgIFtOZXdPYmplY3RdIFNWR1RyYW5zZm9ybSBjb25zb2xpZGF0ZSgpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNTggKzMzLDU4IEBAIGVudW0gRm9udExvYWRUaW1pbmdPdmVy
cmlkZSB7ICJCbG9jayIsICIKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBFeHBvcnRN
YWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIEludGVybmFsU2V0
dGluZ3MgOiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsK
KyAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7
CiAKICAgICAvLyBGb250cywgdGV4dAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNlcmlmRm9udEZhbWlseShET01TdHJpbmcg
ZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0U2Fuc1NlcmlmRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rml4ZWRGb250RmFtaWx5KERPTVN0
cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRDdXJzaXZlRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2Ny
aXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHko
RE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGb250RmFsbGJh
Y2tQcmVmZXJzUGljdG9ncmFwaHMoYm9vbGVhbiBwcmVmZXJQaWN0b2dyYXBocyk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUoRm9udExvYWRU
aW1pbmdPdmVycmlkZSBvdmVycmlkZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dFNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoYm9vbGVhbiBpZ25vcmUpOworICAgIHZv
aWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3Jp
cHQpOworICAgIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShET01TdHJpbmcg
ZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKKyAgICB2b2lkIHNldEZpeGVkRm9udEZhbWlseShE
T01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKKyAgICB2b2lkIHNldEN1cnNpdmVG
b250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQg
c2V0RmFudGFzeUZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7
CisgICAgdm9pZCBzZXRQaWN0b2dyYXBoRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01T
dHJpbmcgc2NyaXB0KTsKKyAgICB2b2lkIHNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBo
cyhib29sZWFuIHByZWZlclBpY3RvZ3JhcGhzKTsKKyAgICB2b2lkIHNldEZvbnRMb2FkVGltaW5n
T3ZlcnJpZGUoRm9udExvYWRUaW1pbmdPdmVycmlkZSBvdmVycmlkZSk7CisgICAgdm9pZCBzZXRT
aG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zKGJvb2xlYW4gaWdub3JlKTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQoYm9vbGVhbiBl
bmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdX
aW5kb3dTaXplT3ZlcnJpZGUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgc2V0
VGV4dEF1dG9zaXppbmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRUZXh0
QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZShsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAK
ICAgICAvLyBNZWRpYQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRDYW5TdGFydE1l
ZGlhKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKERPTVN0cmluZyBr
aW5kLCBib29sZWFuIGVuYWJsZWQpOwotICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5
VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gc2hvdWxkRGlzcGxheVRyYWNrS2luZChET01TdHJpbmcg
dHJhY2tLaW5kKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RGVmYXVsdFZpZGVv
UG9zdGVyVVJMKERPTVN0cmluZyBwb3N0ZXIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyh1bnJlc3Ry
aWN0ZWQgZG91YmxlIHRpbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNZWRp
YVR5cGVPdmVycmlkZShET01TdHJpbmcgbWVkaWFUeXBlT3ZlcnJpZGUpOworICAgIHZvaWQgc2V0
Q2FuU3RhcnRNZWRpYShib29sZWFuIGVuYWJsZWQpOworICAgIFtDb25kaXRpb25hbD1WSURFT19U
UkFDS10gdm9pZCBzZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKERPTVN0cmluZyBraW5kLCBib29s
ZWFuIGVuYWJsZWQpOworICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gYm9vbGVhbiBzaG91
bGREaXNwbGF5VHJhY2tLaW5kKERPTVN0cmluZyB0cmFja0tpbmQpOworICAgIHZvaWQgc2V0RGVm
YXVsdFZpZGVvUG9zdGVyVVJMKERPTVN0cmluZyBwb3N0ZXIpOworICAgIHZvaWQgc2V0VGltZVdp
dGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHModW5yZXN0cmljdGVkIGRvdWJs
ZSB0aW1lKTsKKyAgICB2b2lkIHNldE1lZGlhVHlwZU92ZXJyaWRlKERPTVN0cmluZyBtZWRpYVR5
cGVPdmVycmlkZSk7CiAgICAgdm9pZCBzZXRBbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFjayhi
b29sZWFuIGF2YWlsYWJsZSk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9u
KGJvb2xlYW4gZW5hYmxlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIHNl
dE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihib29sZWFuIGVuYWJsZSk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3ko
Ym9vbGVhbiBmb3JjZWQpOworICAgIHZvaWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9v
bGVhbiBmb3JjZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRZb3VUdWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNldFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0WW91VHViZUZsYXNoUGx1Z2lu
UmVwbGFjZW1lbnRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKICAgICAvLyBFZGl0aW5nLCBm
b3JtcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRE9N
U3RyaW5nIGJlaGF2aW9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2hvdWxk
Q29udmVydFBvc2l0aW9uU3R5bGVPbkNvcHkoYm9vbGVhbiBjb252ZXJ0UG9zaXRpb24pOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyhib29s
ZWFuIHByZWZlck1pbWVUeXBlRm9ySW1hZ2UpOworICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9y
KERPTVN0cmluZyBiZWhhdmlvcik7CisgICAgdm9pZCBzZXRTaG91bGRDb252ZXJ0UG9zaXRpb25T
dHlsZU9uQ29weShib29sZWFuIGNvbnZlcnRQb3NpdGlvbik7CisgICAgdm9pZCBzZXRQcmVmZXJN
SU1FVHlwZUZvckltYWdlcyhib29sZWFuIHByZWZlck1pbWVUeXBlRm9ySW1hZ2UpOwogCiAgICAg
Ly8gT3RoZXIgc3dpdGNoZXMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3RvcmFn
ZUJsb2NraW5nUG9saWN5KERPTVN0cmluZyBwb2xpY3kpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldFBERkltYWdlQ2FjaGluZ1BvbGljeShET01TdHJpbmcgcG9saWN5
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VXNlTGVnYWN5QmFja2dyb3VuZFNp
emVTaG9ydGhhbmRCZWhhdmlvcihib29sZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBzZXRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3BFbmFibGVkKGJvb2xlYW4gZW5h
YmxlZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEJhY2tncm91bmRTaG91bGRF
eHRlbmRCZXlvbmRQYWdlKGJvb2xlYW4gaGFzRXh0ZW5kZWRCYWNrZ3JvdW5kKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVzKGJvb2xl
YW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEFsbG93VW5jbGFt
cGVkU2Nyb2xsUG9zaXRpb24oYm9vbGVhbiBhbGxvd1VuY2xhbXBlZCk7Ci0KLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwodW5yZXN0cmljdGVkIGRv
dWJsZSBpbnRlcnZhbEluU2Vjb25kcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dEFsbG93c0lubGluZU1lZGlhUGxheWJhY2soYm9vbGVhbiBhbGxvd3MpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2Ny
ZWVuKGJvb2xlYW4gYWxsb3dzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0SW5s
aW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUoYm9vbGVhbiByZXF1
aXJlcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZyYW1lRmxhdHRlbmluZyhG
cmFtZUZsYXR0ZW5pbmdWYWx1ZSBmcmFtZUZsYXR0ZW5pbmcpOworICAgIHZvaWQgc2V0U3RvcmFn
ZUJsb2NraW5nUG9saWN5KERPTVN0cmluZyBwb2xpY3kpOworICAgIHZvaWQgc2V0SW1hZ2VzRW5h
YmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5
KERPTVN0cmluZyBwb2xpY3kpOworICAgIHZvaWQgc2V0VXNlTGVnYWN5QmFja2dyb3VuZFNpemVT
aG9ydGhhbmRCZWhhdmlvcihib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0QXV0b3Njcm9s
bEZvckRyYWdBbmREcm9wRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0QmFj
a2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoYm9vbGVhbiBoYXNFeHRlbmRlZEJhY2tncm91
bmQpOworICAgIHZvaWQgc2V0U2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVzKGJvb2xlYW4gZW5h
YmxlZCk7CisgICAgdm9pZCBzZXRBbGxvd1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9uKGJvb2xlYW4g
YWxsb3dVbmNsYW1wZWQpOworCisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh1bnJl
c3RyaWN0ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsKKyAgICB2b2lkIHNldEFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2soYm9vbGVhbiBhbGxvd3MpOworICAgIHZvaWQgc2V0QWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbihib29sZWFuIGFsbG93cyk7CisgICAgdm9p
ZCBzZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZShib29s
ZWFuIHJlcXVpcmVzKTsKKyAgICB2b2lkIHNldEZyYW1lRmxhdHRlbmluZyhGcmFtZUZsYXR0ZW5p
bmdWYWx1ZSBmcmFtZUZsYXR0ZW5pbmcpOwogCiAgICAgLy8gUnVudGltZUVuYWJsZWRGZWF0dXJl
cy4KICAgICB2b2lkIHNldEluZGV4ZWREQldvcmtlcnNFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7
CkBAIC05MywyMSArOTMsMjEgQEAgZW51bSBGb250TG9hZFRpbWluZ092ZXJyaWRlIHsgIkJsb2Nr
IiwgIgogICAgIHZvaWQgc2V0V2ViR1BVRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIHZv
aWQgc2V0V2ViVlJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koRE9N
U3RyaW5nIHBvbGljeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc3lzdGVt
TGF5b3V0RGlyZWN0aW9uKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFN5c3Rl
bUxheW91dERpcmVjdGlvbihET01TdHJpbmcgZGlyZWN0aW9uKTsKKyAgICBET01TdHJpbmcgdXNl
ckludGVyZmFjZURpcmVjdGlvblBvbGljeSgpOworICAgIHZvaWQgc2V0VXNlckludGVyZmFjZURp
cmVjdGlvblBvbGljeShET01TdHJpbmcgcG9saWN5KTsKKyAgICBET01TdHJpbmcgc3lzdGVtTGF5
b3V0RGlyZWN0aW9uKCk7CisgICAgdm9pZCBzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oRE9NU3Ry
aW5nIGRpcmVjdGlvbik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gZGVmZXJy
ZWRDU1NQYXJzZXJFbmFibGVkKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldERl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIGJvb2xlYW4gZGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkKCk7CisgICAgdm9pZCBzZXREZWZlcnJlZENTU1BhcnNlckVu
YWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KGJvb2xlYW4gc2hvdWxk
TW9jayk7CisgICAgdm9pZCBzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmls
aXR5KGJvb2xlYW4gc2hvdWxkTW9jayk7CiAKICAgICBhdHRyaWJ1dGUgRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlIGZvcmNlZENvbG9yc0FyZUludmVydGVkQWNjZXNzaWJpbGl0eVZhbHVlOwogICAg
IGF0dHJpYnV0ZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkRGlzcGxheUlzTW9ub2No
cm9tZUFjY2Vzc2liaWxpdHlWYWx1ZTsKICAgICBhdHRyaWJ1dGUgRm9yY2VkQWNjZXNzaWJpbGl0
eVZhbHVlIGZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNzaWJpbGl0eVZhbHVlOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNh
dGVnb3J5KGJvb2xlYW4gc2hvdWxkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBz
ZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeShib29sZWFuIHNob3VsZCk7CisgICAg
dm9pZCBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtOTcsNyArOTcsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBi
b29sZWFuIGlzUGFpbnRpbmdGcmVxdWVudGx5KEVsZW1lbnQgZWxlbWVudCk7CiAgICAgdm9pZCBp
bmNyZW1lbnRGcmVxdWVudFBhaW50Q291bnRlcihFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVu
dCBlbGVtZW50KTsKKyAgICBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVu
dCBlbGVtZW50KTsKICAgICBib29sZWFuIGlzUHJlbG9hZGVkKERPTVN0cmluZyB1cmwpOwogICAg
IGJvb2xlYW4gaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKERPTVN0cmluZyB1cmwpOwogICAgIERP
TVN0cmluZyBmZXRjaFJlc3BvbnNlU291cmNlKEZldGNoUmVzcG9uc2UgcmVzcG9uc2UpOwpAQCAt
MTI1LDkzICsxMjUsOTMgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgbG9u
ZyBkZWZlcnJlZEdyb3VwUnVsZXNDb3VudChTdHlsZVNoZWV0IHNoZWV0KTsKICAgICBsb25nIGRl
ZmVycmVkS2V5ZnJhbWVzUnVsZXNDb3VudChTdHlsZVNoZWV0IHNoZWV0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNoYWRvd1Jvb3RUeXBlKE5vZGUgcm9vdCk7CisgICAg
RE9NU3RyaW5nIHNoYWRvd1Jvb3RUeXBlKE5vZGUgcm9vdCk7CiAgICAgRE9NU3RyaW5nIHNoYWRv
d1BzZXVkb0lkKEVsZW1lbnQgZWxlbWVudCk7CiAgICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChF
bGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBpZCk7CiAgICAgTm9kZSB0cmVlU2NvcGVSb290Tm9k
ZShOb2RlIG5vZGUpOwogICAgIE5vZGUgcGFyZW50VHJlZVNjb3BlKE5vZGUgbm9kZSk7CiAKICAg
ICAvLyBTcGF0aWFsIE5hdmlnYXRpb24gdGVzdGluZwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5zaWduZWQgbG9uZyBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpOworICAg
IHVuc2lnbmVkIGxvbmcgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKTsKIAog
ICAgIC8vIENTUyBBbmltYXRpb24gdGVzdGluZy4KICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdXNwZW5k
QW5pbWF0aW9ucygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZXN1bWVBbmltYXRp
b25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGFuaW1hdGlvbnNBcmVTdXNw
ZW5kZWQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gcGF1c2VBbmltYXRpb25B
dFRpbWVPbkVsZW1lbnQoRE9NU3RyaW5nIGFuaW1hdGlvbk5hbWUsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
Ym9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChET01TdHJpbmcgYW5p
bWF0aW9uTmFtZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVu
dCwgRE9NU3RyaW5nIHBzZXVkb0lkKTsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7Cisg
ICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CisgICAgYm9vbGVhbiBhbmltYXRpb25zQXJlU3Vz
cGVuZGVkKCk7CisgICAgYm9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudChET01T
dHJpbmcgYW5pbWF0aW9uTmFtZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1l
bnQgZWxlbWVudCk7CisgICAgYm9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudChET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBwYXVzZVRp
bWUsIEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHBzZXVkb0lkKTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgZG91YmxlIGFuaW1hdGlvbnNJbnRlcnZhbDsKIAogICAgIC8vIENTUyBUcmFuc2l0
aW9uIHRlc3RpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudChET01TdHJpbmcgcHJvcGVydHlOYW1lLCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIGJvb2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0cmlu
ZyBwcm9wZXJ0eSwgdW5yZXN0cmljdGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVu
dCwgRE9NU3RyaW5nIHBzZXVkb0lkKTsKKyAgICBib29sZWFuIHBhdXNlVHJhbnNpdGlvbkF0VGlt
ZU9uRWxlbWVudChET01TdHJpbmcgcHJvcGVydHlOYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBh
dXNlVGltZSwgRWxlbWVudCBlbGVtZW50KTsKKyAgICBib29sZWFuIHBhdXNlVHJhbnNpdGlvbkF0
VGltZU9uUHNldWRvRWxlbWVudChET01TdHJpbmcgcHJvcGVydHksIHVucmVzdHJpY3RlZCBkb3Vi
bGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBwc2V1ZG9JZCk7CiAKICAg
ICBET01TdHJpbmcgdmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CiAgICAgdm9p
ZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhUTUxJbnB1dEVsZW1lbnQgZWxlbWVudCwgRE9N
U3RyaW5nIGNvbG9yVmFsdWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8RE9N
U3RyaW5nPiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9y
eUl0ZW0oc2VxdWVuY2U8RE9NU3RyaW5nPiB2YWx1ZXMpOworICAgIHNlcXVlbmNlPERPTVN0cmlu
Zz4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOworICAgIHZvaWQgc2V0
Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShzZXF1ZW5jZTxET01TdHJpbmc+
IHZhbHVlcyk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgYWJzb2x1dGVDYXJl
dEJvdW5kcygpOworICAgIERPTVJlY3QgYWJzb2x1dGVDYXJldEJvdW5kcygpOwogCiAgICAgRE9N
UmVjdCBib3VuZGluZ0JveChFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBET01SZWN0TGlzdCBpbnNwZWN0b3JIaWdobGlnaHRSZWN0cygpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGluc3BlY3RvckhpZ2hsaWdodE9iamVjdCgpOworICAgIERP
TVJlY3RMaXN0IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKCk7CisgICAgRE9NU3RyaW5nIGluc3Bl
Y3RvckhpZ2hsaWdodE9iamVjdCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyBtYXJrZXJSYW5nZUZvck5vZGUoTm9k
ZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKE5v
ZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGR1bXBNYXJrZXJSZWN0cyhET01TdHJpbmcg
bWFya2VyVHlwZSk7CisgICAgdW5zaWduZWQgbG9uZyBtYXJrZXJDb3VudEZvck5vZGUoTm9kZSBu
b2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSk7CisgICAgUmFuZ2U/IG1hcmtlclJhbmdlRm9yTm9k
ZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICBET01TdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3Ry
aW5nIG1hcmtlclR5cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBkdW1w
TWFya2VyUmVjdHMoRE9NU3RyaW5nIG1hcmtlclR5cGUpOwogICAgIHZvaWQgYWRkVGV4dE1hdGNo
TWFya2VyKFJhbmdlIHJhbmdlLCBib29sZWFuIGlzQWN0aXZlKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sZWFuIGZs
YWcpOworICAgIHZvaWQgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sZWFu
IGZsYWcpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCk7CiAgICAgdm9pZCBzZXRG
b250U21vb3RoaW5nRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihsb25nIHgsIGxvbmcgeSk7CisgICAg
dm9pZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24obG9uZyB4LCBsb25nIHkpOwogCiAgICAgLy8gTGlr
ZSBFbGVtZW50LnNjcm9sbFRvKCksIGJ1dCB3aXRob3V0IGNvbnN0YWludHMsIGZvciB0ZXN0aW5n
IHJ1YmJlci1iYW5kaW5nLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB1bmNvbnN0cmFp
bmVkU2Nyb2xsVG8oRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVz
dHJpY3RlZCBkb3VibGUgeSk7CisgICAgdm9pZCB1bmNvbnN0cmFpbmVkU2Nyb2xsVG8oRWxlbWVu
dCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgbGF5b3V0Vmlld3BvcnRSZWN0KCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0IHZpc3VhbFZpZXdwb3J0UmVjdCgpOwor
ICAgIERPTVJlY3QgbGF5b3V0Vmlld3BvcnRSZWN0KCk7CisgICAgRE9NUmVjdCB2aXN1YWxWaWV3
cG9ydFJlY3QoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRWaWV3QmFzZUJh
Y2tncm91bmRDb2xvcihET01TdHJpbmcgY29sb3JWYWx1ZSk7CisgICAgdm9pZCBzZXRWaWV3QmFz
ZUJhY2tncm91bmRDb2xvcihET01TdHJpbmcgY29sb3JWYWx1ZSk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0UGFnaW5hdGlvbihET01TdHJpbmcgbW9kZSwgbG9uZyBnYXAsIG9w
dGlvbmFsIGxvbmcgcGFnZUxlbmd0aCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9p
ZCBzZXRQYWdpbmF0aW9uKERPTVN0cmluZyBtb2RlLCBsb25nIGdhcCwgb3B0aW9uYWwgbG9uZyBw
YWdlTGVuZ3RoID0gMCk7CisgICAgdm9pZCBzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJv
b2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBjb25m
aWd1cmF0aW9uRm9yVmlld3BvcnQodW5yZXN0cmljdGVkIGZsb2F0IGRldmljZVBpeGVsUmF0aW8s
IGxvbmcgZGV2aWNlV2lkdGgsIGxvbmcgZGV2aWNlSGVpZ2h0LCBsb25nIGF2YWlsYWJsZVdpZHRo
LCBsb25nIGF2YWlsYWJsZUhlaWdodCk7CisgICAgRE9NU3RyaW5nIGNvbmZpZ3VyYXRpb25Gb3JW
aWV3cG9ydCh1bnJlc3RyaWN0ZWQgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgbG9uZyBkZXZpY2VX
aWR0aCwgbG9uZyBkZXZpY2VIZWlnaHQsIGxvbmcgYXZhaWxhYmxlV2lkdGgsIGxvbmcgYXZhaWxh
YmxlSGVpZ2h0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB3YXNMYXN0Q2hh
bmdlVXNlckVkaXQoRWxlbWVudCB0ZXh0RmllbGQpOworICAgIGJvb2xlYW4gd2FzTGFzdENoYW5n
ZVVzZXJFZGl0KEVsZW1lbnQgdGV4dEZpZWxkKTsKICAgICBib29sZWFuIGVsZW1lbnRTaG91bGRB
dXRvQ29tcGxldGUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQpOwogICAgIHZvaWQgc2V0
RWRpdGluZ1ZhbHVlKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBET01TdHJpbmcgdmFs
dWUpOwogICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVu
dCwgYm9vbGVhbiBlbmFibGVkKTsKICAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1M
SW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0
dG9uVHlwZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZU9mU3RyaW5n
KERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmlu
Zz4gZmluZE9wdGlvbnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBj
b3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZp
bmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5j
ZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKKyAgICBSYW5nZT8gcmFuZ2VPZlN0cmluZyhET01T
dHJpbmcgdGV4dCwgUmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBzZXF1ZW5jZTxET01TdHJpbmc+IGZp
bmRPcHRpb25zKTsKKyAgICB1bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9NU3Ry
aW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJr
TWF0Y2hlcyk7CisgICAgdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0
ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIGF1dG9maWxsRmllbGROYW1lKEVsZW1lbnQgZm9ybUNvbnRyb2xF
bGVtZW50KTsKKyAgICBET01TdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCBmb3JtQ29u
dHJvbEVsZW1lbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHBhaW50Q29udHJv
bFRpbnRzKCk7CisgICAgdm9pZCBwYWludENvbnRyb2xUaW50cygpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25n
IHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgpOworICAgIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVj
dChFbGVtZW50IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CiAKICAg
ICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgbG9uZyBy
YW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvY2F0
aW9uRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICB1bnNpZ25lZCBs
b25nIGxlbmd0aEZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgRE9N
U3RyaW5nIHJhbmdlQXNUZXh0KFJhbmdlIHJhbmdlKTsKICAgICBSYW5nZSBzdWJyYW5nZShSYW5n
ZSByYW5nZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGxvbmcgeCwgbG9uZyB5KTsKKyAgICBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRM
b2NhdGlvbihsb25nIHgsIGxvbmcgeSk7CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9j
YXRpb24oUmFuZ2UgcmFuZ2UsIERPTVN0cmluZyB0ZXh0LCBsb25nIHRhcmdldE9mZnNldCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2xl
YW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbGVhbiBlbmFi
bGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBsYXN0U3BlbGxDaGVja1JlcXVl
c3RTZXF1ZW5jZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBsYXN0U3BlbGxDaGVj
a1Byb2Nlc3NlZFNlcXVlbmNlKCk7CisgICAgbG9uZyBsYXN0U3BlbGxDaGVja1JlcXVlc3RTZXF1
ZW5jZSgpOworICAgIGxvbmcgbGFzdFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZSgpOwogCiAg
ICAgc2VxdWVuY2U8RE9NU3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAgICAgdm9p
ZCBzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHNlcXVlbmNlPERPTVN0cmluZz4gbGFuZ3VhZ2Vz
KTsKQEAgLTIxOSwxMyArMjE5LDEzIEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Igewog
ICAgIHNlcXVlbmNlPERPTVN0cmluZz4gdXNlclByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNz
KCk7CiAgICAgdm9pZCBzZXRVc2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhET01TdHJp
bmcgY2hhcmFjdGVyaXN0aWMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBs
b25nIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
c2lnbmVkIGxvbmcgdG91Y2hFdmVudEhhbmRsZXJDb3VudCgpOworICAgIHVuc2lnbmVkIGxvbmcg
d2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOworICAgIHVuc2lnbmVkIGxvbmcgdG91Y2hFdmVudEhh
bmRsZXJDb3VudCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCB0b3Vj
aEV2ZW50UmVjdHNGb3JFdmVudChET01TdHJpbmcgZXZlbnROYW1lKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVJlY3RMaXN0IHBhc3NpdmVUb3VjaEV2ZW50TGlzdGVuZXJSZWN0cygpOwor
ICAgIERPTVJlY3RMaXN0IHRvdWNoRXZlbnRSZWN0c0ZvckV2ZW50KERPTVN0cmluZyBldmVudE5h
bWUpOworICAgIERPTVJlY3RMaXN0IHBhc3NpdmVUb3VjaEV2ZW50TGlzdGVuZXJSZWN0cygpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlTGlzdD8gbm9kZXNGcm9tUmVjdChEb2N1bWVu
dCBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksCisgICAgTm9kZUxpc3Q/IG5vZGVzRnJvbVJlY3Qo
RG9jdW1lbnQgZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LAogICAgICAgICB1bnNpZ25lZCBsb25n
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIGxvbmcgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBsb25nIGJv
dHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxvbmcgbGVmdFBhZGRpbmcsCiAgICAgICAgIGJvb2xlYW4g
aWdub3JlQ2xpcHBpbmcsIGJvb2xlYW4gYWxsb3dTaGFkb3dDb250ZW50LCBib29sZWFuIGFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQpOwogCkBAIC0yNTEsNyArMjUxLDcgQEAgZW51bSBFdmVudFRocm90
dGxpbmdCZWhhdmlvciB7CiAKICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mU2Nyb2xsYWJsZUFy
ZWFzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNQYWdlQm94VmlzaWJs
ZShsb25nIHBhZ2VOdW1iZXIpOworICAgIGJvb2xlYW4gaXNQYWdlQm94VmlzaWJsZShsb25nIHBh
Z2VOdW1iZXIpOwogCiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZUZyYW1lSW5kZXgoSFRNTEltYWdl
RWxlbWVudCBlbGVtZW50KTsKICAgICB2b2lkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9u
KEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsK
QEAgLTI2Niw4ICsyNjYsOCBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSW50ZXJuYWxTZXR0aW5ncyBzZXR0aW5nczsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3b3JrZXJUaHJlYWRDb3VudDsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5pbWF0aW9u
c1BhdXNlZDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGRvdWJsZSBzdmdBbmltYXRpb25zSW50
ZXJ2YWwoU1ZHU1ZHRWxlbWVudCBlbGVtZW50KTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBhcmVTVkdBbmltYXRpb25zUGF1c2VkOworICAgIGRvdWJsZSBzdmdBbmltYXRpb25zSW50
ZXJ2YWwoU1ZHU1ZHRWxlbWVudCBlbGVtZW50KTsKIAogICAgIC8vIEZsYWdzIGZvciBsYXllclRy
ZWVBc1RleHQuCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19W
SVNJQkxFX1JFQ1RTID0gMTsKQEAgLTI3NywzMSArMjc3LDMxIEBAIGVudW0gRXZlbnRUaHJvdHRs
aW5nQmVoYXZpb3IgewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVE
RVNfQ09OVEVOVF9MQVlFUlMgPSAxNjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9U
UkVFX0lOQ0xVREVTX0FDQ0VMRVJBVEVTX0RSQVdJTkcgPSAzMjsKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX0JBQ0tJTkdfU1RPUkVfQVRUQUNIRUQgPSA2NDsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoRG9jdW1l
bnQgZG9jdW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgRE9N
U3RyaW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVudCBkb2N1bWVudCwgb3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQg
bG9uZyBsb25nIGxheWVySURGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGxheWVySURGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucygpOyAvLyBGSVhNRTogcmVuYW1lIHRvIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygp
LgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdExpc3Qgbm9uRmFzdFNjcm9sbGFibGVS
ZWN0cygpOworICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICBE
T01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoKTsgLy8gRklYTUU6IHJlbmFtZSB0
byBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKS4KKyAgICBET01SZWN0TGlzdCBub25GYXN0
U2Nyb2xsYWJsZVJlY3RzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBy
ZXBhaW50UmVjdHNBc1RleHQoKTsKKyAgICBET01TdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KCk7
CiAKICAgICAvLyBUaGVzZSB0aHJvdyBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY29t
cG9zaXRpbmcgbGF5ZXIuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVsZW1lbnRV
c2VzRGlzcGxheUxpc3REcmF3aW5nKEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB1c2VzRGlzcGxh
eUxpc3REcmF3aW5nKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RWxlbWVudFRy
YWNrc0Rpc3BsYXlMaXN0UmVwbGF5KEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB0cmFja1JlcGxh
eSk7CisgICAgdm9pZCBzZXRFbGVtZW50VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyhFbGVtZW50IGVs
ZW1lbnQsIGJvb2xlYW4gdXNlc0Rpc3BsYXlMaXN0RHJhd2luZyk7CisgICAgdm9pZCBzZXRFbGVt
ZW50VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHRyYWNr
UmVwbGF5KTsKIAogICAgIC8vIEZsYWdzIGZvciBkaXNwbGF5TGlzdEZvckVsZW1lbnQuCiAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJB
VElPTlMgPSAxOwogICAgIC8vIFJldHVybnMgdGhlIHJlY29yZGVkIGRpc3BsYXkgbGlzdC4KLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxl
bWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIERP
TVN0cmluZyBkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1
bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOwogICAgIC8vIFJldHVybnMgdGhlIGRpc3BsYXkgbGlz
dCB0aGF0IHdhcyBhY3R1YWxseSBwYWludGVkLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9N
U3RyaW5nIHJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlv
bmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgRE9NU3RyaW5nIHJlcGxheURpc3Bs
YXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0
IGZsYWdzID0gMCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlcygpOworICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJl
c291cmNlcygpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydEF1dGhvckNT
UyhET01TdHJpbmcgY3NzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0VXNl
ckNTUyhET01TdHJpbmcgY3NzKTsKKyAgICB2b2lkIGluc2VydEF1dGhvckNTUyhET01TdHJpbmcg
Y3NzKTsKKyAgICB2b2lkIGluc2VydFVzZXJDU1MoRE9NU3RyaW5nIGNzcyk7CiAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1VuZGVyTWVtb3J5UHJlc3N1cmU7CiAgICAgdm9pZCBi
ZWdpblNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CkBAIC0zMTIsMjYgKzMxMiwyNiBAQCBlbnVt
IEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICB1bnNpZ25lZCBsb25nIHJlZmVyZW5jaW5n
Tm9kZUNvdW50KERvY3VtZW50IGRvY3VtZW50KTsKICAgICBET01XaW5kb3c/IG9wZW5EdW1teUlu
c3BlY3RvckZyb250ZW5kKERPTVN0cmluZyB1cmwpOwogICAgIHZvaWQgY2xvc2VEdW1teUluc3Bl
Y3RvckZyb250ZW5kKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEluc3BlY3Rv
cklzVW5kZXJUZXN0KGJvb2xlYW4gaXNVbmRlclRlc3QpOworICAgIHZvaWQgc2V0SW5zcGVjdG9y
SXNVbmRlclRlc3QoYm9vbGVhbiBpc1VuZGVyVGVzdCk7CiAKICAgICBET01TdHJpbmcgY291bnRl
clZhbHVlKEVsZW1lbnQgZWxlbWVudCk7CiAgICAgbG9uZyBwYWdlTnVtYmVyKEVsZW1lbnQgZWxl
bWVudCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHBhZ2VXaWR0aCA9IDgwMCwgb3B0aW9u
YWwgdW5yZXN0cmljdGVkIGZsb2F0IHBhZ2VIZWlnaHQgPSA2MDApOwogICAgIHNlcXVlbmNlPERP
TVN0cmluZz4gc2hvcnRjdXRJY29uVVJMcygpOwogICAgIGxvbmcgbnVtYmVyT2ZQYWdlcyhvcHRp
b25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzID0gODAwLCBvcHRpb25h
bCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscyA9IDYwMCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcGFnZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0
eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJp
bmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMobG9uZyBwYWdlSW5kZXgsIGxvbmcgd2lkdGgs
IGxvbmcgaGVpZ2h0LCBsb25nIG1hcmdpblRvcCwgbG9uZyBtYXJnaW5SaWdodCwgbG9uZyBtYXJn
aW5Cb3R0b20sIGxvbmcgbWFyZ2luTGVmdCk7CisgICAgRE9NU3RyaW5nIHBhZ2VQcm9wZXJ0eShE
T01TdHJpbmcgcHJvcGVydHlOYW1lLCBsb25nIHBhZ2VOdW1iZXIpOworICAgIERPTVN0cmluZyBw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhsb25nIHBhZ2VJbmRleCwgbG9uZyB3aWR0aCwgbG9u
ZyBoZWlnaHQsIGxvbmcgbWFyZ2luVG9wLCBsb25nIG1hcmdpblJpZ2h0LCBsb25nIG1hcmdpbkJv
dHRvbSwgbG9uZyBtYXJnaW5MZWZ0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRQYWdlU2NhbGVGYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yLCBsb25nIHgs
IGxvbmcgeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBmbG9hdCBwYWdlU2NhbGVGYWN0b3Io
KTsKKyAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVG
YWN0b3IsIGxvbmcgeCwgbG9uZyB5KTsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRQYWdlWm9vbUZhY3Rvcih1bnJlc3RyaWN0
ZWQgZmxvYXQgem9vbUZhY3Rvcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFRl
eHRab29tRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKKyAgICB2b2lkIHNl
dFBhZ2Vab29tRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKKyAgICB2b2lk
IHNldFRleHRab29tRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRVc2VGaXhlZExheW91dChib29sZWFuIHVzZUZp
eGVkTGF5b3V0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rml4ZWRMYXlvdXRT
aXplKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHNldFVzZUZpeGVkTGF5b3V0
KGJvb2xlYW4gdXNlRml4ZWRMYXlvdXQpOworICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGxv
bmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKICAgICB2b2lkIHNldFByaW50aW5nKGxvbmcgd2lkdGgs
IGxvbmcgaGVpZ2h0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRWaWV3RXhw
b3NlZFJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQpOworICAgIHZv
aWQgc2V0Vmlld0V4cG9zZWRSZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVp
Z2h0KTsKIAogICAgIHZvaWQgc2V0SGVhZGVySGVpZ2h0KHVucmVzdHJpY3RlZCBmbG9hdCBoZWln
aHQpOwogICAgIHZvaWQgc2V0Rm9vdGVySGVpZ2h0KHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQp
OwpAQCAtMzU4LDQxICszNTgsNDEgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAK
ICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYm90aCByZXNldCB0aGUgdHJhY2tlZCByZXBhaW50IHJl
Y3RzLiBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6
CiAgICAgLy8gIHN0YXJ0VHJhY2tpbmdSZXBhaW50cywgcmVwYWludFJlY3RzQXNUZXh0LCBzdG9w
VHJhY2tpbmdSZXBhaW50cy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RhcnRUcmFj
a2luZ1JlcGFpbnRzKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0b3BUcmFja2lu
Z1JlcGFpbnRzKCk7CisgICAgdm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoKTsKKyAgICB2b2lk
IHN0b3BUcmFja2luZ1JlcGFpbnRzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5z
aWduZWQgbG9uZyBsYXllckZsdXNoQ291bnQoKTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdMYXll
ckZsdXNoZXMoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxheWVyRmx1c2hDb3VudCgpOwogCiAgICAg
Ly8gUXVlcnkgaWYgYSB0aW1lciBpcyBjdXJyZW50bHkgdGhyb3R0bGVkLCB0byBkZWJ1ZyB0aW1l
ciB0aHJvdHRsaW5nLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1RpbWVyVGhy
b3R0bGVkKGxvbmcgdGltZXJIYW5kbGUpOworICAgIGJvb2xlYW4gaXNUaW1lclRocm90dGxlZChs
b25nIHRpbWVySGFuZGxlKTsKIAogICAgIGJvb2xlYW4gaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aHJvdHRsZWQoKTsKICAgICBib29sZWFuIGFyZVRpbWVyc1Rocm90dGxlZCgpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWQoYm9vbGVhbiBlbmFi
bGVkKTsKKyAgICB2b2lkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZUludGVy
dmFsOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNjcmlwdGVkQW5pbWF0aW9uc0Fy
ZVN1c3BlbmRlZDsKIAogICAgIC8vIE92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBXZWJQYWdlOjpl
dmVudFRocm90dGxpbmdEZWxheSgpLCB3aGljaCBvbmx5IGFmZmVjdHMgaU9TLgogICAgIGF0dHJp
YnV0ZSBFdmVudFRocm90dGxpbmdCZWhhdmlvcj8gZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVy
cmlkZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdGFydFRyYWNraW5nU3R5bGVS
ZWNhbGNzKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIHN0eWxlUmVj
YWxjQ291bnQoKTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdTdHlsZVJlY2FsY3MoKTsKKyAgICB1
bnNpZ25lZCBsb25nIHN0eWxlUmVjYWxjQ291bnQoKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsYXN0U3R5bGVVcGRhdGVTaXplOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHN0YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0ZXMoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY29tcG9zaXRpbmdVcGRhdGVDb3VudCgpOworICAg
IHZvaWQgc3RhcnRUcmFja2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOworICAgIHVuc2lnbmVkIGxv
bmcgY29tcG9zaXRpbmdVcGRhdGVDb3VudCgpOwogCiAgICAgLy8gfG5vZGV8IHNob3VsZCBiZSBE
b2N1bWVudCwgSFRNTElGcmFtZUVsZW1lbnQsIG9yIHVuc3BlY2lmaWVkLgogICAgIC8vIElmIHxu
b2RlfCBpcyBhbiBIVE1MSUZyYW1lRWxlbWVudCwgaXQgYXNzdW1lcyBub2RlLmNvbnRlbnREb2N1
bWVudCBpcwogICAgIC8vIHNwZWNpZmllZCB3aXRob3V0IHNlY3VyaXR5IGNoZWNrcy4gVW5zcGVj
aWZpZWQgb3IgbnVsbCBtZWFucyB0aGlzIGRvY3VtZW50LgotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5
b3V0VGFza3Mob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOworICAgIHZvaWQgdXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQW5kUnVuUG9zdExheW91dFRhc2tzKG9wdGlvbmFs
IE5vZGU/IG5vZGUgPSBudWxsKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxheW91dENvdW50OwogCiAgICAgLy8gUmV0dXJucyBhIHN0cmluZyB3aXRoIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBtb3VzZSBjdXJzb3IgdXNlZCBhdCB0aGUgc3BlY2lmaWVkIGNsaWVudCBs
b2NhdGlvbi4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBnZXRDdXJyZW50Q3Vy
c29ySW5mbygpOworICAgIERPTVN0cmluZyBnZXRDdXJyZW50Q3Vyc29ySW5mbygpOwogCiAgICAg
RE9NU3RyaW5nIG1hcmtlclRleHRGb3JMaXN0SXRlbShFbGVtZW50IGVsZW1lbnQpOwogCkBAIC00
MTQsNyArNDE0LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRp
dGlvbmFsPVZJREVPXSBzZXF1ZW5jZTxET01TdHJpbmc+IG1lZGlhUmVzcG9uc2VTb3VyY2VzKEhU
TUxNZWRpYUVsZW1lbnQgbWVkaWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gc2VxdWVuY2U8
RE9NU3RyaW5nPiBtZWRpYVJlc3BvbnNlQ29udGVudFJhbmdlcyhIVE1MTWVkaWFFbGVtZW50IG1l
ZGlhKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVw
dGlvbihIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gbWVkaWFFbGVtZW50SGFzQ2hhcmFjdGVyaXN0aWMo
SFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgY2hhcmFjdGVyaXN0aWMpOworICAg
IFtDb25kaXRpb25hbD1WSURFT10gYm9vbGVhbiBtZWRpYUVsZW1lbnRIYXNDaGFyYWN0ZXJpc3Rp
YyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBjaGFyYWN0ZXJpc3RpYyk7CiAK
ICAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQV0gdm9pZCBpbml0aWFsaXpl
TW9ja0NETSgpOwogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFdIE1vY2tDRE1GYWN0
b3J5IHJlZ2lzdGVyTW9ja0NETSgpOwpAQCAtNDIzLDEwICs0MjMsMTAgQEAgZW51bSBFdmVudFRo
cm90dGxpbmdCZWhhdmlvciB7CiAKICAgICBET01TdHJpbmcgZ2V0SW1hZ2VTb3VyY2VVUkwoRWxl
bWVudCBlbGVtZW50KTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOwotICAgIFtD
b25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Q2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGUoRE9NU3RyaW5nIG92ZXJyaWRlKTsKLSAgICBbQ29uZGl0aW9u
YWw9VklERU9fVFJBQ0ssIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByaW1hcnlBdWRpb1Ry
YWNrTGFuZ3VhZ2VPdmVycmlkZShET01TdHJpbmcgbGFuZ3VhZ2UpOwotICAgIFtDb25kaXRpb25h
bD1WSURFT19UUkFDSywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlN
b2RlKERPTVN0cmluZyBtb2RlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIERPTVN0
cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOworICAgIFtDb25kaXRpb25hbD1WSURF
T19UUkFDS10gdm9pZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShET01TdHJpbmcgb3Zl
cnJpZGUpOworICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gdm9pZCBzZXRQcmltYXJ5QXVk
aW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoRE9NU3RyaW5nIGxhbmd1YWdlKTsKKyAgICBbQ29uZGl0
aW9uYWw9VklERU9fVFJBQ0tdIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKERPTVN0cmluZyBt
b2RlKTsKIAogICAgIFtDb25kaXRpb25hbD1WSURFT10gVGltZVJhbmdlcyBjcmVhdGVUaW1lUmFu
Z2VzKEZsb2F0MzJBcnJheSBzdGFydFRpbWVzLCBGbG9hdDMyQXJyYXkKICAgICAgZW5kVGltZXMp
OwpAQCAtNDM0LDE3ICs0MzQsMTcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAK
ICAgICBib29sZWFuIGlzU2VsZWN0UG9wdXBWaXNpYmxlKEhUTUxTZWxlY3RFbGVtZW50IGVsZW1l
bnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGlzUGx1Z2luVW5hdmFpbGFi
aWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50IGVsZW1lbnQpOworICAgIGJvb2xlYW4gaXNQ
bHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CiAg
ICAgYm9vbGVhbiBpc1BsdWdpblNuYXBzaG90dGVkKEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3Qgc2VsZWN0aW9uQm91bmRzKCk7CisgICAgRE9NUmVj
dCBzZWxlY3Rpb25Cb3VuZHMoKTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHZv
aWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9T
T1VSQ0VdIHNlcXVlbmNlPERPTVN0cmluZz4gYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChTb3Vy
Y2VCdWZmZXIgYnVmZmVyLCBET01TdHJpbmcgdHJhY2tJRCk7CiAgICAgW0NvbmRpdGlvbmFsPU1F
RElBX1NPVVJDRV0gc2VxdWVuY2U8RE9NU3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lE
KFNvdXJjZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lEKTsKICAgICBbQ29uZGl0aW9u
YWw9TUVESUFfU09VUkNFXSB2b2lkIHNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VC
dWZmZXIgYnVmZmVyLCBib29sZWFuIGZsYWcpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01T
dHJpbmcgaW50ZXJydXB0aW9uVHlwZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIGJl
Z2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBpbnRlcnJ1cHRpb25UeXBlKTsK
ICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
KERPTVN0cmluZyBmbGFncyk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHZvaWQg
c2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdvcnkpOwogICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TRVNTSU9OXSB2b2lkIHNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlvbk5vdGlmaWNh
dGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7CkBAIC00NTUs
MTMgKzQ1NSwxMyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKICAgICBbQ29u
ZGl0aW9uYWw9VklERU9dIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKG9wdGlv
bmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwogICAgIFtDb25kaXRpb25h
bD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChvcHRpb25hbCBib29s
ZWFuIHN1c3BlbmRlZFVuZGVyTG9jayA9IGZhbHNlKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8s
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01T
dHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9u
YWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVzdHJp
Y3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9p
ZCBzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSwgRE9NU3Ry
aW5nIHJlc3RyaWN0aW9ucyk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01TdHJpbmcgbWVk
aWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOwogICAgIFtDb25kaXRp
b25hbD1WSURFT10gdm9pZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxl
bWVudCBlbGVtZW50LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9
V0VCX0FVRElPXSB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQg
Y29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVP
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9NU3Ry
aW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDApOwor
ICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9N
U3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDAp
OwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAg
W0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2
aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKKyAgICBbQ29uZGl0aW9uYWw9V0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUXSB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoRE9NU3RyaW5nIGRldmljZU5hbWUsIERPTVN0cmluZyBkZXZpY2VTdGF0ZSk7CiAgICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBzZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNl
c0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB2
b2lkIGVtdWxhdGVSVENQZWVyQ29ubmVjdGlvblBsYXRmb3JtRXZlbnQoUlRDUGVlckNvbm5lY3Rp
b24gY29ubmVjdGlvbiwgRE9NU3RyaW5nIGFjdGlvbik7CkBAIC00NzQsOCArNDc0LDggQEAgZW51
bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lk
IHNpbXVsYXRlU3lzdGVtV2FrZSgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gYm9vbGVhbiBl
bGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBNb2NrUGFnZU92ZXJsYXkgaW5zdGFsbE1vY2tQYWdl
T3ZlcmxheShQYWdlT3ZlcmxheVR5cGUgdHlwZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBE
T01TdHJpbmcgcGFnZU92ZXJsYXlMYXllclRyZWVBc1RleHQob3B0aW9uYWwgdW5zaWduZWQgc2hv
cnQgZmxhZ3MgPSAwKTsKKyAgICBNb2NrUGFnZU92ZXJsYXkgaW5zdGFsbE1vY2tQYWdlT3Zlcmxh
eShQYWdlT3ZlcmxheVR5cGUgdHlwZSk7CisgICAgRE9NU3RyaW5nIHBhZ2VPdmVybGF5TGF5ZXJU
cmVlQXNUZXh0KG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAKICAgICB2b2lk
IHNldFBhZ2VNdXRlZChET01TdHJpbmcgbXV0ZWRTdGF0ZSk7CiAgICAgRE9NU3RyaW5nIHBhZ2VN
ZWRpYVN0YXRlKCk7CkBAIC00ODgsMTAgKzQ4OCwxMCBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0Jl
aGF2aW9yIHsKIAogICAgIFtDb25kaXRpb25hbD1DT05URU5UX0ZJTFRFUklOR10gcmVhZG9ubHkg
YXR0cmlidXRlIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczsKIAotICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVAsIE1heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgc2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCBlbGVtZW50KTsKKyAgICBb
Q29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQXSBET01TdHJpbmcgc2Nyb2xsU25hcE9mZnNldHMo
RWxlbWVudCBlbGVtZW50KTsKICAgICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQXSB2b2lk
IHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcGF0aFN0cmluZ1dp
dGhTaHJpbmtXcmFwcGVkUmVjdHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91
YmxlIHJhZGl1cyk7CisgICAgRE9NU3RyaW5nIHBhdGhTdHJpbmdXaXRoU2hyaW5rV3JhcHBlZFJl
Y3RzKHNlcXVlbmNlPGRvdWJsZT4gcmVjdENvbXBvbmVudHMsIGRvdWJsZSByYWRpdXMpOwogCiAg
ICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01TdHJpbmcgZ2V0Q3VycmVudE1lZGlhQ29udHJvbHNT
dGF0dXNGb3JFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7CiAKQEAgLTUwNiw3ICs1
MDYsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2xlYW4gZW5hYmxlKTsKICAgICBbRW5hYmxlZEJ5
U2V0dGluZz1TdG9yYWdlQWNjZXNzQVBJXSB2b2lkIHNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNz
KGJvb2xlYW4gdmFsdWUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldENhblNo
b3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2xlYW4gYWxsb3cpOworICAgIHZvaWQgc2V0Q2FuU2hv
d01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxvdyk7CiAKICAgICBET01TdHJpbmcgY29t
cG9zZWRUcmVlQXNUZXh0KE5vZGUgcGFyZW50KTsKIApAQCAtNTQ5LDcgKzU0OSw3IEBAIGVudW0g
RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1d
IFByb21pc2U8SW1hZ2VEYXRhPiBncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSgpOwogICAg
IFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHRyYWNrQXVkaW9TYW1wbGVDb3VudDsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
XSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291bnQ7
Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0TWVkaWFEZXZpY2VTdGF0ZShET01TdHJpbmcgZGV2aWNlSUQsIERPTVN0cmluZyBwcm9wZXJ0
eSwgYm9vbGVhbiB2YWx1ZSk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBz
ZXRNZWRpYURldmljZVN0YXRlKERPTVN0cmluZyBkZXZpY2VJRCwgRE9NU3RyaW5nIHByb3BlcnR5
LCBib29sZWFuIHZhbHVlKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIGRl
bGF5TWVkaWFTdHJlYW1UcmFja1NhbXBsZXMoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgZmxvYXQg
ZGVsYXkpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHZvaWQgc2V0TWVkaWFTdHJl
YW1UcmFja011dGVkKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIGJvb2xlYW4gbXV0ZWQpOwogICAg
IFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHZvaWQgcmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhN
ZWRpYVN0cmVhbSBzdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spOwpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAg
ICAgR2xvYmFsPShXb3JrZXIsRGVkaWNhdGVkV29ya2VyKSwKICAgICBKU0dlbmVyYXRlVG9OYXRp
dmVPYmplY3QsCiBdIGludGVyZmFjZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA6IFdvcmtl
ckdsb2JhbFNjb3BlIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmpl
Y3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9pZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9
IFtdKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QAogXSBpbnRlcmZhY2UgV29ya2VyIDogRXZlbnRUYXJnZXQgewogICAgIHZvaWQgdGVybWluYXRl
KCk7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5z
ZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubWVzc2FnZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogCiAgICAgLy8gV29ya2VyVXRpbHMKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBpbXBvcnRTY3JpcHRzKFVTVlN0cmluZy4uLiB1cmxzKTsK
KyAgICB2b2lkIGltcG9ydFNjcmlwdHMoVVNWU3RyaW5nLi4uIHVybHMpOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXb3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwogCiAgICAgLy8gQWRkaXRpb25h
bCBjb25zdHJ1Y3RvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9FeHRlbmRhYmxlRXZlbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNSArMzIsNSBAQAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEpT
R2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIEV4dGVuZGFibGVFdmVudCA6IEV2
ZW50IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd2FpdFVudGlsKFByb21pc2U8YW55
PiBmKTsKKyAgICB2b2lkIHdhaXRVbnRpbChQcm9taXNlPGFueT4gZik7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyByZXNlcnZlZENsaWVudElkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgdGFyZ2V0Q2xpZW50SWQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVz
cG9uZFdpdGgoUHJvbWlzZTxGZXRjaFJlc3BvbnNlPiByKTsKKyAgICB2b2lkIHJlc3BvbmRXaXRo
KFByb21pc2U8RmV0Y2hSZXNwb25zZT4gcik7CiB9OwogCiBkaWN0aW9uYXJ5IEZldGNoRXZlbnRJ
bml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXIgOiBFdmVu
dFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBzY3JpcHRVUkw7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZTsKLSAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9z
dE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIg
PSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcG9zdE1l
c3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBb
XSk7CiAKICAgICAvLyBldmVudAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25zdGF0ZWNo
YW5nZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZSB0eXBlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAK
LSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4g
dHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZv
aWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJh
bnNmZXIgPSBbXSk7CiB9OwogCiBlbnVtIEZyYW1lVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS94bWwvRE9NUGFyc2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvRE9N
UGFyc2VyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUveG1sL0RPTVBh
cnNlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDUgKzIyLDUgQEAKICAgICBDb25zdHJ1Y3Rv
ckNhbGxXaXRoPURvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGlu
dGVyZmFjZSBET01QYXJzZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBE
b2N1bWVudCBwYXJzZUZyb21TdHJpbmcoRE9NU3RyaW5nIHN0cmluZywgRE9NU3RyaW5nIGNvbnRl
bnRUeXBlKTsKKyAgICBbTmV3T2JqZWN0XSBEb2N1bWVudCBwYXJzZUZyb21TdHJpbmcoRE9NU3Ry
aW5nIHN0cmluZywgRE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEzICs2MCwx
MyBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKIAogICAgIC8vIHJlcXVlc3QKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgb3BlbihCeXRlU3RyaW5nIG1ldGhvZCwgRE9NU3RyaW5n
IHVybCk7IC8vIEZJWE1FOiB1cmwgc2hvdWxkIGJlIGEgVVNWU3RyaW5nLgotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBvcGVuKEJ5dGVTdHJpbmcgbWV0aG9kLCBET01TdHJpbmcgdXJsLCBi
b29sZWFuIGFzeW5jLCBvcHRpb25hbCBET01TdHJpbmc/IHVzZXIgPSBudWxsLCBvcHRpb25hbCBE
T01TdHJpbmc/IHBhc3N3b3JkID0gbnVsbCk7IC8vIEZJWE1FOiB1cmwvdXNlci9wYXNzd29yZCBz
aG91bGQgYWxsIGJlIGEgVVNWU3RyaW5ncy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0UmVxdWVzdEhlYWRlcihCeXRlU3RyaW5nIGhlYWRlciwgQnl0ZVN0cmluZyB2YWx1ZSk7Cisg
ICAgdm9pZCBvcGVuKEJ5dGVTdHJpbmcgbWV0aG9kLCBET01TdHJpbmcgdXJsKTsgLy8gRklYTUU6
IHVybCBzaG91bGQgYmUgYSBVU1ZTdHJpbmcuCisgICAgdm9pZCBvcGVuKEJ5dGVTdHJpbmcgbWV0
aG9kLCBET01TdHJpbmcgdXJsLCBib29sZWFuIGFzeW5jLCBvcHRpb25hbCBET01TdHJpbmc/IHVz
ZXIgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmc/IHBhc3N3b3JkID0gbnVsbCk7IC8vIEZJWE1F
OiB1cmwvdXNlci9wYXNzd29yZCBzaG91bGQgYWxsIGJlIGEgVVNWU3RyaW5ncy4KKyAgICB2b2lk
IHNldFJlcXVlc3RIZWFkZXIoQnl0ZVN0cmluZyBoZWFkZXIsIEJ5dGVTdHJpbmcgdmFsdWUpOwog
ICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CiAgICAgYXR0cmlidXRlIGJvb2xl
YW4gd2l0aENyZWRlbnRpYWxzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBYTUxIdHRwUmVxdWVz
dFVwbG9hZCB1cGxvYWQ7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQob3B0aW9u
YWwgKERvY3VtZW50IG9yIEJvZHlJbml0KT8gYm9keSA9IG51bGwpOworICAgIHZvaWQgc2VuZChv
cHRpb25hbCAoRG9jdW1lbnQgb3IgQm9keUluaXQpPyBib2R5ID0gbnVsbCk7CiAgICAgdm9pZCBh
Ym9ydCgpOwogCiAgICAgLy8gcmVzcG9uc2UKQEAgLTc1LDcgKzc1LDcgQEAgZW51bSBYTUxIdHRw
UmVxdWVzdFJlc3BvbnNlVHlwZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEJ5dGVTdHJpbmcg
c3RhdHVzVGV4dDsKICAgICBCeXRlU3RyaW5nPyBnZXRSZXNwb25zZUhlYWRlcihCeXRlU3RyaW5n
IG5hbWUpOwogICAgIEJ5dGVTdHJpbmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIG92ZXJyaWRlTWltZVR5cGUoRE9NU3RyaW5nIG1pbWUpOwor
ICAgIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShET01TdHJpbmcgbWltZSk7CiAgICAgYXR0cmlidXRl
IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZTsKICAgICBbQ2FjaGVkQXR0
cmlidXRlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcmVzcG9uc2U7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyByZXNwb25zZVRleHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhFdmFsdWF0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEw
ICsyMiwxMCBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBY
UGF0aEV2YWx1YXRvciB7CiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1
bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBh
dGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Np
b24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7Cisg
ICAgWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4
cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZl
cik7CiAKICAgICBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihvcHRpb25hbCBOb2Rl
PyBub2RlUmVzb2x2ZXIpOwogCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRl
ZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
WFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNv
bHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25h
bCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOworICAgIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlv
bmFsIERPTVN0cmluZyBleHByZXNzaW9uID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIE5vZGU/IGNv
bnRleHROb2RlLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLCBvcHRpb25hbCB1
bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDUgKzIyLDUgQEAKICAgICBFeHBvcnRUb1dyYXBwZWRGdW5jdGlvbiwK
ICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgWFBhdGhFeHByZXNz
aW9uIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKG9wdGlv
bmFsIE5vZGU/IGNvbnRleHROb2RlID0gbnVsbCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdHlw
ZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCA9IG51bGwpOworICAgIFhQYXRo
UmVzdWx0IGV2YWx1YXRlKG9wdGlvbmFsIE5vZGU/IGNvbnRleHROb2RlID0gbnVsbCwgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3Vs
dCA9IG51bGwpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGludmFsaWRJdGVyYXRvclN0YXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHNuYXBzaG90TGVuZ3RoOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIGl0ZXJh
dGVOZXh0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIHNuYXBzaG90SXRlbShvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgTm9kZSBpdGVyYXRlTmV4dCgpOwor
ICAgIE5vZGUgc25hcHNob3RJdGVtKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsK
IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327594</attachid>
            <date>2017-11-26 17:08:32 -0800</date>
            <delta_ts>2021-03-21 09:45:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20171126170831.patch</filename>
            <type>text/plain</type>
            <size>376098</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzNSBAQAorMjAxNy0xMS0yNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbmVl
ZCB0byBzcGVjaWZ5IFtNYXlUaHJvd0V4Y2VwdGlvbl0gZm9yIG9wZXJhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDAxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlNZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGw6CisgICAgICAgICog
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJl
c3VsdFNldFJvd0xpc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRs
OgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252
ZXJ0QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0
aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9u
Q2FsbCk6CisgICAgICAgIChOZWVkc1ZvaWRPcGVyYXRpb25DYWxsZXJGb3JQb3RlbnRpYWxFeGNl
cHRpb25Qcm9wYWdhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6Cisg
ICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29u
dmVydE5lZWRzU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU01hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25HZXRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uS2V5c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25WYWx1ZXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25BZGRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uQ2xlYXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRGVsZXRlQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2hCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUJvZHkp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENFUmVhY3Rpb25zQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdC
b2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rp
b25UZXN0T3BlcmF0aW9uSW50ZXJmYWNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uU3BlY2lmaWVkQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3Bl
cmF0aW9uV2l0aEFyZ3VtZW50c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50Qm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25U
ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZVZhcmlhbnRBcmd1bWVudEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNl
clByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0
aW9uVGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50Qm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6aGFuZGxlRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0
aHJvdzo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25X
aXRoVHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUeXBlZGVmczo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRS
ZXRocm93c0V4Y2VwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uSXRlbUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRC
eVNldHRpbmdPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRp
b25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24yQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVFbmFibGVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJl
c3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbkdldFNlY3JldEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Cb2R5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JG
dW5jdGlvbkltcGxlbWVudHNNZXRob2Q0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDFCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50
YWxNZXRob2Q0Qm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQm9keSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uTmFtZWREZWxldGVyQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlckJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVk
U2V0dGVyMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlcjJCb2R5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVy
YXRpb25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0
V29ya2VyUHJvbWlzZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEpTVGVzdE9iajEpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9i
ajIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbEpTVGVzdE9iajMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5h
YmxlZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
b3JsZFNwZWNpZmljTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhv
ZFdpdGhBcmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkxvbmdNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0JvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0
ZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxN
ZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEVudW1BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOdWxsYWJsZVVTVlN0cmluZ0FyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhC
eXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWVCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29y
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRXhjZXB0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblByaXZhdGVNZXRob2RCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlv
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3Vt
ZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudEJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
cmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
QW5kRGVmYXVsdFZhbHVlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGxCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxMb25nTG9uZ0lzWmVyb0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U2VxdWVuY2VJc0VtcHR5Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Cb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklz
RmFsc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdEJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rp
b25BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QzQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q4Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q5Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTFCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEy
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxM0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24x
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGlu
Z3Vpc2hpbmdVbmlvbnMxQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGlu
Z3Vpc2hpbmdVbmlvbjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjJC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVO
b25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGlu
Z1BhcmFtZXRlcjJCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25DbGFzc01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRpb25hbEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbEJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5z
aWduZWRMb25nU2VxdWVuY2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdp
dGhvdXROdWxsYWJsZVNlcXVlbmNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQm9keSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5n
ZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhv
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Qm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uMUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVybnNPd25Qcm9t
aXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xl
Q29uZGl0aW9uYWxPdmVybG9hZDFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDJCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdEJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25X
aXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlckJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1l
ZEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5j
dGlvblJldHVybmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTdHJpbmdpZmll
clByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uSWRlbnRp
ZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllckJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZ0JvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9k
eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0JvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRv
d0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmdCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFi
bGVzQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5p
b25zQXJnQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uVW5pb25BcmdCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVu
Y3Rpb25Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZUJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRp
b25Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENh
bGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Vm9pZENhbGxiYWNr
RnVuY3Rpb246OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEltcGxlbWVudHMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRh
bC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGw6
CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAgICAg
ICAgKiBjc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4Lmlk
bDoKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsOgorICAgICAgICAqIGNzcy9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGw6CisgICAgICAgICogY3NzL0ZvbnRGYWNl
U2V0LmlkbDoKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTTWF0cml4LmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5pZGw6CisgICAg
ICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDoKKyAgICAgICAg
KiBkb20vRE9NUG9pbnRSZWFkT25seS5pZGw6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaWRsOgorICAgICAgICAqIGRv
bS9FeGNlcHRpb25Pci5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaWRsOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAu
aWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9y
LmlkbDoKKyAgICAgICAgKiBkb20vUGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1Jhbmdl
LmlkbDoKKyAgICAgICAgKiBkb20vVGV4dC5pZGw6CisgICAgICAgICogZG9tL1RleHREZWNvZGVy
LmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbDoKKyAg
ICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaWRsOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5pZGw6CisgICAg
ICAgICogaHRtbC9UaW1lUmFuZ2VzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNE
cmF3SW1hZ2UuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1BhdGgyRC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsOgorICAgICAgICAqIHBhZ2Uv
Q3J5cHRvLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5pZGw6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5pZGw6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5pZGw6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckdsb2Jh
bFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAqIHN2
Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1i
ZXJMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdQb2ludC5pZGw6CisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdC5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uaWRsOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGw6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGw6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5pZGw6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5pZGw6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiB4bWwvWFBhdGhFdmFsdWF0b3IuaWRs
OgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24uaWRsOgorICAgICAgICAqIHhtbC9YUGF0
aFJlc3VsdC5pZGw6CisKIDIwMTctMTEtMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIElTTyBhbGxvY2F0ZWQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjMgKzQw
LDIzIEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBVFVTX1BJTl9JTkNPUlJFQ1QgPSA2
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRVU19QSU5fTE9DS09VVCA9IDc7CiAKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0
YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3Rh
dGljIGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBj
YW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVy
KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRp
b25dIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5nIG1l
cmNoYW50SWRlbnRpZmllcik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IHN0YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0aWMgYm9vbGVhbiBjYW5N
YWtlUGF5bWVudHMoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3Rh
dGljIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3Ry
aW5nIG1lcmNoYW50SWRlbnRpZmllcik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAoRE9NU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllcik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYmVn
aW4oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGNvbXBsZXRlTWVyY2hhbnRW
YWxpZGF0aW9uKGFueSBtZXJjaGFudFNlc3Npb24pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uLCBDb25kaXRpb25hbD1BUFBMRV9QQVlfU0VTU0lPTl9WM10gdm9p
ZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFVwZGF0ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9QVBQ
TEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB1cGRhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICB2b2lkIGJl
Z2luKCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9p
ZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhbnkgbWVyY2hhbnRTZXNzaW9uKTsKKyAgICBb
Q29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7CisgICAg
W0NvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlIHVwZGF0ZSk7Cisg
ICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9TRVNTSU9OX1YzXSB2b2lkIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsKKyAg
ICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX1NFU1NJT05fVjNdIHZvaWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVuc2ln
bmVkIHNob3J0IHN0YXR1cywgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBw
bGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVz
LCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFw
cGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xp
bmVJdGVtcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbihBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBh
eUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBj
b21wbGV0ZVBheW1lbnQodW5zaWduZWQgc2hvcnQgc3RhdHVzKTsKKyAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBsZVBheUxp
bmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMp
OworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hv
cnQgc3RhdHVzLCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01l
dGhvZHMsIEFwcGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0
ZW0+IG5ld0xpbmVJdGVtcyk7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24oQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4g
bmV3TGluZUl0ZW1zKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudCh1bnNpZ25lZCBzaG9ydCBz
dGF0dXMpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnZhbGlkYXRlbWVyY2hhbnQ7
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnBheW1lbnRtZXRob2RzZWxlY3RlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlNZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRh
dGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNSArMjcsNSBAQAogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSZQQVlNRU5UX1JFUVVFU1QsCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBBcHBsZVBheU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50IDogQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9jdW1lbnRd
IHZvaWQgY29tcGxldGUoYW55IG1lcmNoYW50U2Vzc2lvbik7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSB2b2lkIGNvbXBsZXRlKGFueSBtZXJjaGFudFNlc3Npb24pOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQCB0eXBlZGVmIChCbG9i
IG9yIEJ1ZmZlclNvdXJjZSBvciBET01Gb3JtCiBbCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1CZWFj
b25BUEksCiBdIHBhcnRpYWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1
cmwsIG9wdGlvbmFsIEJvZHlJbml0PyBkYXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSBib29sZWFuIHNlbmRCZWFjb24oVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/
IGRhdGEgPSBudWxsKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDYgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUVuY3J5cHRlZE1l
ZGlhQVBJLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBNZWRp
YUtleXMgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlT
ZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9u
YWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKICAgICBQ
cm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0
aWZpY2F0ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlT
eXN0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdXBkYXRlKFVpbnQ4QXJyYXkga2V5KTsKKyAgICB2
b2lkIHVwZGF0ZShVaW50OEFycmF5IGtleSk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRrZXlhZGRlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNl
cHRpb24sCiAgICAgRW5hYmxlZEF0UnVudGltZT1MZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSSwKIF0g
aW50ZXJmYWNlIFdlYktpdE1lZGlhS2V5cyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRl
U2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXREYXRhKTsKICAgICBzdGF0aWMg
Ym9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGtleVN5c3RlbSwgb3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVt
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIHR5cGVk
ZWYgKHNlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiAKICAgICBDb25zdHJ1Y3RvcihvcHRp
b25hbCBIZWFkZXJzSW5pdCBpbml0KSwKICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9u
LAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdm9pZCBkZWxldGUoQnl0ZVN0cmlu
ZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJ5dGVTdHJpbmc/IGdldChCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXMoQnl0ZVN0cmlu
ZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0KEJ5dGVTdHJpbmcgbmFt
ZSwgQnl0ZVN0cmluZyB2YWx1ZSk7CisgICAgdm9pZCBhcHBlbmQoQnl0ZVN0cmluZyBuYW1lLCBC
eXRlU3RyaW5nIHZhbHVlKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVdIHZvaWQgZGVsZXRl
KEJ5dGVTdHJpbmcgbmFtZSk7CisgICAgQnl0ZVN0cmluZz8gZ2V0KEJ5dGVTdHJpbmcgbmFtZSk7
CisgICAgYm9vbGVhbiBoYXMoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICB2b2lkIHNldChCeXRlU3Ry
aW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFsdWUpOwogCiAgICAgaXRlcmFibGU8Qnl0ZVN0cmluZywg
Qnl0ZVN0cmluZz47CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHR5cGVkZWYgKEJsb2Igb3IgQnVmZmVyU291cmNlIG9yIERPTUZvcm0KICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGludGVncml0eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBrZWVwYWxpdmU7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRmV0Y2hSZXF1ZXN0IGNsb25lKCk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXF1
ZXN0IGNsb25lKCk7CiB9OwogCiBGZXRjaFJlcXVlc3QgaW1wbGVtZW50cyBGZXRjaEJvZHk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZGljdGlvbmFyeSBG
ZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAgSW50ZXJmYWNlTmFtZT1SZXNwb25zZSwKIF0gaW50ZXJm
YWNlIEZldGNoUmVzcG9uc2UgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBOZXdPYmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0
YXRpYyBGZXRjaFJlc3BvbnNlIHJlZGlyZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHN0YXR1cyA9IDMwMik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5n
IHVybCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBGZXRjaFJlc3BvbnNlVHlwZSB0eXBlOwogCkBAIC02MSw3ICs2MSw3IEBA
IGRpY3Rpb25hcnkgRmV0Y2hSZXNwb25zZUluaXQgewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgdHJhaWxlcnMuCiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8SGVhZGVy
cz4gdHJhaWxlcjsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBj
bG9uZSgpOwogfTsKIAogRmV0Y2hSZXNwb25zZSBpbXBsZW1lbnRzIEZldGNoQm9keTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBhbnkga2V5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtleTsK
IAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgdXBkYXRlKGFueSB2YWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkdmFu
Y2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIGNvbnRpbnVlKG9wdGlvbmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29udGludWVQcmltYXJ5S2V5KGFueSBr
ZXksIGFueSBwcmltYXJ5S2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0
ZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCB1cGRhdGUoYW55IHZh
bHVlKTsKKyAgICB2b2lkIGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3Vu
dCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWNvbnRpbnVlRnVu
Y3Rpb25dIHZvaWQgY29udGludWUob3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSB2b2lkIGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtl
eSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0
aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE0IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbG9uZyB2ZXJzaW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdM
aXN0IG9iamVjdFN0b3JlTmFtZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVj
dFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmpl
Y3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKKyAgICBJREJPYmplY3RTdG9y
ZSBjcmVhdGVPYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgSURCT2JqZWN0U3Rv
cmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9N
U3RyaW5nIG5hbWUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMs
IG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgSURC
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+
KSBzdG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25s
eSIpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIHNwZWMsIGJ1dCBp
cyBuZWVkZWQgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS93M2MvSW5kZXhlZERCL2lzc3Vlcy84NQotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVzLCBvcHRpb25hbCBJ
REJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIpOworICAgIElEQlRyYW5zYWN0aW9u
IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgb3B0aW9uYWwgSURCVHJhbnNh
Y3Rpb25Nb2RlIG1vZGUgPSAicmVhZG9ubHkiKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYWJvcnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJPcGVuREJSZXF1ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3QgZGVsZXRl
RGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5
VGhyb3dFeGNlcHRpb25dIHNob3J0IGNtcChhbnkgZmlyc3QsIGFueSBzZWNvbmQpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9N
U3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2
ZXJzaW9uKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCT3BlbkRC
UmVxdWVzdCBkZWxldGVEYXRhYmFzZShET01TdHJpbmcgbmFtZSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBzaG9ydCBjbXAoYW55IGZpcnN0LCBhbnkgc2Vjb25kKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIwICszOSwyMCBAQCB0eXBlZGVmIChET01TdHJpbmcg
b3Igc2VxdWVuY2U8RE9NU3RyaW5nCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVs
dGlFbnRyeTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9w
dGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJh
bmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24g
PSAibmV4dCIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4
dCIpOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGws
IG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3Blbktl
eUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0g
Im5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3Qgb3BlbktleUN1
cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Z2V0KGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtF
bmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlv
bmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRp
b25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1
bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9y
Y2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhj
ZXB0aW9uXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFu
Z2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
KyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9w
dGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdl
PyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291
bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFu
eSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlS
YW5nZT8gcmFuZ2UgPSBudWxsKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVl
c3QgY291bnQoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxMCArMzIsMTAgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb3dl
ck9wZW47CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdXBwZXJPcGVuOwogCi0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIG9ubHkoYW55IHZhbHVlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlv
bmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1h
eVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgdXBwZXJCb3VuZChhbnkgdXBwZXIs
IG9wdGlvbmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgYm91bmQoYW55IGxvd2Vy
LCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gdXBwZXJPcGVuID0gZmFsc2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
c3RhdGljIElEQktleVJhbmdlIG9ubHkoYW55IHZhbHVlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dlckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwg
Ym9vbGVhbiBvcGVuID0gZmFsc2UpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gc3RhdGlj
IElEQktleVJhbmdlIHVwcGVyQm91bmQoYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4g
PSBmYWxzZSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBzdGF0aWMgSURCS2V5UmFuZ2Ug
Ym91bmQoYW55IGxvd2VyLCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93ZXJPcGVuID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gdXBwZXJPcGVuID0gZmFsc2UpOwogCi0gICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpbmNsdWRlcyhhbnkg
a2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIGJvb2xlYW4gaW5jbHVkZXMoYW55IGtl
eSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwyOCArMzksMjggQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvSW5jcmVtZW50OwogCi0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVl
LCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwg
TWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5n
ZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0
aW9uLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQo
SURCS2V5UmFuZ2U/IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtl
eSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBnZXRLZXkoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjbGVhcigpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJL
ZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0
aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24gPSAibmV4dCIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JE
aXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUs
IE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5n
ZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNv
dW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBs
b25nIGNvdW50KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxL
ZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4
IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0
cmluZz4pIGtleVBhdGgsIG9wdGlvbmFsIElEQkluZGV4UGFyYW1ldGVycyBvcHRpb25zKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Y291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5
KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwg
b3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0
IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURC
S2V5UmFuZ2U/IGtleVJhbmdlKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGNsZWFyKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJu
ZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJz
b3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJ
REJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGVdIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0g
SURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGws
IG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFs
IFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZV0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcg
b3Igc2VxdWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0
ZXJzIG9wdGlvbnMpOworICAgIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICB2
b2lkIGRlbGV0ZUluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwog
fTsKIAogZGljdGlvbmFyeSBJREJJbmRleFBhcmFtZXRlcnMgewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIElEQkRhdGFiYXNlIGRiOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FeGNl
cHRpb24gZXJyb3I7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9i
amVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
YWJvcnQoKTsKKyAgICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSk7
CisgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFib3J0
OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTcgKzU0LDE3IEBAIGVudW0gUmVhZHlT
dGF0ZSB7CiAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkdXJhdGlvbjsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU291cmNlQnVmZmVyIGFkZFNvdXJjZUJ1ZmZlcihET01T
dHJpbmcgdHlwZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVNvdXJjZUJ1
ZmZlcihTb3VyY2VCdWZmZXIgYnVmZmVyKTsKKyAgICBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVm
ZmVyKERPTVN0cmluZyB0eXBlKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VC
dWZmZXIgYnVmZmVyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkeVN0YXRlIHJlYWR5
U3RhdGU7CiAgICAgCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGVuZE9mU3RyZWFtKG9w
dGlvbmFsIEVuZE9mU3RyZWFtRXJyb3IgZXJyb3IpOworICAgIHZvaWQgZW5kT2ZTdHJlYW0ob3B0
aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CiAKICAgICBzdGF0aWMgYm9vbGVhbiBpc1R5
cGVTdXBwb3J0ZWQgKERPTVN0cmluZyB0eXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhckxpdmVTZWVrYWJsZVJhbmdlKCk7CisgICAg
dm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAg
IHZvaWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbnNvdXJjZW9wZW47CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZWVu
ZGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Nywx
MSArNTcsMTEgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRXaW5k
b3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIoQnVmZmVyU291cmNlIGRhdGEpOworICAgIHZvaWQgYXBw
ZW5kQnVmZmVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50
IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBh
Ym9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoZG91YmxlIHN0YXJ0
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZCk7CisgICAgdm9pZCBhYm9ydCgpOworICAgIHZvaWQg
cmVtb3ZlKGRvdWJsZSBzdGFydCwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbnVwZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb251cGRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPVBlZXJDb25uZWN0
aW9uLAogXSBpbnRlcmZhY2UgUlRDRFRNRlNlbmRlciA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBG
SVhNRSAxNjk2NjI6IGNoYW5nZSB0byB1bnNpZ25lZCBsb25nIHdpdGggZGVmYXVsdHMKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0RFRNRihET01TdHJpbmcgdG9uZXMsIG9wdGlv
bmFsIGxvbmcgZHVyYXRpb24sIG9wdGlvbmFsIGxvbmcgaW50ZXJUb25lR2FwKTsKKyAgICB2b2lk
IGluc2VydERUTUYoRE9NU3RyaW5nIHRvbmVzLCBvcHRpb25hbCBsb25nIGR1cmF0aW9uLCBvcHRp
b25hbCBsb25nIGludGVyVG9uZUdhcCk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRv
bmVjaGFuZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0b25lQnVmZmVyOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDEwICs0MywxMCBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3RyaW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJh
eUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAg
IHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAgIHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAK
ICAgICB2b2lkIGNsb3NlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0eXBlZGVmIFJUQ1J0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgSlNCdWlsdGluQ29uc3RydWN0b3IKIF0gaW50
ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9uIDogRXZlbnRUYXJnZXQgewogICAgIC8vIEpTIGJ1aWx0
LWluIGNvbnN0cnVjdG9yIGhhbmRsZXMgdGhlIG9wdGlvbmFsIFJUQ0NvbmZpZ3VyYXRpb24KLSAg
ICBbUHJpdmF0ZUlkZW50aWZpZXIsIENhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBpbml0aWFsaXplV2l0aChSVENDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwor
ICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgaW5pdGlhbGl6
ZVdpdGgoUlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKIAogCiAgICAgLy8gNC4zLjIg
SW50ZXJmYWNlIERlZmluaXRpb24KQEAgLTkzLDcgKzkzLDcgQEAgdHlwZWRlZiBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBSdHBUcgogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlzc2luZyBkZWZh
dWx0SWNlU2VydmVycwogCiAgICAgUlRDQ29uZmlndXJhdGlvbiBnZXRDb25maWd1cmF0aW9uKCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKTsKKyAgICB2b2lkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmVnb3RpYXRpb25uZWVkZWQ7CkBAIC0xMjMsMTAgKzEyMywx
MCBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgc2VxdWVu
Y2U8UlRDUnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOwogICAgIHNlcXVlbmNlPFJUQ1J0cFRy
YW5zY2VpdmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAotICAgIFtQcml2YXRlSWRlbnRpZmllciwg
UHVibGljSWRlbnRpZmllciwgTWF5VGhyb3dFeGNlcHRpb25dIFJUQ1J0cFNlbmRlciBhZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBNZWRpYVN0cmVhbS4uLiBzdHJlYW1zKTsKLSAgICBb
UHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciBzZW5kZXIpOworICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gUlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1lZGlhU3RyZWFt
VHJhY2sgdHJhY2ssIE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOworICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2Vu
ZGVyKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJh
bnNjZWl2ZXIoKE1lZGlhU3RyZWFtVHJhY2sgb3IgRE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOworICAgIFJUQ1J0cFRyYW5zY2VpdmVyIGFkZFRy
YW5zY2VpdmVyKChNZWRpYVN0cmVhbVRyYWNrIG9yIERPTVN0cmluZykgdHJhY2ssIG9wdGlvbmFs
IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBpbml0KTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb250cmFjazsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHR5cGVkZWYgUlRDUnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb24gUnRwVHIKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEgQVBJCiAgICAg
Ly8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0
YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlv
bmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVs
SW5pdCBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZGF0YWNoYW5uZWw7
CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgU2VjdXJlQ29udGV4dAogXSBpbnRlcmZhY2Ug
UGF5bWVudFJlcXVlc3QgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQ
cm9taXNlPFBheW1lbnRSZXNwb25zZT4gc2hvdygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
UHJvbWlzZTx2b2lkPiBhYm9ydCgpOworICAgIFByb21pc2U8dm9pZD4gYWJvcnQoKTsKICAgICBb
Q2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnQoKTsKIAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAg
ICBTZWN1cmVDb250ZXh0CiBdIGludGVyZmFjZSBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IDog
RXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB1cGRhdGVXaXRoKFByb21pc2U8
UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFpbHNQcm9taXNlKTsKKyAgICB2b2lkIHVwZGF0ZVdp
dGgoUHJvbWlzZTxQYXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRs
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksNSArMzksNSBAQAogCiAgICAgLy8g
Q2hhbm5lbCBhY2Nlc3MKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRmxvYXQzMkFycmF5IGdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hhbm5lbEluZGV4KTsKKyAgICBGbG9hdDMyQXJyYXkg
Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOCArNDQsOCBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGxvb3BTdGFy
dDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBsb29wRW5kOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHN0YXJ0KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUg
d2hlbiA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIGdyYWluRHVyYXRpb24pOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzdG9wKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9
IDApOworICAgIHZvaWQgc3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0g
MCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBncmFpbk9mZnNldCA9IDAsIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7CisgICAgdm9pZCBzdG9wKG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDApOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmVuZGVkOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNjEsOCArNjEsOCBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICAvLyBOdW1iZXIg
b2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKICAg
ICAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNp
Z25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMs
IHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4
VG9Nb25vKTsKKyAgICBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVm
ZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KICAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNo
b3VsZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxl
LiBUaGlzIHNob3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCkBAIC03MSwyNyArNzEsMjcgQEAg
ZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CiAgICAgLy8gU291cmNlcwogICAgIEF1ZGlvQnVmZmVy
U291cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURF
TywgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVN
ZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtD
b25kaXRpb25hbD1WSURFT10gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlh
RWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJl
YW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsK
ICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKIAogICAgIC8vIFByb2Nlc3Np
bmcgbm9kZXMKICAgICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBt
YXhEZWxheVRpbWUgPSAxKTsKKyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKICAgICBCaXF1YWRGaWx0ZXJOb2Rl
IGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFw
ZXIoKTsKICAgICBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOwogICAgIENvbnZvbHZlck5vZGUg
Y3JlYXRlQ29udm9sdmVyKCk7CiAgICAgRHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKTsKICAgICBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9k
ZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXpl
ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKICAgICBP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9h
dDMyQXJyYXkgaW1hZyk7CisgICAgUGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9h
dDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwogCiAgICAgLy8gQ2hhbm5lbCBzcGxp
dHRpbmcgYW5kIG1lcmdpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRl
ck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZPdXRwdXRzID0gNik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9k
ZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1
dHMgPSA2KTsKKyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5uZWxN
ZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0cyA9IDYpOwogCiAgICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKICAgICAvLyB2b2lk
IHByZXBhcmVPZmZsaW5lQnVmZmVyUmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBjaGFubmVsQ291bnRNb2RlOwogICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY2hhbm5lbEludGVycHJldGF0aW9uOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGNvbm5lY3QoQXVkaW9Ob2RlIGRlc3RpbmF0aW9uLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG91dHB1dCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5wdXQgPSAwKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29ubmVjdChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG91dHB1dCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7Cisg
ICAgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlucHV0ID0gMCk7CisgICAg
dm9pZCBjb25uZWN0KEF1ZGlvUGFyYW0gZGVzdGluYXRpb24sIG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0ID0gMCk7CisgICAgdm9pZCBkaXNjb25uZWN0KG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0ID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw4ICs0OCw4IEBAIGVudW0gT3NjaWxsYXRvclR5cGUgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVu
ID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0
cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7CisgICAgdm9pZCBzdGFydChvcHRpb25hbCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHdoZW4gPSAwKTsKKyAgICB2b2lkIHN0b3Aob3B0aW9uYWwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB3aGVuID0gMCk7CiAKICAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJpb2Rp
Y1dhdmU/IHdhdmUpOyAvLyBGSVhNRTogVGhlIHBhcmFtZXRlciBzaG91bGQgbm90IGJlIG51bGxh
YmxlLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDUgQEAKICAqLwogCiBwYXJ0aWFsIGludGVy
ZmFjZSBET01XaW5kb3cgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGF0YWJhc2U/IG9wZW5E
YXRhYmFzZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZlcnNpb24sIERPTVN0cmluZyBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBvcHRpb25hbCBEYXRhYmFzZUNh
bGxiYWNrPyBjcmVhdGlvbkNhbGxiYWNrKTsKKyAgICBEYXRhYmFzZT8gb3BlbkRhdGFiYXNlKERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmVyc2lvbiwgRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIG9wdGlvbmFsIERhdGFiYXNlQ2FsbGJhY2s/IGNy
ZWF0aW9uQ2FsbGJhY2spOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXRSb3dMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChE
T01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldFJvd0xpc3QgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJl
Y29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNSArMzEsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiBb
CiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVyZmFjZSBTUUxUcmFuc2FjdGlvbiB7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0
YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0
aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGV4ZWN1dGVTcWwoRE9N
U3RyaW5nIHNxbFN0YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVu
dHMgPSBbXSwgb3B0aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25h
bCBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
bmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbmQoVVNWU3Ry
aW5nIGRhdGEpOworICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciBkYXRhKTsKKyAgICB2b2lkIHNl
bmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIHZvaWQgc2VuZChCbG9iIGRhdGEpOworICAg
IHZvaWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBE
T01TdHJpbmcgcmVhc29uKTsKKyAgICB2b2lkIGNsb3NlKG9wdGlvbmFsIFtDbGFtcF0gdW5zaWdu
ZWQgc2hvcnQgY29kZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHJlYXNvbik7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiAgICAgQ29uc3RydWN0b3IoRWxlbWVudD8gdGFy
Z2V0LCBvYmplY3Q/IGtleWZyYW1lcykKIF0gaW50ZXJmYWNlIEtleWZyYW1lRWZmZWN0IDogQW5p
bWF0aW9uRWZmZWN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGFyZ2V0Owot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgc2V0S2V5
ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZv
aWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDYgQEAKICAgICBhdHRyaWJ1dGUgQW5pbWF0aW9uRWZmZWN0PyBlZmZlY3Q7CiAg
ICAgYXR0cmlidXRlIEFuaW1hdGlvblRpbWVsaW5lPyB0aW1lbGluZTsKICAgICBbSW1wbGVtZW50
ZWRBcz1iaW5kaW5nc1N0YXJ0VGltZV0gYXR0cmlidXRlIGRvdWJsZT8gc3RhcnRUaW1lOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1iaW5kaW5nc0N1cnJlbnRUaW1lXSBh
dHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50VGltZTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5n
c0N1cnJlbnRUaW1lXSBhdHRyaWJ1dGUgZG91YmxlPyBjdXJyZW50VGltZTsKICAgICBhdHRyaWJ1
dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDEwICs4Nyw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4Y2VwdGlvblQK
IH0KIAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0V4Y2VwdGlvbk9yIDogcHVi
bGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVj
YXlfdDxUPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZT4geyB9OwotCi0KIC8vIENvbnZlcnNpb24gZnJv
bSBJbXBsZW1lbnRhdGlvbiAtPiBKU1ZhbHVlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SlNDb252ZXJ0ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3Bl
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01P
cGVyYXRpb24uaAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNCArNjMsMjEgQEAgcHVi
bGljOgogICAgIH0KIH07CiAKK3N0cnVjdCBWb2lkT3BlcmF0aW9uQ2FsbGVyIHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHN0YXRpYyBhdXRvIGNhbGwoSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OlRocm93U2NvcGUmLCBGdW5jdG9yJiYgZnVuY3RvcikgLT4gc3RkOjplbmFibGVf
aWZfdDwhc3RkOjppc19zYW1lPEV4Y2VwdGlvbk9yPHZvaWQ+LCBkZWNsdHlwZShmdW5jdG9yKCkp
Pjo6dmFsdWU+CisgICAgeworICAgICAgICBmdW5jdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBGdW5jdG9yJiYgZnVuY3Rvcikg
LT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RXhjZXB0aW9uT3I8dm9pZD4sIGRlY2x0
eXBlKGZ1bmN0b3IoKSk+Ojp2YWx1ZT4KKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZnVu
Y3RvcigpOworICAgICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ3Mjgs
NyArNDcyOCw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAg
ICAgICAgCiAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7CiAgICAg
ICAgIAotICAgICAgICBteSAkdG9KU0V4cHJlc3Npb24gPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1Jl
ZmVyZW5jZXMoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7
CisgICAgICAgIG15ICR0b0pTRXhwcmVzc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJl
bmNlcygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIikiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkiLCAxKTsK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTtcbiIpIHVubGVzcyAkYXR0cmlidXRlLT5pc1N0YXRpYyBvciAkYXR0cmlidXRl
LT5pc01hcExpa2U7CiAKICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CkBA
IC01MTg0LDkgKzUxODQsMTQgQEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uRGVmaW5pdGlvbgogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOwogICAgICAg
ICB9CisKICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rpb25OYW1lKCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwotICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
PSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5n
KSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJG9wZXJhdGlvbik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCIg
LiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSIpIC4gIik7XG4iKTsK
KworICAgICAgICBpZiAoTmVlZHNWb2lkT3BlcmF0aW9uQ2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0
aW9uUHJvcGFnYXRpb24oJG9wZXJhdGlvbikpIHsKKyAgICAgICAgICAgICRmdW5jdGlvblN0cmlu
ZyA9ICJWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuICRmdW5jdGlvblN0cmluZzsgfSkiOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5n
LCAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpIiwgMSkgLiAiKTtcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CkBAIC01NTUyLDcgKzU1NTcsMjggQEAg
c3ViIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsCiAKICAgICByZXR1cm4gMCB1
bmxlc3MgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259
OwogCi0gICAgcmV0dXJuICRvcGVyYXRpb24tPnR5cGUgJiYgKCRvcGVyYXRpb24tPnR5cGUtPm5h
bWUgZXEgInZvaWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24t
PnR5cGUpIHx8IE9wZXJhdGlvbkhhc0ZvcmNlZFJldHVyblZhbHVlKCRvcGVyYXRpb24pKTsKKyAg
ICAjIENvbnN0cnVjdG9yIG9wZXJlcmF0aW9ucywgd2hpY2ggZG8gbm90IGhhdmUgYSB0eXBlLCBu
ZXZlciBuZWVkIHRvIHVzZSBwcm9wYWdhdGVFeGNlcHRpb24uCisgICAgcmV0dXJuIDAgdW5sZXNz
ICRvcGVyYXRpb24tPnR5cGU7CisKKyAgICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uLT50eXBlLT5u
YW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNl
VHlwZSgkb3BlcmF0aW9uLT50eXBlKTsKKyAgICByZXR1cm4gMSBpZiBPcGVyYXRpb25IYXNGb3Jj
ZWRSZXR1cm5WYWx1ZSgkb3BlcmF0aW9uKTsKKworICAgIHJldHVybiAwOworfQorCitzdWIgTmVl
ZHNWb2lkT3BlcmF0aW9uQ2FsbGVyRm9yUG90ZW50aWFsRXhjZXB0aW9uUHJvcGFnYXRpb24KK3sK
KyAgICBteSAoJG9wZXJhdGlvbikgPSBAXzsKKworICAgICMgQ29uc3RydWN0b3Igb3BlcmVyYXRp
b25zLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR5cGUsIG5ldmVyIG5lZWQgdG8gdXNlIFZvaWRPcGVy
YXRpb25DYWxsZXIuCisgICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPnR5cGU7CisKKyAg
ICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1
cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAm
JiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKKyAgICBy
ZXR1cm4gMSBpZiBPcGVyYXRpb25IYXNGb3JjZWRSZXR1cm5WYWx1ZSgkb3BlcmF0aW9uKTsKKwor
ICAgIHJldHVybiAwOwogfQogCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKQEAgLTU2NzQs
NyArNTcwMCwxMCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBwdXNoKEBhcmd1
bWVudHMsICJXVEZNb3ZlKHByb21pc2UpIikgaWYgJG9wZXJhdGlvbi0+dHlwZSAmJiAkY29kZUdl
bmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKIAogICAgIG15ICRmdW5jdGlvblN0
cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwot
ICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Nj
b3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9u
Q2FsbCgkb3BlcmF0aW9uKTsKKworICAgIGlmIChOZWVkc1ZvaWRPcGVyYXRpb25DYWxsZXJGb3JQ
b3RlbnRpYWxFeGNlcHRpb25Qcm9wYWdhdGlvbigkb3BlcmF0aW9uKSkgeworICAgICAgICAkZnVu
Y3Rpb25TdHJpbmcgPSAiVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiAkZnVuY3Rpb25TdHJpbmc7IH0pIjsKKyAgICB9CiAKICAgICByZXR1
cm4gJGZ1bmN0aW9uU3RyaW5nOwogfQpAQCAtNjEyNCw3ICs2MTUzLDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAk
aW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJG9wZXJhdGlv
bi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAicmV0dXJuIEpTVmFsdWU6OmVuY29kZSgi
IC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAk
ZnVuY3Rpb25TdHJpbmcsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpIC4gIik7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUo
IiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwg
JGZ1bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlLCAxKSAuICIpO1xuIik7CiAg
ICAgfQogfQogCkBAIC02NTE4LDcgKzY1NDcsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlRE9NQ29u
dmVydE5lZWRzU3RhdGUKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiSlNPTiI7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciI7Ci0gICAgCisK
ICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjU1NCwxNyArNjU4MywxNyBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlRE9NQ29udmVydE5lZWRzR2xvYmFsCiAKIHN1YiBOYXRpdmVUb0pTVmFsdWVVc2luZ1Jl
ZmVyZW5jZXMKIHsKLSAgICBteSAoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJGdsb2Jh
bE9iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2
YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFsd2F5c0NoZWNrRXhjZXB0aW9uKSA9IEBf
OwogCi0gICAgcmV0dXJuIE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4dCwgJGludGVyZmFjZSwgJHZh
bHVlLCAic3RhdGUiLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKTsKKyAgICByZXR1cm4gTmF0aXZl
VG9KU1ZhbHVlKCRjb250ZXh0LCAkaW50ZXJmYWNlLCAkdmFsdWUsICJzdGF0ZSIsICRnbG9iYWxP
YmplY3RSZWZlcmVuY2UsICRhbHdheXNDaGVja0V4Y2VwdGlvbik7CiB9CiAKICMgRklYTUU6IFdl
IHNob3VsZCByZW1vdmUgTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycyBhbmQgY29tYmluZSBO
YXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMgYW5kIE5hdGl2ZVRvSlNWYWx1ZQogc3ViIE5h
dGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMKIHsKLSAgICBteSAoJGNvbnRleHQsICRpbnRlcmZh
Y2UsICR2YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAoJGNvbnRl
eHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFsd2F5c0No
ZWNrRXhjZXB0aW9uKSA9IEBfOwogCi0gICAgcmV0dXJuIE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4
dCwgJGludGVyZmFjZSwgJHZhbHVlLCAiKnN0YXRlIiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSk7
CisgICAgcmV0dXJuIE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4dCwgJGludGVyZmFjZSwgJHZhbHVl
LCAiKnN0YXRlIiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFsd2F5c0NoZWNrRXhjZXB0aW9u
KTsKIH0KIAogc3ViIElzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9KU1ZhbHVlCkBAIC02NTc2LDEz
ICs2NjA1LDEzIEBAIHN1YiBJc1ZhbGlkQ29udGV4dEZvck5hdGl2ZVRvSlNWYWx1ZQogCiBzdWIg
TmF0aXZlVG9KU1ZhbHVlCiB7Ci0gICAgbXkgKCRjb250ZXh0LCAkaW50ZXJmYWNlLCAkdmFsdWUs
ICRzdGF0ZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAo
JGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHN0YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2Jq
ZWN0UmVmZXJlbmNlLCAkYWx3YXlzQ2hlY2tFeGNlcHRpb24pID0gQF87CiAKICAgICBhc3NlcnQo
IkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9KU1Zh
bHVlKCRjb250ZXh0KTsKIAogICAgIG15ICRjb25kaXRpb25hbCA9ICRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlw
ZTsKLSAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSByZWYoJGNvbnRleHQpIGVxICJJRExBdHRy
aWJ1dGUiIHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlv
bn07CisgICAgbXkgJG1heVRocm93RXhjZXB0aW9uID0gJGFsd2F5c0NoZWNrRXhjZXB0aW9uIHx8
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAKICAg
ICAjIFdlIGNvdWxkIGluc3RlYWQgb3ZlcmxvYWQgYSBmdW5jdGlvbiB0byB3b3JrIHdpdGggb3B0
aW9uYWwgYXMgd2VsbCBhcyBub24tb3B0aW9uYWwgbnVtYmVycywgYnV0IHRoaXMKICAgICAjIGlz
IHNsaWdodGx5IGJldHRlciBiZWNhdXNlIGl0IGd1YXJhbnRlZXMgd2Ugd2lsbCBmYWlsIHRvIGNv
bXBpbGUgaWYgdGhlIElETCBmaWxlIGRvZXNuJ3QgbWF0Y2ggdGhlIEMrKy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50cy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbXBsZW1l
bnRzLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RJbXBsZW1lbnRzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQAogICAgIGF0dHJpYnV0ZSBOb2RlIGltcGxlbWVudHNOb2RlOwogCiAgICAgdm9pZCBpbXBs
ZW1lbnRzTWV0aG9kMSgpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBpbXBsZW1lbnRzTWV0aG9kMihET01TdHJpbmcgc3Ry
QXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIFRlc3RPYmogaW1wbGVtZW50c01ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBv
YmpBcmcpOwogICAgIFtDdXN0b21dIHZvaWQgaW1wbGVtZW50c01ldGhvZDMoKTsKICAgICBzdGF0
aWMgdm9pZCBpbXBsZW1lbnRzTWV0aG9kNCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2gi
LCAia2luZGEtbG93CiAgICAgdm9pZCBtZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoVGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbiBlbnVtQXJnKTsKICAgICB2b2lkIG1ldGhvZFdpdGhPcHRpb25h
bEVudW1Bcmcob3B0aW9uYWwgVGVzdEVudW1UeXBlIGVudW1BcmcpOwogICAgIHZvaWQgbWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShvcHRpb25hbCBUZXN0RW51bVR5cGUg
ZW51bUFyZyA9ICJFbnVtVmFsdWUxIik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBUZXN0T2Jq
IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRE9NU3RyaW5nIHN0ckFyZywgVGVz
dE9iaiBvYmpBcmcpOworICAgIFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cyhET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CiAKICAgICB2b2lkIG1ldGhv
ZFdpdGhVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nIHN0cik7CiAgICAgdm9pZCBtZXRob2RXaXRoTnVs
bGFibGVVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nPyBzdHIpOwpAQCAtMTY0LDkgKzE2NCw5IEBAIGVu
dW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB2b2lkIG1ldGhvZFdp
dGhSZWNvcmQocmVjb3JkPERPTVN0cmluZywgbG9uZz4gcmVjb3JkUGFyYW1ldGVyKTsKIAogICAg
IC8vIEV4Y2VwdGlvbnMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgbWV0aG9kV2l0aEV4
Y2VwdGlvbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBtZXRob2RXaXRoRXhjZXB0
aW9uUmV0dXJuaW5nTG9uZygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtZXRo
b2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCk7CisgICAgdm9pZCBtZXRob2RXaXRoRXhj
ZXB0aW9uKCk7CisgICAgbG9uZyBtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZygpOwor
ICAgIFRlc3RPYmogbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCgpOwogCiAgICAg
Ly8gJ0N1c3RvbScgZXh0ZW5kZWQgYXR0cmlidXRlCiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIGxv
bmcgICAgICAgICAgICBjdXN0b21BdHRyOwpAQCAtMTkxLDExICsxOTEsMTEgQEAgZW51bSBUZXN0
Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIC8vICdDYWxsV2l0aCcgZXh0ZW5k
ZWQgYXR0cmlidXRlCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRT
dGF0ZVZvaWQoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlw
dFN0YXRlT2JqKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCB3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiB3aXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24oKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgd2l0aFNjcmlwdFN0
YXRlVm9pZEV4Y2VwdGlvbigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gVGVzdE9iaiB3
aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JlNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCZTY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JlNjcmlwdFN0YXRlXSBUZXN0T2JqIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKICAg
ICBbQ2FsbFdpdGg9ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0ICAmICBTY3JpcHRTdGF0ZSAgXSBU
ZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
KCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIHdpdGhEb2N1bWVudEFyZ3VtZW50KCk7
CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB2b2lkIHdpdGhDYWxsZXJEb2N1bWVu
dEFyZ3VtZW50KCk7CkBAIC0zMjksOCArMzI5LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJo
aWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQgY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25P
cHRpb25hbChvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSBsb25nIG9iakFyZ3NMb25nID0gMCk7CiAK
ICAgICB2b2lkIG1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBz
ZXF1ZW5jZTxET01TdHJpbmc+IHN0cmluZ0FycmF5RnVuY3Rpb24oc2VxdWVuY2U8RE9NU3RyaW5n
PiB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nTGlzdCBkb21TdHJp
bmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlzdCB2YWx1ZXMpOworICAgIHNlcXVlbmNlPERPTVN0
cmluZz4gc3RyaW5nQXJyYXlGdW5jdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7Cisg
ICAgRE9NU3RyaW5nTGlzdCBkb21TdHJpbmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlzdCB2YWx1
ZXMpOwogCiAgICAgdm9pZCBvcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihvcHRp
b25hbCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPHVucmVzdHJpY3RlZCBkb3VibGU+KSBvcHRpb25h
bFVuaW9uKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3cKICAgICBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlz
dGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CiAKICAgICBbQ2hlY2tTZWN1
cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7
Ci0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHRG9jdW1l
bnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIFNWR0RvY3Vt
ZW50IGdldFNWR0RvY3VtZW50KCk7CiAKICAgICB2b2lkIGNvbnZlcnQxKFRlc3ROb2RlIHZhbHVl
KTsKICAgICB2b2lkIGNvbnZlcnQyKFRlc3ROb2RlPyB2YWx1ZSk7CkBAIC00MDAsMTIgKzQwMCwx
MiBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgLy8gUHJv
bWlzZSBmdW5jdGlvbgogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbigpOwog
ICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KGZs
b2F0IGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTx2b2lkPiB0ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOworICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb24oKTsKICAgICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChvcHRpb25hbCBsb25nIGEpOwogICAgIFByb21p
c2U8dm9pZD4gdGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oZmxvYXQgYSk7CiAgICAgUHJv
bWlzZTx2b2lkPiB0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihGZXRjaFJlcXVlc3QgcmVx
dWVzdCk7CiAgICAgc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
bigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oKTsKKyAgICBzdGF0aWMgUHJvbWlzZTx2
b2lkPiB0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOwogICAgIFtDdXN0
b21dIFByb21pc2U8dm9pZD4gdGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbigpOwogICAgIFtDdXN0
b21dIHN0YXRpYyBQcm9taXNlPHZvaWQ+IHRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24o
KTsKICAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx2b2lkPiB0ZXN0Q3Vz
dG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbigpOwpAQCAtNDM2LDcgKzQzNiw3IEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBsZWdhY3ljYWxsZXIgdm9p
ZCAoKTsKIAogICAgIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKFtSZXR1cm5WYWx1
ZV0gTm9kZSBhLCBOb2RlIGIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSB0ZXN0UmV0
dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKFtSZXR1cm5WYWx1ZV0gTm9kZSBhLCBO
b2RlIGIpOworICAgIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlv
bihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBiKTsKIAogICAgIFtDb25kaXRpb25hbGx5UmVh
ZFdyaXRlPUNPTkRJVElPTl0gYXR0cmlidXRlIE5vZGUgY29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZTsKICAgICBbQ29uZGl0aW9uYWw9Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxseVJlYWRX
cml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBOb2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZUF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxl
bWVudGFsLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RBdHRyaWJ1dGU7CiAKICAgICB2b2lkIHN1cHBs
ZW1lbnRhbE1ldGhvZDEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01TdHJpbmcg
c3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01TdHJpbmcgc3RyQXJnLCBUZXN0
T2JqIG9iakFyZyk7CiAgICAgW0N1c3RvbV0gdm9pZCBzdXBwbGVtZW50YWxNZXRob2QzKCk7CiAg
ICAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kNCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RUeXBlZGVmcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEzICs2MSwxMyBAQAogCiAg
ICAgU1ZHUE9JTlQgcG9pbnRGdW5jdGlvbigpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBT
RVFVRU5DRV9PRl9TVFJJTkdTIHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24oU0VRVUVOQ0VfT0ZfU1RS
SU5HUyB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8U1RSSU5HPiBz
dHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihzZXF1ZW5jZTxTVFJJTkc+IHZhbHVlcyk7CisgICAgU0VR
VUVOQ0VfT0ZfU1RSSU5HUyBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKFNFUVVFTkNFX09GX1NUUklO
R1MgdmFsdWVzKTsKKyAgICBzZXF1ZW5jZTxTVFJJTkc+IHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24y
KHNlcXVlbmNlPFNUUklORz4gdmFsdWVzKTsKIAogICAgIGJvb2xlYW4gY2FsbFdpdGhTZXF1ZW5j
ZVRoYXRSZXF1aXJlc0luY2x1ZGUoc2VxdWVuY2U8VGVzdEV2ZW50VGFyZ2V0PiBzZXF1ZW5jZUFy
Zyk7CiAKICAgICAvLyBFeGNlcHRpb25zCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIG1l
dGhvZFdpdGhFeGNlcHRpb24oKTsKKyAgICB2b2lkIG1ldGhvZFdpdGhFeGNlcHRpb24oKTsKIAog
ICAgIC8vIEJ1aWx0aW4gVHlwZWRlZnMKICAgICBhdHRyaWJ1dGUgQnVmZmVyU291cmNlIGJ1ZmZl
clNvdXJjZUF0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBrZXkgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRvTWFw
TGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkR2V0
VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChF
eGVjU3RhdGUqIHN0YXRlKQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc01hcEwKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3
YXJkSGFzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUs
IGZvcndhcmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRl
LCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlz
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uRW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhp
cykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpj
YXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRU
aGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uVmFsdWVzKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yODMsNyArMjgzLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhp
cywgV1RGTW92ZShjYWxsYmFjaykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEFk
ZFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBmb3J3
YXJkQWRkVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkFkZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBmb3J3YXJkQ2xlYXJUb01hcExpa2Uo
KnN0YXRlLCAqY2FzdGVkVGhpcyk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBmb3J3YXJkQ2xlYXJUb01hcExpa2UoKnN0YXRl
LCAqY2FzdGVkVGhpcyk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZERl
bGV0ZVRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBm
b3J3YXJkRGVsZXRlVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkRlbGV0ZShFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDks
NyArMjA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01T
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKnN0YXRlLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZEdldFRvTWFwTGlrZSgqc3Rh
dGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldChFeGVjU3Rh
dGUqIHN0YXRlKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1JlYWQKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGtl
eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFz
VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndh
cmRIYXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3Rh
dGUsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRo
aXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb01hcExpa2Uo
KnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9NYXBMaWtlKCpzdGF0ZSwg
KmNhc3RlZFRoaXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFk
T25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTI2
MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1Rv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExBbnk+KCpzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvTWFwTGlr
ZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBz
dGF0ZSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNSZWFkCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBjYWxsYmFj
ayA9IGNvbnZlcnQ8SURMQW55Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRv
TWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigqc3RhdGUsIHRocm93U2NvcGUsIGZv
cndhcmRGb3JFYWNoVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJh
Y2spKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBuZXh0Q2hpbGQgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwg
MCwgIm5leHRDaGlsZCIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rpb24i
LCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjM3LDcgKzIzNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIG1lc3NhZ2UgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShX
VEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdl
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhDRVJlYWN0aW9ucygpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ0VSZWFjdGlvbnMoKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEy
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwudmFsdWUoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKICAg
ICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRl
cmFsKCJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIikpOwotICAgIGltcGwudGVzdE9wZXJhdGlvbklu
dGVyZmFjZSgpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uSW50ZXJmYWNlKCk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM2Nyw3ICsz
NjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5j
YWxsVHJhY2luZ0FjdGl2ZSgpKSkKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJP
cGVyYXRpb24oaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVkIikpOwot
ICAgIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0
aW9uU3BlY2lmaWVkKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTM5Niw3ICszOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZChjKTsK
ICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlM
aXRlcmFsKCJ0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQ
YXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMo
V1RGTW92ZShhKSwgV1RGTW92ZShiKSwgV1RGTW92ZShjKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVy
YXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUoYykpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00
MjAsNyArNDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgICAgICAgICAgY2FsbFRyYWNlclBhcmFtZXRlcnMuYXBwZW5kKG5vZGVOdWxsYWJsZUFyZyk7
CiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsIEFTQ0lJ
TGl0ZXJhbCgidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50IiksIFdURk1vdmUoY2Fs
bFRyYWNlclBhcmFtZXRlcnMpKTsKICAgICB9Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51
bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KFdURk1vdmUobm9kZU51bGxhYmxlQXJnKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTQ0Myw3ICs0NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgICAgIFdURjo6dmlzaXQoWyZdIChhdXRvJiB2YWx1ZSkgeyBjYWxsVHJhY2VyUGFyYW1l
dGVycy5hcHBlbmQodmFsdWUpOyB9LCB2YXJpYW50QXJnKTsKICAgICAgICAgQ2FsbFRyYWNlcjo6
dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0T3BlcmF0aW9u
V2l0aFZhcmlhbnRBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQYXJhbWV0ZXJzKSk7CiAg
ICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2
YXJpYW50QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50
KFdURk1vdmUodmFyaWFudEFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC00NjcsNyArNDY3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICAgICAgV1RGOjp2aXNpdChbJl0gKGF1dG8m
IHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZCh2YWx1ZSk7IH0sICp2YXJpYW50
TnVsbGFibGVBcmcpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFj
ZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJn
dW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAgICBpbXBs
LnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50
TnVsbGFibGVBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlh
bnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnROdWxsYWJsZUFyZykpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00ODksNyArNDg5LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICAgICAgV1RG
Ojp2aXNpdChbJl0gKGF1dG8mIHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZCh2
YWx1ZSk7IH0sICp2YXJpYW50T3B0aW9uYWxBcmcpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0
Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RPcGVyYXRpb25XaXRo
T3B0aW9uYWxWYXJpYW50QXJndW1lbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykp
OwogICAgIH0KLSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1l
bnQoV1RGTW92ZSh2YXJpYW50T3B0aW9uYWxBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlv
bldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFyZykp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01MTAsNyArNTEwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgICAgICBXVEY6OnZpc2l0KFsmXSAoYXV0byYgdmFsdWUpIHsgY2FsbFRyYWNlclBhcmFt
ZXRlcnMuYXBwZW5kKHZhbHVlKTsgfSwgdmFyaWFudERlZmF1bHRBcmcpOwogICAgICAgICBDYWxs
VHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RP
cGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIpLCBXVEZNb3ZlKGNhbGxUcmFjZXJQ
YXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFy
aWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERlZmF1bHRBcmcpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVz
dE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERlZmF1
bHRBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBuYW1l
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01T
dHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpz
dGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTEzNiw3ICsxMTM2LDcgQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYW1lID0gRE9NSklUOjpEaXJlY3RD
b252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydCgqc3RhdGUsIGVuY29kZWROYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJp
bmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uSXRlbUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB5ID0gY29udmVydDxJRExVbnNpZ25lZFNo
b3J0Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaXRlbShXVEZNb3Zl
KHgpLCBXVEZNb3ZlKHkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1v
dmUoeSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0xMTcwLDcgKzExNzAs
NyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHkg
PSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExVbnNpZ25lZFNob3J0Pjo6ZGlyZWN0Q29udmVy
dCgqc3RhdGUsIGVuY29kZWRZKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJv
d1Njb3BlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
SGFzQXR0cmlidXRlQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1w
bC5oYXNBdHRyaWJ1dGUoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExC
b29sZWFuPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaGFzQXR0cmlidXRlKCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkhhc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgSlND
OjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZQogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9N
SklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtMTIwNiw3ICsxMjA2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZWxlbWVu
dElkID0gY29udmVydDxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExE
T01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVs
ZW1lbnRJZCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFj
ZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTEyMjQsNyArMTIyNCw3IEBAIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmUKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZWxlbWVudElkID0gRE9NSklUOjpEaXJlY3RD
b252ZXJ0ZXI8SURMUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3Ry
aW5nPj46OmRpcmVjdENvbnZlcnQoKnN0YXRlLCBlbmNvZGVkRWxlbWVudElkKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxl
bWVudElkKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PEVsZW1lbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRzQnlOYW1lQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xMjM2LDcgKzEyMzYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBlbGVtZW50TmFtZSA9IGNvbnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRv
cjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0
YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUo
V1RGTW92ZShlbGVtZW50TmFtZSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5h
bWUpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTEy
NTQsNyArMTI1NCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmUK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZWxlbWVu
dE5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExBdG9taWNTdHJpbmdBZGFwdG9yPElE
TERPTVN0cmluZz4+OjpkaXJlY3RDb252ZXJ0KCpzdGF0ZSwgZW5jb2RlZEVsZW1lbnROYW1lKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFt
ZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50
TmFtZSkpKSk7CiB9CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNw
cAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIs
NyArMjgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwuZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5lbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGluZGV4
ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9k
ZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLml0ZW0oV1RGTW92
ZShpbmRleCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFj
ZTxOb2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUs
IGltcGwuaXRlbShXVEZNb3ZlKGluZGV4KSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUq
IHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODcsNyArMzg3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwucmVndWxhck9wZXJhdGlvbihX
VEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5yZWd1bGFyT3BlcmF0aW9uKFdURk1vdmUo
dGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24o
V1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC00MTgsNyArNDE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5lbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZChXVEZN
b3ZlKHRlc3RQYXJhbSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dvcmxkKFdURk1v
dmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0
ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDk4
LDcgKzQ5OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8
SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5l
bmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoV1RGTW92ZSh0
ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUxMyw3ICs1MTMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLnRlc3RQcml2YXRlRnVuY3Rpb24oKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwudGVzdFByaXZhdGVGdW5jdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShw
cm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21p
c2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNTQzLDcgKzU0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNlY3JldEJvb2xlYW4o
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqc3RhdGUs
IHRocm93U2NvcGUsIGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNl
Y3JldEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTU1Nyw3ICs1NTcsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9v
bGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwu
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw3ICsyNjgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2
YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3Zl
KHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQzLDcgKzg0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIGltcGwuaW1wbGVtZW50c01ldGhvZDEoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuaW1wbGVtZW50
c01ldGhvZDEoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtODk5LDcgKzg5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKLSAgICBUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzTWV0aG9kNCgpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtOTE2LDcgKzkxNiw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6
OnN1cHBsZW1lbnRhbE1ldGhvZDEoaW1wbCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBXZWJDb3JlOjpUZXN0U3VwcGxlbWVu
dGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC05NzIsNyArOTcyLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFdlYkNvcmU6OlRlc3RTdXBw
bGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDQoKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFdlYkNvcmU6OlRlc3RTdXBw
bGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDQoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gbGlzdGVuZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0
YXRlLCBzY29wZSwgMCwgImxpc3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwg
Im1ldGhvZCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kKGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5tZXRob2QobGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5uYW1l
ZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm5hbWVk
U2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbmFtZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm5hbWVkRGVsZXRlcihXVEZNb3ZlKG5hbWUpKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubmFtZWRE
ZWxldGVyKFdURk1vdmUobmFtZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgaW1wbC5nZXR0ZXJOYW1lKFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmdldHRlck5hbWUoV1RGTW92ZShuYW1lKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25HZXR0ZXJOYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEzLDcgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUo
bmFtZSksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIGluZGV4ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhy
b3dTY29wZSwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMzU0LDcg
KzM1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1
dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZN
b3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCksIFdU
Rk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyT3ZlcmxvYWRE
aXNwYXRjaGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcy5jcHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnVuZm9y
Z2VhYmxlT3BlcmF0aW9uKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcg
KzMxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwudW5mb3JnZWFibGVP
cGVyYXRpb24oKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC50ZXN0V29ya2VyUHJvbWlzZShX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFdvcmtlclByb21pc2UoV1RGTW92ZShw
cm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBp
bXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
Y2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEJvb2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRT
ZWNyZXRCb29sZWFuKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROb2RlUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUp
CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVh
bj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNTMs
NyArMjA1Myw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE8KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gcGFyYW0gPSBj
b252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwubGVnYWN5Q2FsbGVyTmFtZWQoV1RGTW92ZShwYXJhbSkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5sZWdh
Y3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTIwNjcsNyArMjA2Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE8KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gcGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJpbmRp
bmdzKFdURk1vdmUocGFyYW0pKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExMb25nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJv
bUJpbmRpbmdzKFdURk1vdmUocGFyYW0pKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNhbGxKU1Rlc3RPYmozKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0yMDc4LDcgKzIwNzgs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPCiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CiAgICAg
QVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgaW1wbC5sZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MoKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwubGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJpbmRpbmdzKCk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ4MzEsNyArNDgzMSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ4
NDUsNyArNDg0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gdGVzdFBh
cmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0p
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJh
bSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC00ODg5LDcgKzQ4ODksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0g
PSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQo
V1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNDkwNyw3ICs0OTA3
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLndvcmxkU3Bl
Y2lmaWNNZXRob2QoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwud29ybGRTcGVjaWZp
Y01ldGhvZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC00OTIxLDcgKzQ5MjEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlz
ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC00OTM1LDcgKzQ5MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFu
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRl
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U2VjcmV0Qm9v
bGVhbihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNDk0OSw3ICs0OTQ5LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+
KGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RG
ZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xl
YW4oRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTQ5NjQsNyArNDk2NCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIGltcGwudm9pZE1ldGhvZCgpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC52b2lkTWV0aG9k
KCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTQ5ODYsNyArNDk4Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3Mi
LCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudm9pZE1ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9u
Z0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZyk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnZvaWRNZXRob2RX
aXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01MDAw
LDcgKzUwMDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmJ5
dGVNZXRob2QoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTAyMSw3
ICs1MDIxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMiksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwg
MiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIsICJUZXN0T2Jq
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0
ZU1ldGhvZFdpdGhBcmdzKFdURk1vdmUoYnl0ZUFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFy
ZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oKnN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZN
b3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRl
KiBzdGF0ZSkKQEAgLTUwMzQsNyArNTAzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oaW1wbC5vY3RldE1ldGhv
ZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0Pigqc3RhdGUs
IHRocm93U2NvcGUsIGltcGwub2N0ZXRNZXRob2QoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKQEAgLTUwNTUsNyArNTA1NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8
VGVzdE9iaj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLCBbXShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvY3RldE1l
dGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKG9jdGV0QXJn
KSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExPY3RldD4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm9jdGV0TWV0aG9kV2l0
aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUwNjgsNyArNTA2OCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPihpbXBsLmxvbmdNZXRob2QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubG9uZ01ldGhvZCgp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Mb25nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MDg5LDcgKzUwODksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iakFy
ZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAyLCAib2JqQXJn
IiwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kV2l0
aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93U2NvcGUs
IGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQpA
QCAtNTEwMiw3ICs1MTAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5vYmpNZXRob2QoKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MTIzLDcgKzUxMjMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iakFyZyA9IGNv
bnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgyKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRl
c3RPYmplY3QiLCAib2JqTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZFdpdGhBcmdzKFdURk1vdmUo
bG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5vYmpNZXRob2RXaXRoQXJncyhXVEZN
b3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RX
aXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTEzNiw3ICs1MTM2LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+
KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVNZXRob2Qo
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNl
RnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTE1Myw3ICs1
MTUzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxJRExUcmVhdE51
bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKFdURk1vdmUoYXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nKFdURk1vdmUoYXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUxNzEsNyArNTE3MSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIHJlc29sdmVyID0gY29udmVydDxJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhO
U1Jlc29sdmVyPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIsICJYUGF0aE5TUmVzb2x2ZXIiKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKnJlc29sdmVyKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcigqcmVzb2x2ZXIp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01MTg1LDcgKzUxODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBp
bXBsLm51bGxhYmxlU3RyaW5nTWV0aG9kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBs
Lm51bGxhYmxlU3RyaW5nTWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCkBAIC01MTk3LDcgKzUxOTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgVGVzdE9iajo6bnVsbGFibGVTdHJpbmdT
dGF0aWNNZXRob2QoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxs
YWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHRocm93U2NvcGUsIFRlc3RPYmo6Om51bGxhYmxl
U3RyaW5nU3RhdGljTWV0aG9kKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTUyMTQsNyArNTIxNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIGluZGV4ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExO
dWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdTcGVjaWFs
TWV0aG9kKFdURk1vdmUoaW5kZXgpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubnVs
bGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKFdURk1vdmUoaW5kZXgpKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVT
dHJpbmdTcGVjaWFsTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01MjMxLDcgKzUyMzEsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbnVtQXJnID0gY29udmVydDxJRExFbnVtZXJhdGlv
bjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhy
b3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJlbnVtQXJnIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
PFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhFbnVtQXJnKFdU
Rk1vdmUoZW51bUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoRW51bUFyZyhXVEZNb3ZlKGVu
dW1BcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNTI0OSw3ICs1MjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZW51bUFy
ZyA9IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cihzdGF0ZSwgc2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFN0
YW5kYWxvbmVFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uPigpKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFy
ZyhXVEZNb3ZlKGVudW1BcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVt
QXJnKFdURk1vdmUoZW51bUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC01MjY1LDcgKzUyNjUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIGVudW1BcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1UeXBlPj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETEVudW1l
cmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImVudW1Bcmci
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnIiwgZXhwZWN0ZWRFbnVt
ZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7IH0pKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTI4MSw3ICs1MjgxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBlbnVtQXJnID0gc3RhdGUtPmFyZ3Vt
ZW50KDApLmlzVW5kZWZpbmVkKCkgPyBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSA6IGNv
bnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdB
bmREZWZhdWx0VmFsdWUiLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1U
eXBlPigpKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0
VmFsdWUoV1RGTW92ZShlbnVtQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVu
dW1BcmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShlbnVtQXJnKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTUzMTgsNyArNTMxOCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMVVNWU3RyaW5nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhVU1ZT
dHJpbmdBcmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFVTVlN0cmluZ0Fy
ZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCkBAIC01MzM2LDcgKzUzMzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBzdHIgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVTVlN0cmluZz4+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE51bGxhYmxlVVNWU3Ry
aW5nQXJnKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0
cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC01MzU0LDcgKzUzNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBzdHIgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0
cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0
aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoV1RGTW92ZShzdHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNTM3Miw3ICs1MzcyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gc3RyID0gY29udmVydDxJRExCeXRlU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKFdURk1vdmUo
c3RyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKFdURk1vdmUoc3RyKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTUzOTAsNyArNTM5MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8
SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhXVEZNb3Zl
KHN0cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKFdURk1v
dmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTU0MDgsNyArNTQwOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9
IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aEJ5dGVT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZN
b3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC01NDI2LDcgKzU0MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXJp
YWxpemVkQXJnID0gY29udmVydDxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1w
bC5zZXJpYWxpemVkVmFsdWUoV1RGTW92ZShzZXJpYWxpemVkQXJnKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNl
cmlhbGl6ZWRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6ZWRBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTQ0NCw3ICs1NDQ0LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGF1dG8gcmVjb3JkUGFyYW1ldGVyID0gY29udmVydDxJRExSZWNv
cmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoUmVjb3JkKFdURk1vdmUocmVjb3JkUGFyYW1ldGVy
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhSZWNvcmQoV1RGTW92ZShyZWNvcmRQYXJhbWV0ZXIp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNTQ1OCw3ICs1NDU4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcHJvcGFn
YXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9u
KCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uKCk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU1MjYsNyArNTUyNiw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZ3VtZW50ID0gY29udmVydDxJRExET01TdHJpbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wcml2YXRlTWV0aG9kKFdU
Rk1vdmUoYXJndW1lbnQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5wcml2YXRlTWV0aG9kKFdURk1vdmUo
YXJndW1lbnQpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNTU0
Myw3ICs1NTQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJndW1lbnQgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnB1
YmxpY0FuZFByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBs
LnB1YmxpY0FuZFByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNB
bmRQcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NTY0LDcgKzU1NjQsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHVzZUNhcHR1
cmUgPSBjb252ZXJ0PElETEJvb2xlYW4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwuYWRkRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
V1RGTW92ZSh1c2VDYXB0dXJlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmFkZEV2ZW50TGlzdGVuZXIoV1RGTW92
ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NTg2LDcg
KzU1ODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBh
dXRvIHVzZUNhcHR1cmUgPSBjb252ZXJ0PElETEJvb2xlYW4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgV1RGTW92ZSh1c2VDYXB0dXJlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUodXNl
Q2FwdHVyZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC01NjAwLDcgKzU2MDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWQoKnN0YXRlKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwud2l0aFNjcmlw
dFN0YXRlVm9pZCgqc3RhdGUpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC01NjE0LDcgKzU2MTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RP
Ymo+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0
U3RhdGVPYmooKnN0YXRlKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJ
bnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRTdGF0ZU9iaigqc3RhdGUpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0U3RhdGVPYmooRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTU2MjcsNyArNTYyNyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93
U2NvcGUsIGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbigqc3RhdGUpKTsKKyAgICBW
b2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbigqc3RhdGUpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01NjU3LDcgKzU2NTcs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKmNvbnRleHQpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01Njc0LDcgKzU2NzQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byogY29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFjb250
ZXh0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKnN0YXRlLCAq
Y29udGV4dCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGUoKnN0YXRlLCAqY29udGV4dCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU3MDcsNyArNTcwNyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzKCpzdGF0ZSwgKmNvbnRleHQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCAqY29udGV4dCkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSog
c3RhdGUpCkBAIC01NzI1LDcgKzU3MjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAgIGltcGwud2l0aERvY3VtZW50
QXJndW1lbnQoZG9jdW1lbnQpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC53aXRoRG9jdW1lbnRBcmd1bWVudChkb2N1
bWVudCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTU3NDIsNyArNTc0Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvKiBpbmN1bWJlbnREb2N1bWVudCA9IGluY3VtYmVudERPTVdpbmRv
dygqc3RhdGUpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFpbmN1bWJlbnREb2N1bWVudCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLndpdGhD
YWxsZXJEb2N1bWVudEFyZ3VtZW50KCppbmN1bWJlbnREb2N1bWVudCk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLndp
dGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KCppbmN1bWJlbnREb2N1bWVudCk7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU3NTYsNyArNTc1
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwud2l0aENhbGxlcldpbmRv
d0FyZ3VtZW50KGluY3VtYmVudERPTVdpbmRvdygqc3RhdGUpKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwud2l0aENh
bGxlcldpbmRvd0FyZ3VtZW50KGluY3VtYmVudERPTVdpbmRvdygqc3RhdGUpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTc3Miw3ICs1
NzcyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvcHQgPSBzdGF0ZS0+
YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExv
bmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJnKFdURk1vdmUob3B0KSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhXVEZNb3ZlKG9wdCkpOyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01Nzg4LDcgKzU3
ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9wdCA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gNjY2IDogY29udmVydDxJRExMb25nPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEFyZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKG9wdCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShvcHQpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTgwOCw3ICs1ODA4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvcHQg
PSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVy
dGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURM
TG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKG5vbk9wdCksIFdURk1v
dmUob3B0KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTU4MzAsNyArNTgzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIGF1dG8gb3B0MiA9IHN0YXRlLT5hcmd1bWVudCgyKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExM
b25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQpLCBX
VEZNb3ZlKG9wdDEpLCBXVEZNb3ZlKG9wdDIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQx
KSwgV1RGTW92ZShvcHQyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTU4NDYsNyArNTg0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBT
dHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhXVEZNb3ZlKHN0
cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoV1RGTW92ZShzdHIpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NTg2Miw3ICs1ODYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJ
RExVU1ZTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKFdURk1vdmUoc3RyKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01ODc4LDcgKzU4Nzgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbWljU3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyhXVEZNb3ZlKHN0
cikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmcoV1RGTW92ZShz
dHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNTg5NCw3ICs1ODk0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IEFTQ0lJTGl0ZXJhbCgi
Zm9vIikgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFs
dWUoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5k
RGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5MTAsNyArNTkxMCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkKCkgPyBBdG9taWNTdHJpbmcoImZvbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpIDogY29udmVydDxJRExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3Zl
KHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC01OTI2LDcgKzU5MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBj
b252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwoV1RGTW92ZShzdHIpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTU5NDIsNyArNTk0Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3Ry
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoV1RGTW92ZShzdHIpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoV1RGTW92ZShz
dHIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNTk1OCw3ICs1OTU4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IG51bGxBdG9tKCkgOiBj
b252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9t
aWNTdHJpbmdJc051bGwoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsQXRvbWljU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5NzQsNyArNTk3NCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5OTAsNyAr
NTk5MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogY29udmVydDxJRExV
U1ZTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1v
dmUoc3RyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTYwMDYsNyArNjAwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBlbXB0eUF0b20o
KSA6IGNvbnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
MDIyLDcgKzYwMjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJl
ciA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKFdURk1vdmUobnVt
YmVyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKFdURk1vdmUo
bnVtYmVyKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTYwMzgsNyArNjAzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gY29udmVydDxJRExVbnJlc3RyaWN0ZWRGbG9hdD4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKFdU
Rk1vdmUobnVtYmVyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4o
V1RGTW92ZShudW1iZXIpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjA1NCw3ICs2MDU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBudW1iZXIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/
IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmdMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmdMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjA3MCw3ICs2
MDcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252
ZXJ0PElETExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYw
ODYsNyArNjA4Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVy
ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZl
cnRlcjxJRExVbnNpZ25lZExvbmdMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8
Q29udmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVu
c2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhXVEZNb3Zl
KG51bWJlcikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02MTAyLDcgKzYxMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG51bWJlciA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdM
b25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8oV1RGTW92ZShudW1iZXIpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjExOCw3ICs2MTE4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElETFNlcXVlbmNlPElETERPTVN0cmlu
Zz4+OjpSZXR1cm5UeXBleyB9IDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbFNlcXVlbmNlKFdURk1vdmUoYXJyYXkpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsU2VxdWVuY2UoV1RGTW92ZShhcnJheSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MTM0LDcgKzYxMzQsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGFycmF5ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlz
VW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj46OlJldHVy
blR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VJc0VtcHR5KFdURk1vdmUoYXJyYXkpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2VJc0VtcHR5KFdURk1vdmUoYXJyYXkpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjE1MCw3ICs2MTUwLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBiID0gc3RhdGUtPmFyZ3VtZW50KDApLmlz
VW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJu
VHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETEJvb2xlYW4+OjpSZXR1cm5UeXBl
Pihjb252ZXJ0PElETEJvb2xlYW4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxNjYsNyArNjE2
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURM
Qm9vbGVhbj4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuSXNGYWxzZShXVEZNb3ZlKGIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoV1RGTW92ZShiKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxODIsNyArNjE4Miw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMQW55Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFueShX
VEZNb3ZlKGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQW55KFdURk1vdmUoYSkp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02MTk4LDcgKzYxOTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVy
dGVyPElETE9iamVjdD46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJ
RExPYmplY3Q+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETE9iamVjdD4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0
KFdURk1vdmUoYSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoV1RGTW92
ZShhKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTYyMTQsNyArNjIxNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gb2JqID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAw
LCAib2JqIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVy
IiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlcihXVEZNb3ZlKG9iaikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZVdyYXBwZXIoV1RGTW92ZShvYmopKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjIzMCw3ICs2MjMwLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBvYmogPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFj
ZTxUZXN0T2JqPj4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXJJc051bGwiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKFdURk1vdmUob2JqKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChXVEZNb3ZlKG9iaikp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC02MjQ2LDcgKzYyNDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHJl
c29sdmVyID0gY29udmVydDxJRExOdWxsYWJsZTxJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jl
c29sdmVyPj4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsIDAsICJyZXNvbHZlciIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbFhQYXRoTlNSZXNvbHZlciIsICJYUGF0aE5TUmVzb2x2ZXIiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihXVEZNb3ZlKHJlc29sdmVyKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihXVEZNb3ZlKHJlc29sdmVy
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTYyNjIsNyArNjI2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
cmVjb3JkID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om51bGxvcHQg
OiBjb252ZXJ0PElETE51bGxhYmxlPElETFJlY29yZDxJRExET01TdHJpbmcsIElETExvbmc+Pj4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsUmVjb3JkKFdURk1vdmUocmVjb3JkKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYyODAsNyArNjI4MCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25F
cnJvcihzdGF0ZSwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhDYWxsYmFja0FyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxi
YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBcmco
Y2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYzMDAsNyArNjMwMCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0
PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMSwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKFdURk1v
dmUobm9uQ2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBWb2lkT3Bl
cmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoV1RGTW92ZShub25DYWxsYmFj
ayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzE2LDcgKzYzMTYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJs
ZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+Pigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTYzMzQsNyArNjMzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKGNhbGxi
YWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkBAIC02MzU0LDcgKzYzNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9u
QXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhX
VEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYzNzAsNyAr
NjM3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBj
b252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbj4+Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlv
bmFsQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlv
bmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYzODUsNyArNjM4NSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFi
bGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKnN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRl
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBUZXN0T2Jq
OjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTY0MDIsNyArNjQwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCAqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIFtdKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRp
Y01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFRlc3RPYmo6
OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NjQxNyw3ICs2NDE3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLmNvbmRpdGlvbmFs
TWV0aG9kMSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMSgpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTY0MzMsNyArNjQzMyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7
CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NDUwLDcgKzY0NTAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMygpOworICAg
IFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjQ3MCw3ICs2NDcwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShzdHJBcmcpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUoc3Ry
QXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTY0ODMsNyArNjQ4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGF1dG8gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExM
b25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVy
bG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25nQXJnKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NjQ5NCw3ICs2NDk0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHJB
cmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJnKSk7CisgICAg
Vm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcpKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjUwNSw3ICs2NTA1LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxJ
RExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShsb25nQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRN
ZXRob2QoV1RGTW92ZShsb25nQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTY1MTYsNyArNjUxNiw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJm
YWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjay5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjay5y
ZWxlYXNlTm9uTnVsbCgpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNjUyNyw3ICs2NTI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBsaXN0QXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8
RE9NU3RyaW5nTGlzdD4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAibGlzdEFyZyIsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiLCAiRE9NU3RyaW5nTGlzdCIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3Zlcmxv
YWRlZE1ldGhvZChXVEZNb3ZlKGxpc3RBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhv
ZChXVEZNb3ZlKGxpc3RBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNjUzOCw3ICs2NTM4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBhcnJheUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVu
Y2U8SURMRE9NU3RyaW5nPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTQ5LDcgKzY1NDksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50
ZXJmYWNlPFRlc3RPYmo+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0
aG9kKCpvYmpBcmcpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpvYmpBcmcpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTYw
LDcgKzY1NjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHdpbmRvdyA9
IGNvbnZlcnQ8SURMSW50ZXJmYWNlPERPTVdpbmRvdz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJ3aW5kb3ci
LCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkRPTVdpbmRvdyIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1l
dGhvZCgqd2luZG93KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNjU3MSw3ICs2NTcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBhcnJheUFyZyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVk
TWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxs
KCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChX
VEZNb3ZlKGFycmF5QXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTY1ODIsNyArNjU4Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gYXJyYXlBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETFVuc2lnbmVk
TG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3Zl
cmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxl
cjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRN
ZXRob2QoV1RGTW92ZShhcnJheUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTkzLDcgKzY1OTMsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIHN0ckFyZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRo
b2QoV1RGTW92ZShzdHJBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3Zl
KHN0ckFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02NjA0LDcgKzY2MDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGJsb2JBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxC
bG9iPj4oKnN0YXRlLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGJsb2JB
cmdzKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
NjY5LDcgKzY2NjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RP
Ymo+Pj4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKHN0ckFyZyksIFdURk1vdmUob2JqQXJn
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RG
TW92ZShzdHJBcmcpLCBXVEZNb3ZlKG9iakFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NjgyLDcgKzY2ODIsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0
ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElE
TExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46
OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cihXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykpOworICAgIFZvaWRPcGVyYXRpb25D
YWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9h
ZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShs
b25nQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTY3MjQsNyArNjcyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gb2JqZWN0T3JOb2RlID0gY29udmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdE9i
aj4sIElETEludGVyZmFjZTxUZXN0Tm9kZT4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlv
bihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0
aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjczNSw3ICs2NzM1
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8
SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5v
dmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZSh2YWx1ZSkpOwor
ICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92
ZSh2YWx1ZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC02NzcxLDcgKzY3NzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG9iamVjdE9yTm9kZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RP
Ymo+LCBJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1Vu
aW9ucyhXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9k
V2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NzgyLDcg
KzY3ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHZhbHVlID0gY29u
dmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdEludGVyZmFjZT4sIElETERPTVN0cmluZywg
SURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZSh2YWx1ZSkp
OworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhX
VEZNb3ZlKHZhbHVlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTY4MjIsNyArNjgyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gY29udmVydDxJRExJbnRlcmZhY2U8
VGVzdE9iaj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBbXShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJvYmplY3QiLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24iLCAiVGVzdE9iaiIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUo
b2JqZWN0T3JOb2RlKSwgKm9iamVjdCk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgq
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRo
Tm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSksICpvYmplY3QpOyB9
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02
ODM1LDcgKzY4MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIG5vZGUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0Tm9kZT4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIDEsICJub2RlIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0
aW5ndWlzaGluZ1VuaW9uIiwgIlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0
aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpLCAqbm9k
ZSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlv
bihXVEZNb3ZlKG9iamVjdE9yTm9kZSksICpub2RlKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjg2OCw3ICs2ODY4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmplY3RPck5vZGUgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETFVuaW9uPElETEludGVyZmFjZTxUZXN0T2JqPiwgSURMSW50ZXJmYWNlPFRlc3RO
b2RlPj4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm92
ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwub3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02ODc5
LDcgKzY4NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGluZGV4ID0g
Y29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShpbmRleCkpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUoaW5kZXgpKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjkxNyw3ICs2
OTE3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvYmplY3RPck5vZGUg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHRydWUgOiBjb252ZXJ0PElETFVu
aW9uPElETERPTVN0cmluZywgSURMQm9vbGVhbj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9i
amVjdE9yTm9kZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdURk1v
dmUob2JqZWN0T3JOb2RlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKQEAgLTY5MjgsNyArNjkyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihX
VEZNb3ZlKGluZGV4KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RG
TW92ZShpbmRleCkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC02OTY5LDcgKzY5NjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG5vZGUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0
Tm9kZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBbXShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDEsICJub2RlIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRXaXRo
TnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlciIsICJUZXN0Tm9kZSIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZN
b3ZlKG9iaiksICpub2RlKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0
aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3ZlKG9iaiksICpub2RlKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjk4Miw3ICs2OTgyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBpbmRl
eCA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVy
KFdURk1vdmUobm9kZSksIFdURk1vdmUoaW5kZXgpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRo
TnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3ZlKG5vZGUpLCBXVEZNb3Zl
KGluZGV4KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTcwMTMsNyArNzAxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKLSAgICBUZXN0T2JqOjpjbGFzc01ldGhvZCgpOworICAgIFZvaWRPcGVy
YXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gVGVzdE9i
ajo6Y2xhc3NNZXRob2QoKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIApAQCAtNzAyOCw3ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvIGFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25h
bDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZl
cnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETExvbmc+KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKFdURk1vdmUoYXJnKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKnN0YXRlLCB0aHJv
d1Njb3BlLCBUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03MDU1
LDcgKzcwNTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxJRExM
b25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBUZXN0T2JqOjpv
dmVybG9hZGVkTWV0aG9kMShXVEZNb3ZlKGFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6
OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gVGVzdE9iajo6b3ZlcmxvYWRl
ZE1ldGhvZDEoV1RGTW92ZShhcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzA2OCw3ICs3MDY4LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvIHR5cGUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoV1RGTW92
ZSh0eXBlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBUZXN0T2JqOjpvdmVybG9hZGVkTWV0aG9kMShXVEZNb3ZlKHR5cGUp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNzExNCw3ICs3MTE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETFVu
c2lnbmVkTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwuY2xhc3NNZXRob2RXaXRoQ2xhbXAoV1RGTW92ZShvYmpBcmdzU2hvcnQpLCBXVEZNb3ZlKG9i
akFyZ3NMb25nKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wKFdURk1vdmUob2Jq
QXJnc1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9uZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MTMwLDcgKzcxMzAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9iakFyZ3NMb25nID0gY29udmVydDxJRExD
bGFtcEFkYXB0b3I8SURMTG9uZz4+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwuY2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcpKTsK
KyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwuY2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKFdURk1vdmUob2JqQXJn
c0xvbmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNzE1MCw3ICs3MTUwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMRW5mb3JjZVJhbmdl
QWRhcHRvcjxJRExVbnNpZ25lZExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShXVEZNb3ZlKG9iakFy
Z3NTaG9ydCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVy
OjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlKFdURk1vdmUob2JqQXJnc1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9u
ZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CkBAIC03MTY2LDcgKzcxNjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG9iakFyZ3NMb25nID0gY29udmVydDxJRExFbmZvcmNlUmFuZ2VBZGFwdG9yPElETExvbmc+Pigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZU9uT3B0aW9uYWwoV1RGTW92ZShvYmpBcmdzTG9uZykpOworICAgIFZvaWRPcGVyYXRp
b25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jbGFz
c01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzE4NCw3ICs3MTg0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdW5zaWduZWRMb25nU2Vx
dWVuY2UgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETFVuc2lnbmVkTG9uZz4+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwubWV0aG9kV2l0aFVuc2lnbmVkTG9u
Z1NlcXVlbmNlKFdURk1vdmUodW5zaWduZWRMb25nU2VxdWVuY2UpKTsKKyAgICBWb2lkT3BlcmF0
aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwubWV0
aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKFdURk1vdmUodW5zaWduZWRMb25nU2VxdWVuY2Up
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNzIzNCw3ICs3MjM0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBv
cHRpb25hbFVuaW9uID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9w
dGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNlPElETFVu
cmVzdHJpY3RlZERvdWJsZT4+Pjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVy
dGVyPElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMVW5yZXN0cmljdGVkRG91
YmxlPj4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuaW9uPElETERPTVN0cmluZywgSURMU2Vx
dWVuY2U8SURMVW5yZXN0cmljdGVkRG91YmxlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBpbXBsLm9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVy
KFdURk1vdmUob3B0aW9uYWxVbmlvbikpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9u
YWxVbmlvblBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFsVW5pb24pKTsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzI1NCw3ICs3MjU0LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBudWxs
YWJsZUFycmF5QXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExTZXF1ZW5jZTxJRExVbnNpZ25l
ZExvbmc+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdU
Rk1vdmUobnVsbGFibGVBcnJheUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdURk1vdmUobnVsbGFibGVBcnJh
eUFyZykpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC03MjcyLDcgKzcyNzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbGVtZW50
SWQgPSBjb252ZXJ0PElETFJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJ
ZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETE51bGxhYmxlPElETEludGVyZmFjZTxFbGVtZW50Pj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUo
ZWxlbWVudElkKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03
MzAyLDcgKzczMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8
SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgInZhbHVlIiwgIlRlc3RPYmpl
Y3QiLCAiY29udmVydDEiLCAiVGVzdE5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNvbnZlcnQxKCp2YWx1
ZSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLmNvbnZlcnQxKCp2YWx1ZSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTczMjAsNyArNzMyMCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZh
Y2U8VGVzdE5vZGU+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgInZhbHVlIiwgIlRlc3RPYmplY3QiLCAiY29u
dmVydDIiLCAiVGVzdE5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNvbnZlcnQyKFdURk1vdmUodmFsdWUp
KTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuY29udmVydDIoV1RGTW92ZSh2YWx1ZSkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MzM4LDcgKzczMzgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmNvbnZlcnQzKFdU
Rk1vdmUodmFsdWUpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29udmVydDMoV1RGTW92ZSh2YWx1ZSkpOyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03MzU2
LDcgKzczNTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5jb252ZXJ0NChXVEZNb3ZlKHZhbHVlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNvbnZl
cnQ0KFdURk1vdmUodmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApAQCAtNzM3MCw3ICs3MzcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQ
b2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm11dGFibGVQ
b2ludEZ1bmN0aW9uKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50
ZXJmYWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTczODMsNyArNzM4Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIGltcGwuYmFuYW5hKCk7CisgICAgVm9pZE9wZXJhdGlvbkNh
bGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmJhbmFuYSgp
OyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC03NDAzLDcgKzc0MDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQp
LCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92
ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc0MjMsNyArNzQyMyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRp
Y0FyZ3VtZW50czxJRExVbnJlc3RyaWN0ZWREb3VibGU+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnZh
cmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOworICAgIFZv
aWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC52YXJpYWRpY0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzQ0Myw3ICs3NDQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxO
b2RlPj4oKnN0YXRlLCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZN
b3ZlKHRhaWwpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3Zl
KHRhaWwpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNzQ2Myw3ICs3NDYzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETFVu
aW9uPElETEludGVyZmFjZTxOb2RlPiwgSURMRE9NU3RyaW5nPj4oKnN0YXRlLCAxKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwudmFyaWFkaWNVbmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwudmFyaWFkaWNVbmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwp
KTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApA
QCAtNzQ4Myw3ICs3NDgzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgYXV0byBiID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmFueShXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpKTsKKyAg
ICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwuYW55KFdURk1vdmUoYSksIFdURk1vdmUoYikpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NDk3LDcgKzc0OTcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24oV1RG
TW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24oV1RGTW92ZShw
cm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKQEAgLTc1MTUsNyArNzUxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGEgPSBj
b252ZXJ0PElETEZsb2F0Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChXVEZNb3ZlKGEpLCBX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9h
dEFyZ3VtZW50KFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03NTI5LDcgKzc1MjksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRl
LCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1v
dmUocHJvbWlzZSkpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b24oV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTc1NDUsNyArNzU0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
c3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9w
dGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9t
aXNlKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1
bWVudChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzU2MSw3ICs3NTYxLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExGbG9hdD4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbihXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBWb2lk
T3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oV1RGTW92ZShhKSwgV1RGTW92ZShwcm9t
aXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTc1NzIsNyArNzU3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gcmVxdWVzdCA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPEZldGNoUmVxdWVzdD4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIDAsICJyZXF1ZXN0IiwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24iLCAiRmV0Y2hSZXF1ZXN0Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2Fk
ZWRGdW5jdGlvbigqcmVxdWVzdCwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKCpyZXF1ZXN0LCBXVEZNb3ZlKHByb21pc2UpKTsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzYw
Myw3ICs3NjAzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwotICAgIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24oV1RGTW92ZShwcm9taXNl
KSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBUZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJv
bWlzZSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC03NjE2LDcgKzc2MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwg
VGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oV1RGTW92ZShw
cm9taXNlKSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhF
eGNlcHRpb24oV1RGTW92ZShwcm9taXNlKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc2NjYsNyArNzY2Niw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNl
PElETFZvaWQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC50ZXN0
UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbigpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVm9pZD4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZXR1cm5zT3duUHJv
bWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RSZXR1cm5zT3duUHJvbWlz
ZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC03NjgyLDcgKzc2
ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBp
bXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29uZGl0
aW9uYWxPdmVybG9hZChXVEZNb3ZlKHN0cikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03Njk2LDcgKzc2OTYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuY29uZGl0aW9uYWxPdmVybG9hZChX
VEZNb3ZlKGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKGEpKTsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAt
NzczOCw3ICs3NzM4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7Cisg
ICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLnNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzc1MCw3
ICs3NzUwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gY29udmVy
dDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBs
LnNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7CisgICAgVm9pZE9wZXJhdGlv
bkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTc3ODgsNyArNzc4OCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIGluaXQgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwuYXR0YWNoU2hhZG93Um9vdChXVEZNb3ZlKGluaXQpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2Fs
bGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuYXR0YWNoU2hh
ZG93Um9vdChXVEZNb3ZlKGluaXQpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzgwNiw3ICs3ODA2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gZGljdCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm9wZXJhdGlv
bldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoV1RGTW92ZShkaWN0KSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLm9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoV1RGTW92ZShkaWN0
KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTc4MjQsNyArNzgyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGRhdGEgPSBjb252
ZXJ0PElETFVuaW9uPElETEFycmF5QnVmZmVyVmlldywgSURMQXJyYXlCdWZmZXI+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmJ1ZmZlclNvdXJjZVBhcmFt
ZXRlcihXVEZNb3ZlKGRhdGEpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuYnVmZmVyU291cmNlUGFyYW1ldGVyKFdU
Rk1vdmUoZGF0YSkpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC03ODQyLDcgKzc4NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBw
YXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5sZWdhY3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLmxlZ2FjeUNhbGxlck5hbWVkKFdURk1vdmUocGFyYW0pKTsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzg2Myw3ICs3ODYzLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBiID0gY29u
dmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJiIiwgIlRlc3RPYmplY3Qi
LCAidGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnRl
c3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbigqYSwgKmIpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC50ZXN0UmV0dXJu
VmFsdWVPcHRpbWl6YXRpb24oKmEsICpiKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTc4ODQsNyArNzg4NCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURMSW50ZXJm
YWNlPE5vZGU+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgW10oSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAxLCAiYiIsICJUZXN0T2JqZWN0IiwgInRlc3RSZXR1cm5W
YWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24iLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwudGVzdFJldHVyblZhbHVlT3B0aW1p
emF0aW9uV2l0aEV4Y2VwdGlvbigqYSwgKmIpKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpj
YWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFJldHVyblZhbHVl
T3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbigqYSwgKmIpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJldHVyblZhbHVlKTsKIH0KIApAQCAtNzg5OCw3ICs3ODk4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
RnVuY3Rpb24oKTsKKyAgICBWb2lkT3BlcmF0aW9uQ2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0
aW9uKCk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKQEAgLTc5MTIsNyArNzkxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlt
cGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKCk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbigpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC03OTI2LDcgKzc5MjYsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
aW5kb3dBbmRXb3JrZXJGdW5jdGlvbigpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwo
KnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5jb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24oKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzk0MCw3ICs3OTQwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVTVlN0
cmluZz4oKnN0YXRlLCBpbXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwuc3RyaW5naWZpZXJBdHRyaWJ1dGUoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDIy
NTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWls
dGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB2YWx1
ZSA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZnVuY3Rp
b24oV1RGTW92ZSh2YWx1ZSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jdGlvbihXVEZNb3ZlKHZhbHVlKSk7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAg
LTMyNyw3ICszMjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmZ1bmN0
aW9uUmV0dXJuaW5nKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2Vy
aWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmZ1bmN0aW9uUmV0dXJuaW5n
KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEV4
ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
RE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9TdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50b1N0
cmluZygpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5j
cHAJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwudG9T
dHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC50b1N0cmluZygpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMjUx
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZp
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigq
c3RhdGUsIGltcGwuaWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZpZXIoKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzLmNwcAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmFs
dGVybmF0ZUlkZW50aWZpZXIoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9u
SWRlbnRpZmllcihFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpzdGF0ZSwgaW1wbC5hbHRlcm5hdGVJZGVudGlmaWVyKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVu
Y3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnRvU3RyaW5n
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHRocm93U2NvcGUsIGltcGwudG9TdHJpbmcoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTky
LDcgKzE5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRo
cm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIx
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pZGVudGlmaWVyKCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIHRocm93U2Nv
cGUsIGltcGwuaWRlbnRpZmllcigpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHggPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNV
bmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExTZXF1ZW5jZTxJRExMb25nPj46OlJldHVyblR5cGV7
IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElETExvbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmZ1bmMoV1RGTW92ZSh4KSk7CisgICAgVm9pZE9wZXJh
dGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLmZ1
bmMoV1RGTW92ZSh4KSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKQEAgLTUwOCw3ICs1MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGFscGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLmlzVW5k
ZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46
OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRG
bG9hdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLnNldFNoYWRvdyhXVEZNb3Zl
KHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3ZlKGJsdXIpLCBXVEZNb3ZlKGNvbG9yKSwg
V1RGTW92ZShhbHBoYSkpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRTaGFkb3coV1RGTW92ZSh3aWR0aCksIFdU
Rk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyKSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUoYWxw
aGEpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IApAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcXVlbmNlQXJn
ID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBsLm1l
dGhvZFdpdGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRlLCB0aHJvd1Nj
b3BlLCBpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC01NDMs
NyArNTQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0
PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VBcmcoV1RGTW92
ZShzZXF1ZW5jZUFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNhbGwoKnN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNlQXJnKFdURk1vdmUo
c2VxdWVuY2VBcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTYxLDcgKzU2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNl
cXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+
Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5zZXF1ZW5j
ZU9mTnVsbGFibGVzQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsKKyAgICBWb2lkT3BlcmF0aW9u
Q2FsbGVyOjpjYWxsKCpzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2VxdWVu
Y2VPZk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU3OSw3ICs1NzksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxl
c0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2Fs
bCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VP
Zk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
U2VxdWVuY2U8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+
Pj4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm51bGxh
YmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7CisgICAgVm9pZE9w
ZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
Lm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTYxNSw3
ICs2MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB1bmlvbkFyZyA9IGNvbnZlcnQ8SURM
VW5pb248SURMRE9NU3RyaW5nLCBJRExMb25nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaW1wbC51bmlvbkFyZyhXVEZNb3ZlKHVuaW9uQXJnKSk7CisgICAgVm9p
ZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnVuaW9uQXJnKFdURk1vdmUodW5pb25BcmcpKTsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gYXJnMiA9IHN0YXRlLT5h
cmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMQ2xh
bXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0
aW9uYWw8Q29udmVydGVyPElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5mdW5jV2l0aENs
YW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikpOworICAgIFZvaWRPcGVyYXRpb25DYWxs
ZXI6OmNhbGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jV2l0aENs
YW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikpOyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwuZnVuY1dpdGhD
bGFtcEluVHlwZWRlZihXVEZNb3ZlKGFyZykpOworICAgIFZvaWRPcGVyYXRpb25DYWxsZXI6OmNh
bGwoKnN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5mdW5jV2l0aENsYW1wSW5U
eXBlZGVmKFdURk1vdmUoYXJnKSk7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1Bv
aW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9pbnRGdW5j
dGlvbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxT
VkdQb2ludD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLnBvaW50RnVuY3Rpb24oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2Vx
dWVuY2VBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0RXZlbnRUYXJn
ZXQ+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuY2FsbFdpdGhTZXF1ZW5jZVRoYXRS
ZXF1aXJlc0luY2x1ZGUoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5jYWxs
V2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoRXhlY1N0YXRlKiBz
dGF0ZSkKQEAgLTczMSw3ICs3MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBw
cm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNl
cHRpb24oKSk7CisgICAgVm9pZE9wZXJhdGlvbkNhbGxlcjo6Y2FsbCgqc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oKTsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU01lZGlhUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU01lZGlhUnVsZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw2IEBAIGlu
dGVyZmFjZSBDU1NNZWRpYVJ1bGUgOiBDU1NSdWxlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFMaXN0IG1lZGlhOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NS
dWxlczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxl
KG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgaW5kZXggPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVs
ZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgdW5zaWduZWQgbG9uZyBp
bnNlcnRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICB2b2lkIGRlbGV0ZVJ1bGUob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAg
KzMwLDEwIEBACiAKICAgICBET01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01TdHJpbmcgcHJv
cGVydHlOYW1lKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0
cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKKyAgICBbQ0VSZWFj
dGlvbnNdIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsK
ICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHByb3BlcnR5TmFt
ZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByb3Bl
cnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBwcmlvcml0eSA9ICIiKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgc2V0UHJvcGVydHkoRE9N
U3RyaW5nIHByb3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
dmFsdWUsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHByaW9y
aXR5ID0gIiIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwogICAgIGdldHRlciBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIs
MTMgKzIyLDEzIEBAIGludGVyZmFjZSBDU1NTdHlsZVNoZWV0IDogU3R5bGVTaGVldCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGUgb3duZXJSdWxlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5z
aWduZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxlLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIGluZGV4ID0gMCk7CisgICAgdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBy
dWxlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB2b2lk
IGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ1NTUnVsZUxpc3QgcnVsZXM7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBvcGVyYXRp
b25zIGFyZSBXZWJLaXQtc3BlY2lmaWMuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGFk
ZFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5lZCIsIG9wdGlvbmFs
IERPTVN0cmluZyBzdHlsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlUnVsZShvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgbG9uZyBhZGRSdWxlKG9wdGlvbmFsIERPTVN0
cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJpbmcgc3R5bGUgPSAi
dW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9pZCByZW1v
dmVSdWxlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDYgQEAgaW50ZXJmYWNlIENTU1N1cHBvcnRzUnVsZSA6IENTU1J1bGUgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGNvbmRpdGlvblRleHQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBpbmRleCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVS
dWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShE
T01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIHZv
aWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NTWF0cml4LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKICAgICBFeHBvc2Vk
PShXaW5kb3csV29ya2VyKSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiAgXSBpbnRl
cmZhY2UgRE9NTWF0cml4IDogRE9NTWF0cml4UmVhZE9ubHkgewotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21NYXRyaXgob3B0aW9uYWwgRE9N
TWF0cml4SW5pdCBvdGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0
YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZs
b2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CisgICAgW05ld09iamVjdF0gc3RhdGlj
IERPTU1hdHJpeCBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOworICAg
IFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJy
YXkgYXJyYXkzMik7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQ2
NEFycmF5KEZsb2F0NjRBcnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMg
YXJlIHNpbXBsZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4
CiAgICAgaW5oZXJpdCBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAvLyBBbGlhcyBm
b3IgbTExLgpAQCAtNjIsOCArNjIsOCBAQAogICAgIGluaGVyaXQgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGUgbTQ0OwogCiAgICAgLy8gTXV0YWJsZSB0cmFuc2Zvcm0gbWV0aG9kcwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NTWF0cml4IG11bHRpcGx5U2VsZihvcHRpb25hbCBET01N
YXRyaXhJbml0IG90aGVyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTU1hdHJpeCBwcmVN
dWx0aXBseVNlbGYob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgRE9NTWF0cml4
IG11bHRpcGx5U2VsZihvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBET01NYXRy
aXggcHJlTXVsdGlwbHlTZWxmKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwogICAgIERP
TU1hdHJpeCB0cmFuc2xhdGVTZWxmKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgdHggPSAw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgdHkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJp
Y3RlZCBkb3VibGUgdHogPSAwKTsKQEAgLTkwLDUgKzkwLDUgQEAKICAgICBET01NYXRyaXggc2tl
d1lTZWxmKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgc3kgPSAwKTsgLy8gQW5nbGUgaXMg
aW4gZGVncmVlcy4KICAgICBET01NYXRyaXggaW52ZXJ0U2VsZigpOwogCi0gICAgW0V4cG9zZWQ9
V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1zZXRNYXRyaXhWYWx1ZUZv
ckJpbmRpbmdzXSBET01NYXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRyYW5zZm9ybUxp
c3QpOworICAgIFtFeHBvc2VkPVdpbmRvdywgSW1wbGVtZW50ZWRBcz1zZXRNYXRyaXhWYWx1ZUZv
ckJpbmRpbmdzXSBET01NYXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRyYW5zZm9ybUxp
c3QpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAko
cmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogICAgIEV4cG9zZWQ9KFdpbmRv
dyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIERP
TU1hdHJpeFJlYWRPbmx5IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3Rh
dGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBv
dGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRy
aXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZy
b21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOworICAgIFtOZXdPYmplY3RdIHN0
YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQg
b3RoZXIpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxv
YXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMg
RE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7
CiAKICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBmb3IgY2VydGFp
biBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJpeAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIGE7IC8vIEFsaWFzIGZvciBtMTEuCkBAIC04OCwxNSArODgsMTUgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVz
dHJpY3RlZCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBb
TmV3T2JqZWN0XSBET01NYXRyaXggc2tld1gob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBz
eCA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAgIFtOZXdPYmplY3RdIERPTU1hdHJp
eCBza2V3WShvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlz
IGluIGRlZ3JlZXMuCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIERPTU1hdHJp
eCBtdWx0aXBseShvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBbTmV3T2JqZWN0
XSBET01NYXRyaXggbXVsdGlwbHkob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CiAgICAg
W05ld09iamVjdF0gRE9NTWF0cml4IGZsaXBYKCk7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4
IGZsaXBZKCk7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGludmVyc2UoKTsKIAogICAgIFtO
ZXdPYmplY3RdIERPTVBvaW50IHRyYW5zZm9ybVBvaW50KG9wdGlvbmFsIERPTVBvaW50SW5pdCBw
b2ludCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBGbG9hdDMyQXJyYXkgdG9GbG9hdDMyQXJy
YXkoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEZsb2F0NjRBcnJheSB0b0Zsb2F0NjRBcnJh
eSgpOworICAgIEZsb2F0MzJBcnJheSB0b0Zsb2F0MzJBcnJheSgpOworICAgIEZsb2F0NjRBcnJh
eSB0b0Zsb2F0NjRBcnJheSgpOwogCi0gICAgW0V4cG9zZWQ9V2luZG93LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gc3RyaW5naWZpZXI7CisgICAgW0V4cG9zZWQ9V2luZG93XSBzdHJpbmdpZmllcjsKICAg
ICBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwxMyBAQAogICAgIAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwcmltaXRpdmVUeXBlOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hv
cnQgdW5pdFR5cGUgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9
IE5hTik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Rmxv
YXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOworICAgIHZvaWQg
c2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDAsIG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKKyAgICB1bnJlc3RyaWN0
ZWQgZmxvYXQgZ2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9
IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFN0cmluZ1ZhbHVlKG9wdGlv
bmFsIHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3Ry
aW5nVmFsdWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldFN0cmluZ1Zh
bHVlKCk7CisgICAgdm9pZCBzZXRTdHJpbmdWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBz
dHJpbmdUeXBlID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlKTsKKyAgICBET01T
dHJpbmcgZ2V0U3RyaW5nVmFsdWUoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGVwcmVj
YXRlZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIERlcHJlY2F0ZWRDU1NPTVJlY3QgZ2V0UmVjdFZhbHVlKCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBnZXRSR0JDb2xvclZhbHVlKCk7CisgICAg
RGVwcmVjYXRlZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKKyAgICBEZXByZWNhdGVk
Q1NTT01SZWN0IGdldFJlY3RWYWx1ZSgpOworICAgIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yIGdl
dFJHQkNvbG9yVmFsdWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwJ
KHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSBGb250RmFjZVNldExvYWRTdGF0
dXMgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZXJyb3I7CiAKICAgICBQ
cm9taXNlPHNlcXVlbmNlPEZvbnRGYWNlPj4gbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9uYWwg
RE9NU3RyaW5nIHRleHQgPSAiICIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBj
aGVjayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiICIpOworICAg
IGJvb2xlYW4gY2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0g
IiAiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPEZvbnRGYWNlU2V0PiByZWFk
eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1czsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NiBAQAogCiAgICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9s
ZE1lZGl1bSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZE1lZGl1bShET01T
dHJpbmcgbmV3TWVkaXVtKTsKKyAgICB2b2lkIGRlbGV0ZU1lZGl1bShET01TdHJpbmcgb2xkTWVk
aXVtKTsKKyAgICB2b2lkIGFwcGVuZE1lZGl1bShET01TdHJpbmcgbmV3TWVkaXVtKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDEzICs1NywxMyBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IG00NDsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFt
ZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0
cml4VmFsdWUob3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZyA9ICJ1bmRlZmluZWQiKTsKKyAgICB2
b2lkIHNldE1hdHJpeFZhbHVlKG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmcgPSAidW5kZWZpbmVk
Iik7CiAgICAgCiAgICAgLy8gTXVsdGlwbHkgdGhpcyBtYXRyaXggYnkgc2Vjb25kTWF0cml4LCBv
biB0aGUgcmlnaHQgKHJlc3VsdCA9IHRoaXMgKiBzZWNvbmRNYXRyaXgpCiAgICAgV2ViS2l0Q1NT
TWF0cml4IG11bHRpcGx5KG9wdGlvbmFsIFdlYktpdENTU01hdHJpeD8gc2Vjb25kTWF0cml4ID0g
bnVsbCk7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoaXMgbWF0cml4LiBU
aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIG1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZQotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gV2ViS2l0Q1NTTWF0cml4IGludmVyc2UoKTsKKyAgICBXZWJLaXRD
U1NNYXRyaXggaW52ZXJzZSgpOwogICAgIAogICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFu
c2xhdGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1
c2UgYSB2YWx1ZSBvZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBv
cGVyYXRpb25zCkBAIC05Miw1ICs5Miw1IEBACiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVz
ZSBhIHZhbHVlIG9mIDAuCiAgICAgV2ViS2l0Q1NTTWF0cml4IHNrZXdZKG9wdGlvbmFsIHVucmVz
dHJpY3RlZCBkb3VibGUgYW5nbGUgPSBOYU4pOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBz
dHJpbmdpZmllcjsKKyAgICBzdHJpbmdpZmllcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMSBAQAogaW50
ZXJmYWNlIENoYXJhY3RlckRhdGEgOiBOb2RlIHsKICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgZGF0YTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc3Vi
c3RyaW5nRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7Cisg
ICAgRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVk
IGxvbmcgY291bnQpOwogICAgIHZvaWQgYXBwZW5kRGF0YShET01TdHJpbmcgZGF0YSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydERhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQs
IERPTVN0cmluZyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlRGF0
YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNp
Z25lZCBsb25nIGNvdW50LCBET01TdHJpbmcgZGF0YSk7CisgICAgdm9pZCBpbnNlcnREYXRhKHVu
c2lnbmVkIGxvbmcgb2Zmc2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgdm9pZCBkZWxldGVEYXRh
KHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICB2b2lkIHJl
cGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50LCBET01T
dHJpbmcgZGF0YSk7CiB9OwogCiBDaGFyYWN0ZXJEYXRhIGltcGxlbWVudHMgQ2hpbGROb2RlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4
IEBACiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGlsZE5vZGUgewot
ICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYmVm
b3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0aW9ucywgVW5z
Y29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92
ZSgpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdm9pZCBiZWZvcmUoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB2b2lk
IGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywg
VW5zY29wYWJsZV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVz
KTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZvaWQgcmVtb3ZlKCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiBdIGludGVyZmFjZSBDdXN0b21F
bGVtZW50UmVnaXN0cnkgewogICAgIFtDRVJlYWN0aW9ucywgQ3VzdG9tXSB2b2lkIGRlZmluZShE
T01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3IpOwogICAgIGFueSBnZXQoRE9NU3Ry
aW5nIG5hbWUpOwotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uLCBSZXR1cm5zT3duUHJv
bWlzZV0gUHJvbWlzZTx2b2lkPiB3aGVuRGVmaW5lZChET01TdHJpbmcgbmFtZSk7CisgICAgW0N1
c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8dm9pZD4gd2hlbkRlZmluZWQoRE9NU3Ry
aW5nIG5hbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7Ci0gICAgW05ld09iamVjdCwgTWF5VGhy
b3dFeGNlcHRpb25dIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAg
ICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1l
bnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51
bGwpOworICAgIFtOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3Rl
bUlkKTsKKyAgICBbTmV3T2JqZWN0XSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChET01TdHJp
bmc/IG5hbWVzcGFjZVVSSSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVh
bGlmaWVkTmFtZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CiAgICAg
W05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01T
dHJpbmcgdGl0bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVzZWxlc3M7IGFs
d2F5cyByZXR1cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRSZWFk
T25seS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9u
bHkuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRS
ZWFkT25seS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW50ZXJmYWNlIERP
TVBvaW50UmVhZE9ubHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91
YmxlIHo7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgdzsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUG9pbnQgbWF0cml4VHJhbnNmb3JtKG9wdGlvbmFs
IERPTU1hdHJpeEluaXQgbWF0cml4KTsKKyAgICBET01Qb2ludCBtYXRyaXhUcmFuc2Zvcm0ob3B0
aW9uYWwgRE9NTWF0cml4SW5pdCBtYXRyaXgpOwogCiAgICAgc2VyaWFsaXplciA9IHsgYXR0cmli
dXRlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxp
c3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERhdGFUcmFuc2Zlckl0
ZW0gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RGF0YVRyYW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBET01TdHJpbmcgdHlwZSk7Cisg
ICAgRGF0YVRyYW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBET01TdHJpbmcgdHlwZSk7
CiAgICAgRGF0YVRyYW5zZmVySXRlbT8gYWRkKEZpbGUgZmlsZSk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgcmVt
b3ZlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgdm9pZCBjbGVhcigpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjEgKzU4LDIxIEBAIHR5
cGVkZWYgKAogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIEhUTUxDb2xsZWN0
aW9uIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoRE9NU3RyaW5nIGNsYXNzTmFtZXMpOwogCi0gICAg
W05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlRWxlbWVu
dEZvckJpbmRpbmdzXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoRE9NU3RyaW5nIGxvY2FsTmFtZSk7
IC8vIEZJWE1FOiBtaXNzaW5nIG9wdGlvbnMgcGFyYW1ldGVyLgotICAgIFtOZXdPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRp
b25zIHBhcmFtZXRlci4KKyAgICBbTmV3T2JqZWN0LCBJbXBsZW1lbnRlZEFzPWNyZWF0ZUVsZW1l
bnRGb3JCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KERPTVN0cmluZyBsb2NhbE5hbWUp
OyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KKyAgICBbTmV3T2JqZWN0XSBF
bGVtZW50IGNyZWF0ZUVsZW1lbnROUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5n
IHF1YWxpZmllZE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KICAg
ICBbTmV3T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
ICAgICBbTmV3T2JqZWN0XSBUZXh0IGNyZWF0ZVRleHROb2RlKERPTVN0cmluZyBkYXRhKTsKLSAg
ICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQ0RBVEFTZWN0aW9uIGNyZWF0ZUNEQVRB
U2VjdGlvbihET01TdHJpbmcgZGF0YSk7CisgICAgW05ld09iamVjdF0gQ0RBVEFTZWN0aW9uIGNy
ZWF0ZUNEQVRBU2VjdGlvbihET01TdHJpbmcgZGF0YSk7CiAgICAgW05ld09iamVjdF0gQ29tbWVu
dCBjcmVhdGVDb21tZW50KERPTVN0cmluZyBkYXRhKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVj
dGlvbihET01TdHJpbmcgdGFyZ2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgW05ld09iamVjdF0g
UHJvY2Vzc2luZ0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihET01TdHJp
bmcgdGFyZ2V0LCBET01TdHJpbmcgZGF0YSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93
RXhjZXB0aW9uLCBOZXdPYmplY3RdIE5vZGUgaW1wb3J0Tm9kZShOb2RlIG5vZGUsIG9wdGlvbmFs
IGJvb2xlYW4gZGVlcCA9IGZhbHNlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSBOb2RlIGFkb3B0Tm9kZShOb2RlIG5vZGUpOworICAgIFtDRVJlYWN0aW9ucywgTmV3T2Jq
ZWN0XSBOb2RlIGltcG9ydE5vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGRlZXAgPSBm
YWxzZSk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIGFkb3B0Tm9kZShOb2RlIG5vZGUpOwogCi0g
ICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgY3JlYXRlQXR0cmlidXRlKERP
TVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBB
dHRyIGNyZWF0ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcg
cXVhbGlmaWVkTmFtZSk7CisgICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRyaWJ1dGUoRE9N
U3RyaW5nIGxvY2FsTmFtZSk7CisgICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRyaWJ1dGVO
UyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIEV2ZW50IGNyZWF0ZUV2ZW50KERPTVN0
cmluZyB0eXBlKTsKKyAgICBbTmV3T2JqZWN0XSBFdmVudCBjcmVhdGVFdmVudChET01TdHJpbmcg
dHlwZSk7CiAKICAgICBbTmV3T2JqZWN0XSBSYW5nZSBjcmVhdGVSYW5nZSgpOwogCkBAIC0xMDYs
MTEgKzEwNiwxMSBAQCB0eXBlZGVmICgKICAgICAvLyBGSVhNRTogVGhlIEhUTUwgc3BlYyBzYXlz
IHRoaXMgc2hvdWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIuIFdlIHNob3Vs
ZCBlbnN1cmUKICAgICAvLyB0aGF0IHRoZSBjYWxsZXIgZG9jdW1lbnQgbWF0Y2hlcyB0aG9zZSBz
ZW1hbnRpY3MuIEl0IGlzIHBvc3NpYmxlIHdlIHNob3VsZCByZXBsYWNlIGl0IHdpdGgKICAgICAv
LyB0aGUgZXhpc3RpbmcgJ2luY3VtYmVudCBkb2N1bWVudCcgY29uY2VwdC4KLSAgICBbQ0VSZWFj
dGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIEltcGxlbWVudGVkQXM9b3BlbkZv
ckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01T
dHJpbmcgdHlwZSA9ICJ0ZXh0L2h0bWwiLCBvcHRpb25hbCBET01TdHJpbmcgcmVwbGFjZSA9ICIi
KTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBsZW1lbnRlZEFz
PW9wZW5Gb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVdpbmRvdyBvcGVuKFVTVlN0
cmluZyB1cmwsIERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMpOwotICAgIFtDRVJl
YWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBjbG9zZSgpOwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVE
b2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd3JpdGUoRE9NU3RyaW5nLi4uIHRleHQp
OwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudCwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgd3JpdGVsbihET01TdHJpbmcuLi4gdGV4dCk7CisgICAgW0NFUmVh
Y3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBJbXBsZW1lbnRlZEFzPW9wZW5G
b3JCaW5kaW5nc10gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ0ZXh0
L2h0bWwiLCBvcHRpb25hbCBET01TdHJpbmcgcmVwbGFjZSA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9
QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5nc10g
RE9NV2luZG93IG9wZW4oVVNWU3RyaW5nIHVybCwgRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyBm
ZWF0dXJlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb3NlRm9yQmluZGlu
Z3NdIHZvaWQgY2xvc2UoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxl
RG9jdW1lbnRdIHZvaWQgd3JpdGUoRE9NU3RyaW5nLi4uIHRleHQpOworICAgIFtDRVJlYWN0aW9u
cywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudF0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4u
LiB0ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CkBAIC0xMzgsOSArMTM4LDkgQEAgdHlwZWRlZiAo
CiAgICAgRE9NU2VsZWN0aW9uPyBnZXRTZWxlY3Rpb24oKTsKIAogICAgIC8vIFhQYXRoIGV4dGVu
c2lvbnMgKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1YUGF0aC94cGF0aC5odG1s
I1hQYXRoRXZhbHVhdG9yKS4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQYXRoRXhwcmVzc2lv
biBjcmVhdGVFeHByZXNzaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHByZXNzaW9uID0gInVuZGVm
aW5lZCIsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOyAvLyBGSVhNRTogVXNp
bmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCisgICAg
WFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJl
c3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7
IC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBp
cyB3cm9uZy4KICAgICBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihOb2RlPyBub2Rl
UmVzb2x2ZXIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUo
b3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgTm9k
ZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlv
bmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1
bHQpOyAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFs
dWUgaXMgd3JvbmcuCisgICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwgRE9NU3RyaW5n
IGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUsIG9w
dGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0
IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOyAvLyBGSVhNRTogVXNp
bmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCiAKICAg
ICAvLyBFeHRlbnNpb25zIGZyb20gRnVsbFNjcmVlbiBBUEkgKGh0dHBzOi8vZnVsbHNjcmVlbi5z
cGVjLndoYXR3Zy5vcmcvI2FwaSkuCiAgICAgLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBiZSB1
bnByZWZpeGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4
ICs0MCw4IEBACiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRBdHRyaWJ1dGVOYW1lcygpOwog
ICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBu
YW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1l
LCBET01TdHJpbmcgdmFsdWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBz
ZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Cisg
ICAgW0NFUmVhY3Rpb25zXSB2b2lkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbQ0VS
ZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsK
ICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIGJvb2xlYW4gaGFzQXR0cmlidXRl
KERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKQEAgLTQ5LDIzICs0OSwyMyBAQAogCiAgICAgW0RP
TUpJVD1SZWFkRE9NXSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lKTsKICAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VV
UkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlv
bnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciBhdHRy
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZUF0dHJp
YnV0ZU5vZGUoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldEF0dHJpYnV0
ZU5vZGUoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldEF0dHJpYnV0ZU5v
ZGVOUyhBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9uc10gQXR0ciByZW1vdmVBdHRyaWJ1dGVO
b2RlKEF0dHIgYXR0cik7CiAKLSAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET00sIE1heVRo
cm93RXhjZXB0aW9uXSBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhTaGFkb3dSb290SW5pdCBpbml0
KTsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01dIFNoYWRvd1Jvb3QgYXR0YWNoU2hh
ZG93KFNoYWRvd1Jvb3RJbml0IGluaXQpOwogICAgIFtFbmFibGVkQXRSdW50aW1lPVNoYWRvd0RP
TSwgSW1wbGVtZW50ZWRBcz1zaGFkb3dSb290Rm9yQmluZGluZ3MsIENhbGxXaXRoPVNjcmlwdFN0
YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgU2hhZG93Um9vdD8gc2hhZG93Um9vdDsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcgc2VsZWN0b3JzKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gbWF0Y2hlcyhET01TdHJpbmcgc2VsZWN0
b3JzKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9v
bGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7IC8vIEhpc3Rv
cmljYWwgYWxpYXMgb2YgLm1hdGNoZXMuCisgICAgRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcg
c2VsZWN0b3JzKTsKKyAgICBib29sZWFuIG1hdGNoZXMoRE9NU3RyaW5nIHNlbGVjdG9ycyk7Cisg
ICAgW0ltcGxlbWVudGVkQXM9bWF0Y2hlc10gYm9vbGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3Io
RE9NU3RyaW5nIHNlbGVjdG9ycyk7IC8vIEhpc3RvcmljYWwgYWxpYXMgb2YgLm1hdGNoZXMuCiAK
ICAgICBbRE9NSklUPVJlYWRET01dIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1l
KERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50
c0J5VGFnTmFtZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1l
KTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKERPTVN0cmluZyBu
YW1lKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVsZW1lbnQ/IGlu
c2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8v
IEhpc3RvcmljYWwuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydEFkamFjZW50
VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBkYXRhKTsgLy8gSGlzdG9yaWNhbC4KKyAg
ICBbQ0VSZWFjdGlvbnNdIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcg
d2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCisgICAgdm9pZCBpbnNlcnRB
ZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgZGF0YSk7IC8vIEhpc3Rvcmlj
YWwuCiAKICAgICAvLyBDU1NPTS12aWV3IGV4dGVuc2lvbnMgKGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb24tdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlKS4KICAg
ICBET01SZWN0TGlzdCBnZXRDbGllbnRSZWN0cygpOwpAQCAtOTAsNyArOTAsNyBAQAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10aGUtZWxl
bWVudC1pbnRlcmZhY2UKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUw7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJIVE1MOwotICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1M
KERPTVN0cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOworICAgIFtDRVJlYWN0aW9uc10g
dm9pZCBpbnNlcnRBZGphY2VudEhUTUwoRE9NU3RyaW5nIHBvc2l0aW9uLCBET01TdHJpbmcgdGV4
dCk7CiAKICAgICAvLyBFeHRlbnNpb25zIGZyb20gRnVsbCBTY3JlZW4gQVBJIChodHRwczovL2Z1
bGxzY3JlZW4uc3BlYy53aGF0d2cub3JnLyNhcGkpLgogICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
YWRkIHVucHJlZml4ZWQgdmVyc2lvbnM/CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIF0gaW50ZXJmYWNlIEV2ZW50VGFy
Z2V0IHsKICAgICBbSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBET01TdHJpbmcgdHlwZSwgRXZlbnRM
aXN0ZW5lcj8gY2FsbGJhY2ssIG9wdGlvbmFsIChBZGRFdmVudExpc3RlbmVyT3B0aW9ucyBvciBi
b29sZWFuKSBvcHRpb25zID0gZmFsc2UpOwogICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50
TGlzdGVuZXJGb3JCaW5kaW5nc10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9taWNTdHJp
bmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBjYWxsYmFjaywgb3B0aW9uYWwgKEV2
ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7Ci0gICAgW0lt
cGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
Ym9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1k
aXNwYXRjaEV2ZW50Rm9yQmluZGluZ3NdIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVu
dCk7CiB9OwogCiBkaWN0aW9uYXJ5IEV2ZW50TGlzdGVuZXJPcHRpb25zIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Pci5oCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uT3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw5IEBAIGlubGlu
ZSBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXgKICAgICByZXR1cm4geyB9OwogfQog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0V4Y2VwdGlvbk9yIDogcHVibGljIHN0
ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxU
PiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZT4geyB9OworCiB9CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFya0Z1
bmN0aW9uLAogXSBpbnRlcmZhY2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9w
dGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAgICAgdm9pZCBzdGFydCgp
OwogICAgIHZvaWQgY2xvc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgTGVn
YWN5V2luZG93QWxpYXM9V2ViS2l0TXV0YXRpb25PYnNlcnZlciwKICAgICBKU0N1c3RvbU1hcmtG
dW5jdGlvbgogXSBpbnRlcmZhY2UgTXV0YXRpb25PYnNlcnZlciB7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIG9ic2VydmUoTm9kZSB0YXJnZXQsIG9wdGlvbmFsIE11dGF0aW9uT2JzZXJ2
ZXJJbml0IG9wdGlvbnMpOworICAgIHZvaWQgb2JzZXJ2ZShOb2RlIHRhcmdldCwgb3B0aW9uYWwg
TXV0YXRpb25PYnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAg
ICAgc2VxdWVuY2U8TXV0YXRpb25SZWNvcmQ+IHRha2VSZWNvcmRzKCk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4
IEBACiAgICAgZ2V0dGVyIEF0dHI/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgZ2V0
dGVyIEF0dHI/IGdldE5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgQXR0
cj8gZ2V0TmFtZWRJdGVtTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2Nh
bE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldE5h
bWVkSXRlbShBdHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24s
IEltcGxlbWVudGVkQXM9c2V0TmFtZWRJdGVtXSBBdHRyPyBzZXROYW1lZEl0ZW1OUyhBdHRyIGF0
dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlTmFt
ZWRJdGVtKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRo
cm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/IHNldE5h
bWVkSXRlbShBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1zZXRO
YW1lZEl0ZW1dIEF0dHI/IHNldE5hbWVkSXRlbU5TKEF0dHIgYXR0cik7CisgICAgW0NFUmVhY3Rp
b25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAg
W0NFUmVhY3Rpb25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJp
bmc/IHRleHRDb250ZW50OwogICAgIFtDRVJlYWN0aW9uc10gdm9pZCBub3JtYWxpemUoKTsKIAot
ICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5ncywgTWF5
VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gTm9kZSBjbG9uZU5vZGUob3B0aW9uYWwgYm9vbGVh
biBkZWVwID0gZmFsc2UpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9uZU5v
ZGVGb3JCaW5kaW5ncywgTmV3T2JqZWN0XSBOb2RlIGNsb25lTm9kZShvcHRpb25hbCBib29sZWFu
IGRlZXAgPSBmYWxzZSk7CiAgICAgYm9vbGVhbiBpc0VxdWFsTm9kZShOb2RlPyBvdGhlcik7CiAg
ICAgYm9vbGVhbiBpc1NhbWVOb2RlKE5vZGU/IG90aGVyKTsgLy8gSGlzdG9yaWNhbCBhbGlhcyBv
ZiA9PT0uCiAKQEAgLTc3LDEwICs3NywxMCBAQAogICAgIERPTVN0cmluZz8gbG9va3VwTmFtZXNw
YWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKICAgICBib29sZWFuIGlzRGVmYXVsdE5hbWVzcGFj
ZShET01TdHJpbmc/IG5hbWVzcGFjZVVSSSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93
RXhjZXB0aW9uXSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSwgTm9k
ZT8gY2hpbGQpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgYXBw
ZW5kQ2hpbGQoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIE5vZGUgcmVwbGFjZUNoaWxkKE5vZGUgbm9kZSwgW1JldHVyblZhbHVl
XSBOb2RlIGNoaWxkKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2Rl
IHJlbW92ZUNoaWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25z
XSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSwgTm9kZT8gY2hpbGQp
OworICAgIFtDRVJlYWN0aW9uc10gTm9kZSBhcHBlbmRDaGlsZChbUmV0dXJuVmFsdWVdIE5vZGUg
bm9kZSk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIHJlcGxhY2VDaGlsZChOb2RlIG5vZGUsIFtS
ZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIHJlbW92ZUNo
aWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CiB9OwogCiBkaWN0aW9uYXJ5IEdldFJvb3RO
b2RlT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyB3aGF0VG9TaG93OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlRmlsdGVyPyBm
aWx0ZXI7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHROb2RlKCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05vZGUoKTsKKyAgICBOb2RlPyBuZXh0
Tm9kZSgpOworICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOwogCiAgICAgdm9pZCBkZXRhY2goKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDkgKzMzLDkgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gbGFzdEVsZW1lbnRD
aGlsZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRD
b3VudDsKIAotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFj
dGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZCgoTm9kZSBv
ciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHZv
aWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlv
bnMsIFVuc2NvcGFibGVdIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMp
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBxdWVyeVNlbGVjdG9yKERPTVN0
cmluZyBzZWxlY3RvcnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBOb2Rl
TGlzdCBxdWVyeVNlbGVjdG9yQWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIEVsZW1lbnQ/
IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW05ld09iamVjdF0gTm9k
ZUxpc3QgcXVlcnlTZWxlY3RvckFsbChET01TdHJpbmcgc2VsZWN0b3JzKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDM1ICszMSwzNSBAQAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGNvbGxhcHNlZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9k
ZSBjb21tb25BbmNlc3RvckNvbnRhaW5lcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXRTdGFydChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0RW5kKE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFydEJlZm9yZShOb2RlIG5vZGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGFydEFmdGVyKE5vZGUgbm9kZSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVuZEJlZm9yZShOb2RlIG5vZGUpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRFbmRBZnRlcihOb2RlIG5vZGUpOworICAg
IHZvaWQgc2V0U3RhcnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgdm9p
ZCBzZXRFbmQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgdm9pZCBzZXRT
dGFydEJlZm9yZShOb2RlIG5vZGUpOworICAgIHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlIG5vZGUp
OworICAgIHZvaWQgc2V0RW5kQmVmb3JlKE5vZGUgbm9kZSk7CisgICAgdm9pZCBzZXRFbmRBZnRl
cihOb2RlIG5vZGUpOwogICAgIHZvaWQgY29sbGFwc2Uob3B0aW9uYWwgYm9vbGVhbiB0b1N0YXJ0
ID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZWxlY3ROb2RlKE5vZGUg
bm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNlbGVjdE5vZGVDb250ZW50cyhO
b2RlIG5vZGUpOworICAgIHZvaWQgc2VsZWN0Tm9kZShOb2RlIG5vZGUpOworICAgIHZvaWQgc2Vs
ZWN0Tm9kZUNvbnRlbnRzKE5vZGUgbm9kZSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
VEFSVF9UT19TVEFSVCA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBUlRfVE9fRU5E
ID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fRU5EID0gMjsKICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fU1RBUlQgPSAzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgSW1wbGVtZW50ZWRBcz1jb21wYXJlQm91bmRhcnlQb2ludHNGb3JCaW5kaW5nc10gc2hvcnQg
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHVuc2lnbmVkIHNob3J0IGhvdywgUmFuZ2Ugc291cmNlUmFu
Z2UpOworICAgIFtJbXBsZW1lbnRlZEFzPWNvbXBhcmVCb3VuZGFyeVBvaW50c0ZvckJpbmRpbmdz
XSBzaG9ydCBjb21wYXJlQm91bmRhcnlQb2ludHModW5zaWduZWQgc2hvcnQgaG93LCBSYW5nZSBz
b3VyY2VSYW5nZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IGRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGV4dHJhY3RDb250ZW50cygpOwotICAgIFtDRVJl
YWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBj
bG9uZUNvbnRlbnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBpbnNlcnROb2RlKE5vZGUgbm9kZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBzdXJyb3VuZENvbnRlbnRzKE5vZGUgbmV3UGFyZW50KTsKKyAgICBbQ0VSZWFj
dGlvbnNdIHZvaWQgZGVsZXRlQ29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVj
dF0gRG9jdW1lbnRGcmFnbWVudCBleHRyYWN0Q29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMs
IE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7CisgICAgW0NFUmVh
Y3Rpb25zXSB2b2lkIGluc2VydE5vZGUoTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZv
aWQgc3Vycm91bmRDb250ZW50cyhOb2RlIG5ld1BhcmVudCk7CiAKICAgICBbTmV3T2JqZWN0XSBS
YW5nZSBjbG9uZVJhbmdlKCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gYm9vbGVhbiBpc1BvaW50SW5SYW5nZShOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNvbXBhcmVQb2ludChOb2Rl
IG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBib29sZWFuIGlzUG9pbnRJblJhbmdl
KE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHNob3J0IGNvbXBhcmVQb2lu
dChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gYm9vbGVhbiBpbnRlcnNlY3RzTm9kZShOb2RlIG5vZGUpOworICAgIGJvb2xlYW4gaW50
ZXJzZWN0c05vZGUoTm9kZSBub2RlKTsKIAogICAgIHN0cmluZ2lmaWVyOwogCkBAIC02OCwxMyAr
NjgsMTMgQEAKICAgICBbTmV3T2JqZWN0XSBET01SZWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIERPTVBhcnNpbmcgYW5kIFNlcmlhbGl6YXRpb24g
c3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNp
b25zLXRvLXRoZS1yYW5nZS1pbnRlcmZhY2UpLgotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJh
Z21lbnQoRE9NU3RyaW5nIGZyYWdtZW50KTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVjdF0g
RG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoRE9NU3RyaW5nIGZyYWdt
ZW50KTsKIAogICAgIC8vIE5vbiBzdGFuZGFyZC4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgZXhwYW5kKG9wdGlvbmFsIERPTVN0cmluZyB1bml0ID0gIiIpOworICAgIHZvaWQgZXhwYW5k
KG9wdGlvbmFsIERPTVN0cmluZyB1bml0ID0gIiIpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBsaWtlbHkgZHJvcCB0aGlzIHNpbmNlIG5vIG90aGVyIGJyb3dzZXIgc3VwcG9ydHMgaXQuCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJlTm9kZShOb2RlIG5vZGUpOworICAg
IHNob3J0IGNvbXBhcmVOb2RlKE5vZGUgbm9kZSk7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Tk9ERV9CRUZPUkUgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQUZURVIgPSAx
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQkVGT1JFX0FORF9BRlRFUiA9IDI7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICAgICBDb25zdHJ1
Y3RvckNhbGxXaXRoPURvY3VtZW50LAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiBdIGludGVyZmFj
ZSBUZXh0IDogQ2hhcmFjdGVyRGF0YSB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBUZXh0IHNw
bGl0VGV4dCh1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgVGV4dCBzcGxpdFRleHQodW5zaWdu
ZWQgbG9uZyBvZmZzZXQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2hvbGVU
ZXh0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw1ICs0MSw1IEBAIGRpY3Rpb25hcnkgVGV4dERlY29kZU9wdGlvbnMgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gZmF0YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaWdu
b3JlQk9NOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVVNWU3RyaW5nIGRlY29kZShvcHRpb25h
bCBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0RGVjb2RlT3B0aW9ucyBvcHRpb25z
KTsKKyAgICBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFsIEJ1ZmZlclNvdXJjZT8gaW5wdXQsIG9w
dGlvbmFsIFRleHREZWNvZGVPcHRpb25zIG9wdGlvbnMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVdhbGtlci5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlV2Fsa2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE5vZGVGaWx0ZXI/IGZpbHRlcjsKICAgICBhdHRyaWJ1dGUgTm9kZSBj
dXJyZW50Tm9kZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcGFyZW50Tm9kZSgp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gZmlyc3RDaGlsZCgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gTm9kZT8gbGFzdENoaWxkKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBOb2RlPyBwcmV2aW91c1NpYmxpbmcoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/
IG5leHRTaWJsaW5nKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05v
ZGUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHROb2RlKCk7CisgICAgTm9k
ZT8gcGFyZW50Tm9kZSgpOworICAgIE5vZGU/IGZpcnN0Q2hpbGQoKTsKKyAgICBOb2RlPyBsYXN0
Q2hpbGQoKTsKKyAgICBOb2RlPyBwcmV2aW91c1NpYmxpbmcoKTsKKyAgICBOb2RlPyBuZXh0U2li
bGluZygpOworICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOworICAgIE5vZGU/IG5leHROb2RlKCk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAKIAogICAgIC8vIEZJWE1FOiBJbiBhbGwgZm91ciBt
ZXRob2RzIGZvdW5kIGJlbG93LCB0aGUgYmxvYiBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxs
YWJsZS4KICAgICAvLyBhc3luYyByZWFkIG1ldGhvZHMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iPyBibG9iKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcmVhZEFzVGV4dChCbG9iPyBibG9iLCBvcHRpb25hbCBET01TdHJpbmcg
ZW5jb2RpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZWFkQXNEYXRhVVJMKEJs
b2I/IGJsb2IpOworICAgIHZvaWQgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7CisgICAg
dm9pZCByZWFkQXNCaW5hcnlTdHJpbmcoQmxvYj8gYmxvYik7CisgICAgdm9pZCByZWFkQXNUZXh0
KEJsb2I/IGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyk7CisgICAgdm9pZCByZWFk
QXNEYXRhVVJMKEJsb2I/IGJsb2IpOwogCiAgICAgdm9pZCBhYm9ydCgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDggKzMzLDggQEAKICAgICBFeHBvc2VkPVdvcmtlciwKICAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgRmlsZVJlYWRlclN5bmMgewotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXJyYXlCdWZm
ZXIgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYiBibG9iKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZWFkQXNCaW5hcnlT
dHJpbmcoQmxvYiBibG9iKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZWFkQXNUZXh0KEJsb2IgYmxvYiwgb3B0aW9u
YWwgRE9NU3RyaW5nIGVuY29kaW5nID0gIiIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlYWRBc0RhdGFVUkwoQmxv
YiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gQXJyYXlCdWZm
ZXIgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iIGJsb2IpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcgcmVhZEFzVGV4
dChCbG9iIGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyA9ICIiKTsKKyAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJlYWRBc0RhdGFVUkwoQmxv
YiBibG9iKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5nPyBpdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwogICAgIGJvb2xlYW4gY29udGFpbnMoRE9NU3RyaW5nIHRva2VuKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZChET01TdHJpbmcuLi4g
dG9rZW5zKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92
ZShET01TdHJpbmcuLi4gdG9rZW5zKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSBib29sZWFuIHRvZ2dsZShET01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJvb2xlYW4gZm9y
Y2UpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVwbGFjZShE
T01TdHJpbmcgdG9rZW4sIERPTVN0cmluZyBuZXdUb2tlbik7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBib29sZWFuIHN1cHBvcnRzKERPTVN0cmluZyB0b2tlbik7CisgICAgW0NFUmVhY3Rpb25z
XSB2b2lkIGFkZChET01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQg
cmVtb3ZlKERPTVN0cmluZy4uLiB0b2tlbnMpOworICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiB0
b2dnbGUoRE9NU3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIHZvaWQgcmVwbGFjZShET01TdHJpbmcgdG9rZW4sIERPTVN0cmluZyBuZXdUb2tl
bik7CisgICAgYm9vbGVhbiBzdXBwb3J0cyhET01TdHJpbmcgdG9rZW4pOwogICAgIFtDRVJlYWN0
aW9uc10gc3RyaW5naWZpZXIgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKICAgICBpdGVyYWJs
ZTxET01TdHJpbmc+OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIHR5cGVk
ZWYgKAogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGhlaWdodDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhy
b3dFeGNlcHRpb25dIFJlbmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoRE9NU3RyaW5nIGNvbnRl
eHRJZCwgYW55Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBSZW5k
ZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFueS4uLiBhcmd1
bWVudHMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9EYXRhVVJMKG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHRvQmxv
YihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25h
bCBhbnkgcXVhbGl0eSk7CisgICAgRE9NU3RyaW5nIHRvRGF0YVVSTChvcHRpb25hbCBET01TdHJp
bmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1YWxpdHkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSB2b2lkIHRvQmxvYihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFs
IERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7CiAKLSAgICBbQ29uZGl0aW9u
YWw9TUVESUFfU1RSRUFNLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJv
d0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBNZWRpYVN0cmVhbSBjYXB0dXJlU3RyZWFtKG9wdGlvbmFs
IGRvdWJsZSBmcmFtZVJlcXVlc3RSYXRlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIE1lZGlhU3RyZWFt
IGNhcHR1cmVTdHJlYW0ob3B0aW9uYWwgZG91YmxlIGZyYW1lUmVxdWVzdFJhdGUpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHR5cGU7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgd2lkdGg7CiAKLSAg
ICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRT
VkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0U1ZH
RG9jdW1lbnQoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgaW50ZXJmYWNlIEhU
TUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZs
ZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2lu
V2lkdGg7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBE
b2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9j
dW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHdp
ZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGhlaWdodDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzksNSArMzksNSBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVu
CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CiAKLSAg
ICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRT
VkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0U1ZH
RG9jdW1lbnQoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAKICAgICBhdHRyaWJ1
dGUgRGF0ZT8gdmFsdWVBc0RhdGU7CiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
dmFsdWVBc051bWJlcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdGVwVXAob3B0
aW9uYWwgbG9uZyBuID0gMSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0ZXBEb3du
KG9wdGlvbmFsIGxvbmcgbiA9IDEpOworICAgIHZvaWQgc3RlcFVwKG9wdGlvbmFsIGxvbmcgbiA9
IDEpOworICAgIHZvaWQgc3RlcERvd24ob3B0aW9uYWwgbG9uZyBuID0gMSk7CiAKICAgICBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biB3aWxsVmFsaWRhdGU7CkBAIC04MSwxMCArODEsMTAgQEAKICAgICBbSW1wbGVtZW50ZWRBcz1z
ZWxlY3Rpb25FbmRGb3JCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgc2VsZWN0aW9uRW5kOwogICAg
IFtJbXBsZW1lbnRlZEFzPXNlbGVjdGlvbkRpcmVjdGlvbkZvckJpbmRpbmdzXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHNlbGVjdGlvbkRpcmVjdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWdu
ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxl
Y3Rpb25Nb2RlKTsKKyAgICB2b2lkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQp
OworICAgIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQg
bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rp
b25Nb2RlKTsKIAotICAgIFtJbXBsZW1lbnRlZEFzPXNldFNlbGVjdGlvblJhbmdlRm9yQmluZGlu
Z3MsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGxvbmcgc3RhcnQs
IGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKKyAgICBbSW1wbGVtZW50
ZWRBcz1zZXRTZWxlY3Rpb25SYW5nZUZvckJpbmRpbmdzXSB2b2lkIHNldFNlbGVjdGlvblJhbmdl
KGxvbmcgc3RhcnQsIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKIAog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHVzZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBA
IHR5cGVkZWYgKAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJsZWRBdFJ1
bnRpbWU9RW5jcnlwdGVkTWVkaWFBUEldIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253YWl0aW5n
Zm9ya2V5OwogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJsZWRBdFJ1bnRp
bWU9RW5jcnlwdGVkTWVkaWFBUEldIFByb21pc2U8dm9pZD4gc2V0TWVkaWFLZXlzKE1lZGlhS2V5
cz8gbWVkaWFLZXlzKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5VGhyb3dF
eGNlcHRpb25dIFRleHRUcmFjayBhZGRUZXh0VHJhY2soRE9NU3RyaW5nIGtpbmQsIG9wdGlvbmFs
IERPTVN0cmluZyBsYWJlbCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgbGFuZ3VhZ2UgPSAiIik7
CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKERP
TVN0cmluZyBraW5kLCBvcHRpb25hbCBET01TdHJpbmcgbGFiZWwgPSAiIiwgb3B0aW9uYWwgRE9N
U3RyaW5nIGxhbmd1YWdlID0gIiIpOwogICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOwogICAgIFtDb25kaXRp
b25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRy
YWNrczsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIHJlYWRvbmx5IGF0dHJpYnV0ZSBW
aWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNSArNDcsNSBA
QAogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1l
bnQgY29udGVudERvY3VtZW50OwogCi0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0
eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiBdIGludGVyZmFjZSBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsZW5ndGg7CiAgICAgW0NFUmVhY3Rpb25zXSBzZXR0ZXIgdm9pZCAodW5zaWdu
ZWQgbG9uZyBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQ/IG9wdGlvbik7Ci0gICAgW0NFUmVhY3Rp
b25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoKEhUTUxPcHRpb25FbGVtZW50IG9yIEhU
TUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVudCBvciBsb25n
KT8gYmVmb3JlID0gbnVsbCk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGFkZCgoSFRNTE9wdGlv
bkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxF
bGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQg
cmVtb3ZlKGxvbmcgaW5kZXgpOwogCiAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCShyZXZpc2lv
biAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogICAgIFtDRVJlYWN0aW9uc10gYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8g
aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsgLy8gRklYTUU6IFRoZSBzcGVjIGhhcyB0aGlzIHJl
dHVybmluZyBFbGVtZW50Py4KICAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKERPTVN0
cmluZyBuYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFk
ZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0
aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUgb3Zl
cmxvYWQKKyAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgYWRkKChIVE1MT3B0aW9uRWxlbWVudCBvciBI
VE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1lbnQgb3IgbG9u
Zyk/IGJlZm9yZSA9IG51bGwpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmUoKTsgLy8g
Q2hpbGROb2RlIG92ZXJsb2FkCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZShsb25nIGlu
ZGV4KTsKICAgICBbQ0VSZWFjdGlvbnNdIHNldHRlciB2b2lkICh1bnNpZ25lZCBsb25nIGluZGV4
LCBIVE1MT3B0aW9uRWxlbWVudD8gb3B0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw2
IEBAIGludGVyZmFjZSBIVE1MVGFibGVFbGVtZW50IDogSFRNTEVsZW1lbnQKICAgICBIVE1MRWxl
bWVudCBjcmVhdGVDYXB0aW9uKCk7CiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRlbGV0ZUNhcHRp
b24oKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSFRNTEVsZW1lbnQgaW5zZXJ0Um93KG9w
dGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CisgICAgSFRNTEVsZW1lbnQgaW5zZXJ0
Um93KG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7CisgICAgW0NFUmVhY3Rpb25zXSB2b2lkIGRl
bGV0ZVJvdyhsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUm93RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDYgQEAgaW50ZXJmYWNlIEhUTUxUYWJsZVJvd0VsZW1lbnQgOiBIVE1MRWxlbQogICAgIFtSZWZs
ZWN0PWNoYXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2g7CiAgICAgW1JlZmxlY3Q9Y2hhcm9mZl0g
YXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyB2QWxpZ247Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBIVE1MRWxlbWVudCBpbnNlcnRD
ZWxsKG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVDZWxsKGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50
IGluc2VydENlbGwob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBbQ0VSZWFjdGlvbnNd
IHZvaWQgZGVsZXRlQ2VsbChsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDYgQEAKICAgICBbUmVmbGVjdD1jaGFyb2ZmXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGNoT2ZmOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZB
bGlnbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93czsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBsb25nIGlu
ZGV4ID0gLTEpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVs
ZXRlUm93KGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBs
b25nIGluZGV4ID0gLTEpOworICAgIFtDRVJlYWN0aW9uc10gdm9pZCBkZWxldGVSb3cobG9uZyBp
bmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIGludGVyZmFj
ZSBIVE1MVGV4dEFyZWFFbGVtZW50IDogSFRNTEVsZW0KICAgICBhdHRyaWJ1dGUgbG9uZyBzZWxl
Y3Rpb25FbmQ7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Rpb25EaXJlY3Rpb247CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBs
YWNlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFJhbmdlVGV4dChET01T
dHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k
LCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CisgICAgdm9pZCBzZXRSYW5nZVRl
eHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKKyAgICB2b2lkIHNldFJhbmdlVGV4dChET01TdHJp
bmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBv
cHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CiAKICAgICB2b2lkIHNldFNlbGVjdGlv
blJhbmdlKG9wdGlvbmFsIGxvbmcgc3RhcnQgPSAwLCBvcHRpb25hbCBsb25nIGVuZCA9IDAsIG9w
dGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywx
MiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFN1cHBvcnRzRnVsbHNj
cmVlbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNwbGF5aW5nRnVs
bHNjcmVlbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3ZWJraXRFbnRlckZ1bGxz
Y3JlZW4oKTsKKyAgICB2b2lkIHdlYmtpdEVudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgd2Vi
a2l0RXhpdEZ1bGxzY3JlZW4oKTsKIAogICAgIC8vIE1haW50YWluICJGdWxsU2NyZWVuIiBjYXBp
dGFsaXphdGlvbiBzY2hlbWUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA4MQotICAgIFtJbXBsZW1l
bnRlZEFzPXdlYmtpdEVudGVyRnVsbHNjcmVlbiwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd2Vi
a2l0RW50ZXJGdWxsU2NyZWVuKCk7CisgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RW50ZXJGdWxs
c2NyZWVuXSB2b2lkIHdlYmtpdEVudGVyRnVsbFNjcmVlbigpOwogICAgIFtJbXBsZW1lbnRlZEFz
PXdlYmtpdEV4aXRGdWxsc2NyZWVuXSB2b2lkIHdlYmtpdEV4aXRGdWxsU2NyZWVuKCk7CiAKICAg
ICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSBhdHRyaWJ1dGUgYm9vbGVh
biB3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBlbnVtIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlCiAgICAgYXR0cmlidXRl
IFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgYXR0cmlidXRlIFtFbmZv
cmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ29uZGl0aW9uYWw9V0VCR0xdIFdlYkdMUmVuZGVyaW5n
Q29udGV4dD8gZ2V0Q29udGV4dChPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0
VHlwZSwgYW55Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBDb25k
aXRpb25hbD1XRUJHTF0gV2ViR0xSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KE9mZnNjcmVl
blJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBhbnkuLi4gYXJndW1lbnRzKTsKICAg
ICBJbWFnZUJpdG1hcCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKICAgICAvLyBQcm9taXNlPEJs
b2I+IGNvbnZlcnRUb0Jsb2Iob3B0aW9uYWwgSW1hZ2VFbmNvZGVPcHRpb25zIG9wdGlvbnMpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDYgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2Ug
VGltZVJhbmdlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydCh1bnNp
Z25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBk
b3VibGUgZW5kKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVucmVzdHJpY3RlZCBkb3VibGUg
c3RhcnQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQo
dW5zaWduZWQgbG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UK
ICAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnRzIGJlbG93
IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KIAogICAgIC8vIGRyYXdpbmcgaW1hZ2Vz
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJj
ZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJj
ZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRvdWJsZSBzaCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5y
ZXN0cmljdGVkIGRvdWJsZSBkaCk7CisgICAgdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3Vy
Y2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHkp
OworICAgIHZvaWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5LCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGR3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGRoKTsKKyAgICB2b2lkIGRyYXdJbWFnZShDYW52YXNJ
bWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0cmljdGVkIGRv
dWJsZSBzeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRvdWJsZSBzaCwg
dW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5p
ZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ZpbGxTdHJva2VTdHlsZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHR5
cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAgICBhdHRyaWJ1dGUgKERP
TVN0cmluZyBvciBDYW52YXNHcmFkaWVudCBvciBDYW52YXNQYXR0ZXJuKSBmaWxsU3R5bGU7IC8v
IChkZWZhdWx0IGJsYWNrKQogCiAgICAgLy8gRklYTUU6IEFsbCB0aGUgZmxvYXQgcGFyYW1ldGVy
cyBiZWxvdyBzaG91bGQgYmUgZG91Ymxlcy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZh
c0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQg
eDEsIGZsb2F0IHkxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNy
ZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgx
LCBmbG9hdCB5MSwgZmxvYXQgcjEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0
dGVybj8gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcmVwZXRpdGlvbik7CisgICAgQ2FudmFzR3JhZGllbnQg
Y3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQg
eTEpOworICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBm
bG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOworICAgIENh
bnZhc1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtUcmVh
dE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzAsNSArMzAsNSBAQAogICAgIC8vIEZJWE1FOiBUaGUgZmxv
YXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgYSBkb3VibGUuCiAKICAgICAvLyBvcGFxdWUg
b2JqZWN0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZENvbG9yU3RvcChmbG9hdCBv
ZmZzZXQsIERPTVN0cmluZyBjb2xvcik7CisgICAgdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQgb2Zm
c2V0LCBET01TdHJpbmcgY29sb3IpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsOSArMzAsOSBAQAogICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IGFyZ3VtZW50cyBi
ZWxvdyBzaG91bGQgYmUgbG9uZ3MuCiAKICAgICAvLyBwaXhlbCBtYW5pcHVsYXRpb24KLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoZmxvYXQgc3csIGZs
b2F0IHNoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURh
dGEoSW1hZ2VEYXRhPyBpbWFnZWRhdGEpOyAvLyBGSVhNRTogaW1hZ2VkYXRhIHNob3VsZCBub3Qg
YmUgb3B0aW9uYWwKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBnZXRJbWFnZURh
dGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOworICAgIEltYWdlRGF0
YSBjcmVhdGVJbWFnZURhdGEoZmxvYXQgc3csIGZsb2F0IHNoKTsKKyAgICBJbWFnZURhdGEgY3Jl
YXRlSW1hZ2VEYXRhKEltYWdlRGF0YT8gaW1hZ2VkYXRhKTsgLy8gRklYTUU6IGltYWdlZGF0YSBz
aG91bGQgbm90IGJlIG9wdGlvbmFsCisgICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0YShmbG9hdCBz
eCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhIGltYWdlZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHB1dElt
YWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRp
cnR5WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGgu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAKICAgICB2b2lkIGxpbmVUbyh1
bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CiAgICAgdm9pZCBx
dWFkcmF0aWNDdXJ2ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUgY3B4LCB1bnJlc3RyaWN0ZWQgZG91
YmxlIGNweSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOwog
ICAgIHZvaWQgYmV6aWVyQ3VydmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXgsIHVucmVzdHJp
Y3RlZCBkb3VibGUgY3AxeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDJ4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGNwMnksIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJs
ZSB4MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5y
ZXN0cmljdGVkIGRvdWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMpOwotICAgIC8v
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBk
b3VibGUgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7CisgICAgdm9pZCBh
cmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHJhZGl1cyk7CisgICAgLy8gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgx
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7CiAgICAgdm9p
ZCByZWN0KHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHcsIHVucmVzdHJpY3RlZCBkb3VibGUgaCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIGFyYyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBk
b3VibGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMsIHVucmVzdHJpY3RlZCBkb3VibGUg
c3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVh
biBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBl
bGxpcHNlKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWSwgdW5y
ZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbiwgdW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydEFuZ2xl
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFuIGFudGljbG9j
a3dpc2UgPSBmYWxzZSk7CisgICAgdm9pZCBhcmModW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlv
bmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKKyAgICB2b2lkIGVsbGlwc2UodW5y
ZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBk
b3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNZLCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHJvdGF0aW9uLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJp
Y3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZh
bHNlKTsKIAogICAgIFtFbmFibGVkQXRSdW50aW1lPUluc3BlY3RvckFkZGl0aW9uc10gcmVhZG9u
bHkgYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRYOwogICAgIFtFbmFibGVkQXRSdW50aW1lPUluc3Bl
Y3RvckFkZGl0aW9uc10gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRZOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1ICsyOCw1IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0dGVybiB7CiAgICAgLy8gb3BhcXVlIG9iamVj
dAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9N
TWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwg
RE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCShyZXZp
c2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiAKICAgICAv
LyBOb24tc3RhbmRhcmQgZnVuY3Rpb25hbGl0eSAoQ2FudmFzSW1hZ2VEYXRhKS4KICAgICByZWFk
b25seSBhdHRyaWJ1dGUgZmxvYXQgd2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpbzsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSB3ZWJraXRHZXRJbWFnZURhdGFIRChmbG9hdCBz
eCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCk7CisgICAgSW1hZ2VEYXRhIHdlYmtpdEdl
dEltYWdlRGF0YUhEKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoKTsKICAg
ICB2b2lkIHdlYmtpdFB1dEltYWdlRGF0YUhEKEltYWdlRGF0YSBpbWFnZWRhdGEsIGZsb2F0IGR4
LCBmbG9hdCBkeSk7CiAgICAgdm9pZCB3ZWJraXRQdXRJbWFnZURhdGFIRChJbWFnZURhdGEgaW1h
Z2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBm
bG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkocmV2aXNpb24gMjI1MTQx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNiBAQAogCiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4
IGdldFRyYW5zZm9ybSgpOwogICAgIHZvaWQgc2V0VHJhbnNmb3JtKHVucmVzdHJpY3RlZCBmbG9h
dCBhLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYiwgdW5yZXN0cmljdGVkIGZsb2F0IGMsIHVucmVzdHJp
Y3RlZCBmbG9hdCBkLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZSwgdW5yZXN0cmljdGVkIGZsb2F0IGYp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9N
TWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwg
RE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CiAgICAgdm9pZCByZXNldFRyYW5zZm9ybSgpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNiBAQAogXSBpbnRlcmZhY2UgSW1hZ2VCaXRtYXBSZW5k
ZXJpbmdDb250ZXh0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENhbnZhc0VsZW1lbnQg
Y2FudmFzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHRyYW5zZmVyRnJvbUltYWdl
Qml0bWFwKEltYWdlQml0bWFwPyBiaXRtYXApOworICAgIHZvaWQgdHJhbnNmZXJGcm9tSW1hZ2VC
aXRtYXAoSW1hZ2VCaXRtYXA/IGJpdG1hcCk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QYXRoMkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BhdGgyRC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BhdGgyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICAg
ICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9S
VAogXSBpbnRlcmZhY2UgUGF0aDJEIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWRk
UGF0aChQYXRoMkQgcGF0aCwgb3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7Cisg
ICAgdm9pZCBhZGRQYXRoKFBhdGgyRCBwYXRoLCBvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJh
bnNmb3JtKTsKIH07CiAKIFBhdGgyRCBpbXBsZW1lbnRzIENhbnZhc1BhdGg7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1MCwxMCArMzUwLDEw
IEBAIHR5cGVkZWYgKEltYWdlRGF0YSBvciBIVE1MSW1hZ2VFbGVtZW50IG8KIAogICAgIC8vIFdl
YkdMMSBsZWdhY3kgZW50cnlwb2ludHM6CiAgICAgdm9pZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBB
cnJheUJ1ZmZlclZpZXc/IHBpeGVscyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2UpOwor
ICAgIHZvaWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/
IHNvdXJjZSk7CiAKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3PyBw
aXhlbHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2U/IHNvdXJjZSk7CisgICAgdm9p
ZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3Vy
Y2U/IHNvdXJjZSk7CiAKICAgICAvLyBXZWJHTDIgZW50cnlwb2ludHM6CiAgICAgdm9pZCB0ZXhJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIHBib09mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlz
aW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0NiwxMCBAQCB0eXBlZGVmIChJ
bWFnZURhdGEgb3IgSFRNTEltYWdlRWxlbWVudCBvCiAgICAgLy8gY29uZmljdHMgd2l0aCBvdmVy
bG9hZHMgaW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dC4KIAogICAgIHZvaWQgdGV4SW1hZ2UyRChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3PyBwaXhlbHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZT8g
c291cmNlKTsKKyAgICB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleElt
YWdlU291cmNlPyBzb3VyY2UpOwogCiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEFycmF5QnVm
ZmVyVmlldz8gcGl4ZWxzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdGV4U3ViSW1h
Z2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlPyBzb3VyY2Up
OworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRl
eEltYWdlU291cmNlPyBzb3VyY2UpOwogCiAgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcgZGF0
YSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMyArNDMsMTMgQEAgZW51bSBUZXh0VHJhY2tLaW5kIHsg
InN1YnRpdGxlcyIsICJjYXB0aQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVM
aXN0PyBjdWVzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0PyBhY3Rp
dmVDdWVzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZEN1ZShUZXh0VHJhY2tD
dWUgY3VlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFj
a0N1ZSBjdWUpOworICAgIHZvaWQgYWRkQ3VlKFRleHRUcmFja0N1ZSBjdWUpOworICAgIHZvaWQg
cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSBjdWUpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmN1ZWNoYW5nZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWVFRSZWdpb25MaXN0IHJl
Z2lvbnM7CiAgICAgLy8gRklYTUU6IHJlZ2lvbiBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxs
YWJsZSBpbiBhZGRSZWdpb24gYW5kIHJlbW92ZVJlZ2lvbi4KICAgICB2b2lkIGFkZFJlZ2lvbihW
VFRSZWdpb24/IHJlZ2lvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVJl
Z2lvbihWVFRSZWdpb24/IHJlZ2lvbik7CisgICAgdm9pZCByZW1vdmVSZWdpb24oVlRUUmVnaW9u
PyByZWdpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE9C
U09MRVRFID0gNTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgc3RhdHVz
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHVwZGF0ZSgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzd2FwQ2FjaGUoKTsKKyAgICB2b2lkIHVwZGF0ZSgpOworICAgIHZv
aWQgc3dhcENhY2hlKCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmNoZWNraW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw1ICszMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKIF0gaW50ZXJmYWNlIENyeXB0byB7CiAgICAgW0NvbmRpdGlvbmFsPVNV
QlRMRV9DUllQVE9dIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdWJ0bGVDcnlwdG8gc3VidGxlOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXJyYXlCdWZmZXJWaWV3IGdldFJhbmRvbVZhbHVlcyhbUmV0
dXJuVmFsdWVdIEFycmF5QnVmZmVyVmlldyBhcnJheSk7CisgICAgQXJyYXlCdWZmZXJWaWV3IGdl
dFJhbmRvbVZhbHVlcyhbUmV0dXJuVmFsdWVdIEFycmF5QnVmZmVyVmlldyBhcnJheSk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC00MSwxNiArNDEsMTYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBy
YW5nZUNvdW50OwogCiAgICAgdm9pZCBjb2xsYXBzZShOb2RlPyBub2RlLCBvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjb2xs
YXBzZVRvRW5kKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbGxhcHNlVG9TdGFy
dCgpOworICAgIHZvaWQgY29sbGFwc2VUb0VuZCgpOworICAgIHZvaWQgY29sbGFwc2VUb1N0YXJ0
KCk7CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CiAgICAg
Ym9vbGVhbiBjb250YWluc05vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGFsbG93UGFy
dGlhbCA9IGZhbHNlKTsKICAgICB2b2lkIHNlbGVjdEFsbENoaWxkcmVuKE5vZGUgbm9kZSk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZXh0ZW5kKE5vZGUgbm9kZSwgb3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICB2b2lkIGV4dGVuZChOb2RlIG5vZGUsIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFJhbmdlIGdldFJhbmdlQXQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgUmFuZ2UgZ2V0
UmFuZ2VBdCh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2b2lkIHJlbW92ZUFsbFJhbmdlcygp
OwogICAgIHZvaWQgYWRkUmFuZ2UoUmFuZ2UgcmFuZ2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdHlwZWRlZiBVU1ZT
dHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgbG9uZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sgY2FsbGJhY2spOyAvLyBGSVhNRTogU2hvdWxkIHJldHVy
biBhbiB1bnNpZ25lZCBsb25nLgogICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9uRnJhbWUobG9uZyBo
YW5kbGUpOyAvLyBGSVhNRTogaGFuZGxlIHNob3VsZCBiZSBhbiB1bnNpZ25lZCBsb25nLgogCi0g
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlJkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3Vy
aXR5LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2Vx
dWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUm
SW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFk
ZXJdIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4s
IG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAKICAgICAvLyBPYnNv
bGV0ZSBtZW1iZXJzLCBzdGlsbCBwYXJ0IG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24gKGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI1dpbmRvdy1wYXJ0aWFsKS4KICAgICB2b2lkIGNhcHR1
cmVFdmVudHMoKTsgLy8gTm90IGltcGxlbWVudGVkLiBBbHNvIG5vdCBpbiBtb2Rlcm4gc3RhbmRh
cmRzLiBFbXB0eSBmdW5jdGlvbiBtYXkgaGVscCBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNv
bnRlbnQuCkBAIC0xNzksOCArMTc5LDggQEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7
CiAgICAgV2ViS2l0UG9pbnQgd2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2Uob3B0aW9u
YWwgTm9kZT8gbm9kZSA9IG51bGwsIG9wdGlvbmFsIFdlYktpdFBvaW50PyBwID0gbnVsbCk7CiAK
ICAgICAvLyBJbnRlcm5hbCBvcGVyYXRpb25zLCBub3QgZXhwb3NlZCB0byB0aGUgV2ViLgotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbiwgRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jvb3RJc0Fsd2F5c09w
ZW5dIE5vZGVMaXN0IGNvbGxlY3RNYXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJlZShOb2RlIHNjb3Bl
LCBET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEVuYWJsZWRG
b3JXb3JsZD1zaGFkb3dSb290SXNBbHdheXNPcGVuXSBFbGVtZW50PyBtYXRjaGluZ0VsZW1lbnRJ
bkZsYXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtFbmFibGVk
Rm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gTm9kZUxpc3QgY29sbGVjdE1hdGNoaW5n
RWxlbWVudHNJbkZsYXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAg
IFtFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gRWxlbWVudD8gbWF0Y2hp
bmdFbGVtZW50SW5GbGF0VHJlZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKIAog
ICAgIC8vIGlPUyBHZXN0dXJlIEFQSSBldmVudCBoYW5kbGVycy4KICAgICBbTm90RW51bWVyYWJs
ZSwgQ29uZGl0aW9uYWw9SU9TX0dFU1RVUkVfRVZFTlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9uZ2VzdHVyZWNoYW5nZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkocmV2aXNpb24g
MjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzQsOCArMzQsOCBAQAogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xh
cmVJbkhlYWRlcl0gdm9pZCBmb3J3YXJkKCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3
YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIGdvKG9wdGlvbmFsIGxvbmcgZGlzdGFuY2UgPSAwKTsK
IAotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHB1c2hTdGF0ZShhbnkgZGF0
YSwgRE9NU3RyaW5nIHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOwotICAg
IFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlcGxhY2VTdGF0ZShhbnkgZGF0YSwg
RE9NU3RyaW5nIHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOworICAgIFtD
dXN0b21dIHZvaWQgcHVzaFN0YXRlKGFueSBkYXRhLCBET01TdHJpbmcgdGl0bGUsIG9wdGlvbmFs
IFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CisgICAgW0N1c3RvbV0gdm9pZCByZXBsYWNlU3RhdGUo
YW55IGRhdGEsIERPTVN0cmluZyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxs
KTsKIH07CiAKIGVudW0gU2Nyb2xsUmVzdG9yYXRpb24geyAiYXV0byIsICJtYW51YWwiIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2lu
ZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIg
YXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb24sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZv
aWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHZvaWQgYXNzaWduKFVTVlN0cmluZyB1
cmwpOwogICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJz
dFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCByZXBsYWNlKFVTVlN0cmluZyB1
cmwpOwogICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJd
IHZvaWQgcmVsb2FkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCB0eXBlZGVmIGRvdWJsZSBET01IaWdoUmVz
VGltZVN0YW1wOwogICAgIFtFbmFibGVkQXRSdW50aW1lPVJlc291cmNlVGltaW5nXSBhdHRyaWJ1
dGUgRXZlbnRIYW5kbGVyIG9ucmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsOwogCiAgICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL3VzZXItdGltaW5nLwotICAgIFtFbmFibGVkQXRSdW50aW1lPVVz
ZXJUaW1pbmcsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIG1hcmsoRE9NU3RyaW5nIG1hcmtOYW1l
KTsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2b2lkIG1hcmsoRE9NU3RyaW5n
IG1hcmtOYW1lKTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2VyVGltaW5nXSB2b2lkIGNsZWFy
TWFya3Mob3B0aW9uYWwgRE9NU3RyaW5nIG1hcmtOYW1lKTsKLSAgICBbRW5hYmxlZEF0UnVudGlt
ZT1Vc2VyVGltaW5nLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBtZWFzdXJlKERPTVN0cmluZyBt
ZWFzdXJlTmFtZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0YXJ0TWFyaywgb3B0aW9uYWwgRE9NU3Ry
aW5nIGVuZE1hcmspOworICAgIFtFbmFibGVkQXRSdW50aW1lPVVzZXJUaW1pbmddIHZvaWQgbWVh
c3VyZShET01TdHJpbmcgbWVhc3VyZU5hbWUsIG9wdGlvbmFsIERPTVN0cmluZyBzdGFydE1hcmss
IG9wdGlvbmFsIERPTVN0cmluZyBlbmRNYXJrKTsKICAgICBbRW5hYmxlZEF0UnVudGltZT1Vc2Vy
VGltaW5nXSB2b2lkIGNsZWFyTWVhc3VyZXMob3B0aW9uYWwgRE9NU3RyaW5nIG1lYXN1cmVOYW1l
KTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVy
LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU9ic2VydmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogICAgIEV4cG9z
ZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGlu
dGVyZmFjZSBQZXJmb3JtYW5jZU9ic2VydmVyIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgb2JzZXJ2ZShQZXJmb3JtYW5jZU9ic2VydmVySW5pdCBvcHRpb25zKTsKKyAgICB2b2lkIG9i
c2VydmUoUGVyZm9ybWFuY2VPYnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdm9pZCBkaXNjb25u
ZWN0KCk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNz
YWdlSGFuZGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDUgKzI2LDUgQEAKIFsKICAgICBD
b25kaXRpb25hbD1VU0VSX01FU1NBR0VfSEFORExFUlMKIF0gaW50ZXJmYWNlIFVzZXJNZXNzYWdl
SGFuZGxlciB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dp
bmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDE1ICs0MCwxNSBAQCB0eXBlZGVmIChDYW52YXNJbWFnZVNvdXJjZSBv
ciBCbG9iIG9yIEltCiAKICAgICAvLyBUaW1lcnMKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
dGFrZSBhIFRpbWVySGFuZGxlciAoYS5rLmEuIChET01TdHJpbmcgb3IgRnVuY3Rpb24pKSByYXRo
ZXIgdGhhbiBhIFNjaGVkdWxlZEFjdGlvbi4KLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1h
eVRocm93RXhjZXB0aW9uXSBsb25nIHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9uIGhhbmRsZXIs
IG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZV0gbG9uZyBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiBoYW5kbGVy
LCBvcHRpb25hbCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsKICAgICB2b2lk
IGNsZWFyVGltZW91dChvcHRpb25hbCBsb25nIGhhbmRsZSA9IDApOwogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB0YWtlIGEgVGltZXJIYW5kbGVyIChhLmsuYS4gKERPTVN0cmluZyBvciBGdW5j
dGlvbikpIHJhdGhlciB0aGFuIGEgU2NoZWR1bGVkQWN0aW9uLgotICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgc2V0SW50ZXJ2YWwoU2NoZWR1bGVkQWN0
aW9uIGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMp
OworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gbG9uZyBzZXRJbnRlcnZhbChTY2hlZHVsZWRB
Y3Rpb24gaGFuZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55Li4uIGFyZ3VtZW50
cyk7CiAgICAgdm9pZCBjbGVhckludGVydmFsKG9wdGlvbmFsIGxvbmcgaGFuZGxlID0gMCk7CiAK
ICAgICAvLyBCYXNlNjQgdXRpbGl0eSBtZXRob2RzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RE9NU3RyaW5nIGF0b2IoRE9NU3RyaW5nIHN0cmluZyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBET01TdHJpbmcgYnRvYShET01TdHJpbmcgc3RyaW5nKTsKKyAgICBET01TdHJpbmcgYXRvYihE
T01TdHJpbmcgc3RyaW5nKTsKKyAgICBET01TdHJpbmcgYnRvYShET01TdHJpbmcgc3RyaW5nKTsK
IAogICAgIC8vIFNlY3VyZSBDb250ZXh0cwogICAgIFtFbmFibGVkQXRSdW50aW1lPUlzU2VjdXJl
Q29udGV4dEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNTZWN1cmVDb250
ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCShyZXZpc2lvbiAyMjUxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw1ICszMiw1IEBACiAgICAgZ2V0dGVyIERPTVN0cmluZz8gZ2V0SXRlbShET01TdHJpbmcg
a2V5KTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNldHRlciB2b2lkIHNldEl0ZW0oRE9NU3Ry
aW5nIGtleSwgRE9NU3RyaW5nIGRhdGEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZGVsZXRl
ciB2b2lkIHJlbW92ZUl0ZW0oRE9NU3RyaW5nIGtleSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBjbGVhcigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmdsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuZ2xlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
Z2xlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNiBAQAogCiAgICAgYXR0cmlidXRl
IERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJp
Y3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7
CisgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBl
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB2b2lkIGNv
bnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1
MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgaW50ZXJmYWNlIFNWR0dyYXBoaWNzRWxlbWVudCA6
IFNWR0VsZW1lbgogICAgIFtJbXBsZW1lbnRlZEFzPWdldFNjcmVlbkNUTUZvckJpbmRpbmdzLCBO
ZXdPYmplY3RdIFNWR01hdHJpeCBnZXRTY3JlZW5DVE0oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5vdCBpbiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaGFzIGJlZW4gZHJvcHBlZCBieSBCbGlu
ay4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4IGdldFRyYW5z
Zm9ybVRvRWxlbWVudChvcHRpb25hbCBTVkdFbGVtZW50PyBlbGVtZW50ID0gbnVsbCk7CisgICAg
W05ld09iamVjdF0gU1ZHTWF0cml4IGdldFRyYW5zZm9ybVRvRWxlbWVudChvcHRpb25hbCBTVkdF
bGVtZW50PyBlbGVtZW50ID0gbnVsbCk7CiB9OwogCiBTVkdHcmFwaGljc0VsZW1lbnQgaW1wbGVt
ZW50cyBTVkdUZXN0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCShyZXZpc2lvbiAy
MjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNiBAQCBpbnRlcmZhY2UgU1ZHTGVuZ3RoIHsgCiAgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7CiAgICAgYXR0cmlidXRl
IERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJp
Y3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7
CisgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBl
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB2b2lkIGNv
bnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDExICsyOSwxMSBAQAogXSBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3Ro
IGluaXRpYWxpemUoU1ZHTGVuZ3RoIGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZH
TGVuZ3RoIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBTVkdMZW5ndGggaW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggaXRlbSwgdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGggcmVwbGFjZUl0
ZW0oU1ZHTGVuZ3RoIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gU1ZHTGVuZ3RoIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5ndGggaXRlbSk7
CisgICAgdm9pZCBjbGVhcigpOworICAgIFNWR0xlbmd0aCBpbml0aWFsaXplKFNWR0xlbmd0aCBp
dGVtKTsKKyAgICBTVkdMZW5ndGggZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBT
VkdMZW5ndGggaW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggaXRlbSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgU1ZHTGVuZ3RoIHJlcGxhY2VJdGVtKFNWR0xlbmd0aCBpdGVtLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBTVkdMZW5ndGggcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5ndGggaXRlbSk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTUg
QEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBlOwogICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIGY7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJp
eCBtdWx0aXBseShTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFNWR01hdHJpeCBpbnZlcnNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRy
aXggdHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggc2NhbGUodW5yZXN0cmljdGVkIGZs
b2F0IHNjYWxlRmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBzY2Fs
ZU5vblVuaWZvcm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5yZXN0cmljdGVk
IGZsb2F0IHNjYWxlRmFjdG9yWSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXgg
cm90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0
cmljdGVkIGZsb2F0IHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IGZsaXBY
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggZmxpcFkoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBza2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHNrZXdZKHVucmVzdHJpY3RlZCBm
bG9hdCBhbmdsZSk7CisgICAgU1ZHTWF0cml4IG11bHRpcGx5KFNWR01hdHJpeCBzZWNvbmRNYXRy
aXgpOworICAgIFNWR01hdHJpeCBpbnZlcnNlKCk7CisgICAgU1ZHTWF0cml4IHRyYW5zbGF0ZSh1
bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworICAgIFNWR01hdHJp
eCBzY2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3IpOworICAgIFNWR01hdHJpeCBz
Y2FsZU5vblVuaWZvcm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHNjYWxlRmFjdG9yWSk7CisgICAgU1ZHTWF0cml4IHJvdGF0ZSh1bnJlc3RyaWN0
ZWQgZmxvYXQgYW5nbGUpOworICAgIFNWR01hdHJpeCByb3RhdGVGcm9tVmVjdG9yKHVucmVzdHJp
Y3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CisgICAgU1ZHTWF0cml4IGZsaXBY
KCk7CisgICAgU1ZHTWF0cml4IGZsaXBZKCk7CisgICAgU1ZHTWF0cml4IHNrZXdYKHVucmVzdHJp
Y3RlZCBmbG9hdCBhbmdsZSk7CisgICAgU1ZHTWF0cml4IHNrZXdZKHVucmVzdHJpY3RlZCBmbG9h
dCBhbmdsZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAkocmV2
aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTEgQEAKIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBTVkdOdW1iZXIgaW5pdGlhbGl6ZShTVkdOdW1iZXIgaXRlbSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBpbnNlcnRJdGVtQmVmb3JlKFNWR051bWJl
ciBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNW
R051bWJlciByZXBsYWNlSXRlbShTVkdOdW1iZXIgaXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgcmVtb3ZlSXRlbSh1bnNpZ25lZCBs
b25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBhcHBlbmRJdGVt
KFNWR051bWJlciBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgU1ZHTnVtYmVyIGluaXRp
YWxpemUoU1ZHTnVtYmVyIGl0ZW0pOworICAgIFNWR051bWJlciBnZXRJdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworICAgIFNWR051bWJlciBpbnNlcnRJdGVtQmVmb3JlKFNWR051bWJlciBpdGVt
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgcmVwbGFjZUl0ZW0oU1ZHTnVt
YmVyIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciByZW1vdmVJdGVt
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciBhcHBlbmRJdGVtKFNWR051bWJl
ciBpdGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5pZGwJKHJl
dmlzaW9uIDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogaW50ZXJmYWNlIFNWR1BhdGhTZWdM
aXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1z
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTVkdQYXRoU2VnIGluaXRpYWxpemUoU1ZHUGF0aFNlZyBuZXdJdGVtKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgaW5zZXJ0SXRlbUJlZm9y
ZShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyByZXBsYWNlSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyBy
ZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U1ZHUGF0aFNlZyBhcHBlbmRJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSk7CisgICAgdm9pZCBjbGVh
cigpOworICAgIFNWR1BhdGhTZWcgaW5pdGlhbGl6ZShTVkdQYXRoU2VnIG5ld0l0ZW0pOworICAg
IFNWR1BhdGhTZWcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQYXRoU2Vn
IGluc2VydEl0ZW1CZWZvcmUoU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdQYXRoU2VnIHJlcGxhY2VJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUGF0aFNlZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgIFNWR1BhdGhTZWcgYXBwZW5kSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0pOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NiBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgeDsKICAgICBhdHRyaWJ1dGUg
dW5yZXN0cmljdGVkIGZsb2F0IHk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVj
dF0gU1ZHUG9pbnQgbWF0cml4VHJhbnNmb3JtKFNWR01hdHJpeCBtYXRyaXgpOworICAgIFtOZXdP
YmplY3RdIFNWR1BvaW50IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXggbWF0cml4KTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTEgKzI2LDExIEBACiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0IHsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCBp
bml0aWFsaXplKFNWR1BvaW50IGl0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9p
bnQgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR1BvaW50IGluc2VydEl0ZW1CZWZvcmUoU1ZHUG9pbnQgaXRlbSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCByZXBsYWNlSXRlbShTVkdQ
b2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR1BvaW50IHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTVkdQb2ludCBhcHBlbmRJdGVtKFNWR1BvaW50IGl0ZW0pOworICAgIHZvaWQg
Y2xlYXIoKTsKKyAgICBTVkdQb2ludCBpbml0aWFsaXplKFNWR1BvaW50IGl0ZW0pOworICAgIFNW
R1BvaW50IGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9pbnQgaW5zZXJ0
SXRlbUJlZm9yZShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQ
b2ludCByZXBsYWNlSXRlbShTVkdQb2ludCBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBTVkdQb2ludCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1BvaW50
IGFwcGVuZEl0ZW0oU1ZHUG9pbnQgaXRlbSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0cmluZ0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHJpbmdMaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTEgQEAKIGludGVy
ZmFjZSBTVkdTdHJpbmdMaXN0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5pdGlhbGl6ZShET01TdHJpbmcg
aXRlbSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0SXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBpbnNlcnRJ
dGVtQmVmb3JlKERPTVN0cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZXBsYWNlSXRlbShET01TdHJpbmcgaXRlbSwgdW5z
aWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVt
b3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBhcHBlbmRJdGVtKERPTVN0cmluZyBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7Cisg
ICAgRE9NU3RyaW5nIGluaXRpYWxpemUoRE9NU3RyaW5nIGl0ZW0pOworICAgIERPTVN0cmluZyBn
ZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBpbnNlcnRJdGVtQmVm
b3JlKERPTVN0cmluZyBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcg
cmVwbGFjZUl0ZW0oRE9NU3RyaW5nIGl0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERP
TVN0cmluZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBh
cHBlbmRJdGVtKERPTVN0cmluZyBpdGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDEzICszNCwxMyBAQCBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50IDogU1ZHR3Jh
CiAKICAgICBsb25nIGdldE51bWJlck9mQ2hhcnMoKTsKICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQg
Z2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3Ry
aWN0ZWQgZmxvYXQgZ2V0U3ViU3RyaW5nTGVuZ3RoKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgTmV3T2JqZWN0XSBTVkdQb2ludCBnZXRFbmRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0
XSBTVkdSZWN0IGdldEV4dGVudE9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9
IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdldFJvdGF0
aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdW5yZXN0
cmljdGVkIGZsb2F0IGdldFN1YlN0cmluZ0xlbmd0aChvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9m
ZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7CisgICAgW05ld09i
amVjdF0gU1ZHUG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG9mZnNldCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IGdldEVuZFBvc2l0aW9u
T2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgW05ld09iamVj
dF0gU1ZHUmVjdCBnZXRFeHRlbnRPZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQg
PSAwKTsKKyAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Um90YXRpb25PZkNoYXIob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKICAgICBsb25nIGdldENoYXJOdW1BdFBvc2l0aW9u
KFNWR1BvaW50IHBvaW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2VsZWN0U3Vi
U3RyaW5nKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwgb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBsZW5ndGggPSAwKTsKKyAgICB2b2lkIHNlbGVjdFN1YlN0cmluZyhvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0g
MCk7CiB9OwogCiAvLyBGSVhNRTogU1ZHVGV4dENvbnRlbnRFbGVtZW50IGlzIG5vdCBzdXBwb3Nl
ZCB0byBpbXBsZW1lbnQgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDEx
IEBACiAgICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR01hdHJpeCBtYXRyaXg7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNYXRyaXgoU1ZHTWF0cml4IG1hdHJpeCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFRyYW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZmxv
YXQgdHgsIHVucmVzdHJpY3RlZCBmbG9hdCB0eSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNldFNjYWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Um90YXRlKHVucmVzdHJpY3RlZCBm
bG9hdCBhbmdsZSwgdW5yZXN0cmljdGVkIGZsb2F0IGN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3kp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTa2V3WCh1bnJlc3RyaWN0ZWQgZmxv
YXQgYW5nbGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTa2V3WSh1bnJlc3Ry
aWN0ZWQgZmxvYXQgYW5nbGUpOworICAgIHZvaWQgc2V0TWF0cml4KFNWR01hdHJpeCBtYXRyaXgp
OworICAgIHZvaWQgc2V0VHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB0eCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHR5KTsKKyAgICB2b2lkIHNldFNjYWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzeCwg
dW5yZXN0cmljdGVkIGZsb2F0IHN5KTsKKyAgICB2b2lkIHNldFJvdGF0ZSh1bnJlc3RyaWN0ZWQg
ZmxvYXQgYW5nbGUsIHVucmVzdHJpY3RlZCBmbG9hdCBjeCwgdW5yZXN0cmljdGVkIGZsb2F0IGN5
KTsKKyAgICB2b2lkIHNldFNrZXdYKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7CisgICAgdm9p
ZCBzZXRTa2V3WSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwogfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxNCArMjcsMTQgQEAKIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0IHsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFu
c2Zvcm0gaW5pdGlhbGl6ZShTVkdUcmFuc2Zvcm0gaXRlbSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBTVkdUcmFuc2Zvcm0gZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBpbnNlcnRJdGVtQmVmb3JlKFNWR1RyYW5zZm9y
bSBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNW
R1RyYW5zZm9ybSByZXBsYWNlSXRlbShTVkdUcmFuc2Zvcm0gaXRlbSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gcmVtb3ZlSXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9y
bSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAg
U1ZHVHJhbnNmb3JtIGluaXRpYWxpemUoU1ZHVHJhbnNmb3JtIGl0ZW0pOworICAgIFNWR1RyYW5z
Zm9ybSBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5zZm9ybSBpbnNl
cnRJdGVtQmVmb3JlKFNWR1RyYW5zZm9ybSBpdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBTVkdUcmFuc2Zvcm0gcmVwbGFjZUl0ZW0oU1ZHVHJhbnNmb3JtIGl0ZW0sIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworICAgIFNWR1RyYW5zZm9ybSByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOworICAgIFNWR1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXggbWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIE5ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CisgICAgW05ld09i
amVjdF0gU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4
IG1hdHJpeCk7CisgICAgW05ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw1OCArMzMsNTggQEAgZW51bSBGb250TG9hZFRp
bWluZ092ZXJyaWRlIHsgIkJsb2NrIiwgIgogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAg
IEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgSW50
ZXJuYWxTZXR0aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOworICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbGVhbiBl
bmFibGVkKTsKIAogICAgIC8vIEZvbnRzLCB0ZXh0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHNldFN0YW5kYXJkRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2Ny
aXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KERP
TVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmlu
ZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGaXhlZEZvbnRGYW1p
bHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGYW50YXN5Rm9u
dEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWls
eSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEZv
bnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyhib29sZWFuIHByZWZlclBpY3RvZ3JhcGhzKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9udExvYWRUaW1pbmdPdmVycmlkZShG
b250TG9hZFRpbWluZ092ZXJyaWRlIG92ZXJyaWRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0U2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucyhib29sZWFuIGlnbm9yZSk7
CisgICAgdm9pZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3Ry
aW5nIHNjcmlwdCk7CisgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWls
eSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KERP
TVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0Rml4ZWRGb250
RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0
Q3Vyc2l2ZUZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Cisg
ICAgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcg
c2NyaXB0KTsKKyAgICB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KERPTVN0cmluZyBmYW1p
bHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHZvaWQgc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1Bp
Y3RvZ3JhcGhzKGJvb2xlYW4gcHJlZmVyUGljdG9ncmFwaHMpOworICAgIHZvaWQgc2V0Rm9udExv
YWRUaW1pbmdPdmVycmlkZShGb250TG9hZFRpbWluZ092ZXJyaWRlIG92ZXJyaWRlKTsKKyAgICB2
b2lkIHNldFNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoYm9vbGVhbiBpZ25vcmUpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChi
b29sZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRUZXh0QXV0
b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZShsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CisgICAg
dm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lk
IHNldFRleHRBdXRvc2l6aW5nV2luZG93U2l6ZU92ZXJyaWRlKGxvbmcgd2lkdGgsIGxvbmcgaGVp
Z2h0KTsKIAogICAgIC8vIE1lZGlhCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldENh
blN0YXJ0TWVkaWEoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJB
Q0ssIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9N
U3RyaW5nIGtpbmQsIGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RS
QUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzaG91bGREaXNwbGF5VHJhY2tLaW5kKERP
TVN0cmluZyB0cmFja0tpbmQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwoRE9NU3RyaW5nIHBvc3Rlcik7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xz
KHVucmVzdHJpY3RlZCBkb3VibGUgdGltZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHNldE1lZGlhVHlwZU92ZXJyaWRlKERPTVN0cmluZyBtZWRpYVR5cGVPdmVycmlkZSk7CisgICAg
dm9pZCBzZXRDYW5TdGFydE1lZGlhKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgW0NvbmRpdGlvbmFs
PVZJREVPX1RSQUNLXSB2b2lkIHNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9NU3RyaW5nIGtp
bmQsIGJvb2xlYW4gZW5hYmxlZCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSBib29s
ZWFuIHNob3VsZERpc3BsYXlUcmFja0tpbmQoRE9NU3RyaW5nIHRyYWNrS2luZCk7CisgICAgdm9p
ZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoRE9NU3RyaW5nIHBvc3Rlcik7CisgICAgdm9pZCBz
ZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyh1bnJlc3RyaWN0
ZWQgZG91YmxlIHRpbWUpOworICAgIHZvaWQgc2V0TWVkaWFUeXBlT3ZlcnJpZGUoRE9NU3RyaW5n
IG1lZGlhVHlwZU92ZXJyaWRlKTsKICAgICB2b2lkIHNldEFsbG93c0FpclBsYXlGb3JNZWRpYVBs
YXliYWNrKGJvb2xlYW4gYXZhaWxhYmxlKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNv
bm5lY3Rpb24oYm9vbGVhbiBlbmFibGUpOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1d
IHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJvb2xlYW4gZW5h
YmxlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGb3JjZVBlbmRpbmdXZWJH
TFBvbGljeShib29sZWFuIGZvcmNlZCk7CisgICAgdm9pZCBzZXRGb3JjZVBlbmRpbmdXZWJHTFBv
bGljeShib29sZWFuIGZvcmNlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFlvdVR1YmVGbGFzaFBsdWdpblJlcGxhY2VtZW50
RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0UXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRZb3VUdWJlRmxh
c2hQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAogICAgIC8vIEVk
aXRpbmcsIGZvcm1zCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEVkaXRpbmdCZWhh
dmlvcihET01TdHJpbmcgYmVoYXZpb3IpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRTaG91bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weShib29sZWFuIGNvbnZlcnRQb3NpdGlv
bik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByZWZlck1JTUVUeXBlRm9ySW1h
Z2VzKGJvb2xlYW4gcHJlZmVyTWltZVR5cGVGb3JJbWFnZSk7CisgICAgdm9pZCBzZXRFZGl0aW5n
QmVoYXZpb3IoRE9NU3RyaW5nIGJlaGF2aW9yKTsKKyAgICB2b2lkIHNldFNob3VsZENvbnZlcnRQ
b3NpdGlvblN0eWxlT25Db3B5KGJvb2xlYW4gY29udmVydFBvc2l0aW9uKTsKKyAgICB2b2lkIHNl
dFByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKGJvb2xlYW4gcHJlZmVyTWltZVR5cGVGb3JJbWFnZSk7
CiAKICAgICAvLyBPdGhlciBzd2l0Y2hlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5KERPTVN0cmlu
ZyBwb2xpY3kpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRVc2VMZWdhY3lCYWNr
Z3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcEVuYWJsZWQoYm9v
bGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QmFja2dyb3Vu
ZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoYm9vbGVhbiBoYXNFeHRlbmRlZEJhY2tncm91bmQpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFt
ZXMoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QWxs
b3dVbmNsYW1wZWRTY3JvbGxQb3NpdGlvbihib29sZWFuIGFsbG93VW5jbGFtcGVkKTsKLQotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh1bnJlc3Ry
aWN0ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayhib29sZWFuIGFsbG93cyk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRl
ckZ1bGxzY3JlZW4oYm9vbGVhbiBhbGxvd3MpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZShib29s
ZWFuIHJlcXVpcmVzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RnJhbWVGbGF0
dGVuaW5nKEZyYW1lRmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7CisgICAgdm9pZCBz
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7CisgICAgdm9pZCBzZXRJ
bWFnZXNFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRQREZJbWFnZUNhY2hp
bmdQb2xpY3koRE9NU3RyaW5nIHBvbGljeSk7CisgICAgdm9pZCBzZXRVc2VMZWdhY3lCYWNrZ3Jv
dW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9pZCBzZXRB
dXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3BFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZShib29sZWFuIGhhc0V4dGVuZGVk
QmFja2dyb3VuZCk7CisgICAgdm9pZCBzZXRTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXMoYm9v
bGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNldEFsbG93VW5jbGFtcGVkU2Nyb2xsUG9zaXRpb24o
Ym9vbGVhbiBhbGxvd1VuY2xhbXBlZCk7CisKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVy
dmFsKHVucmVzdHJpY3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOworICAgIHZvaWQgc2V0
QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayhib29sZWFuIGFsbG93cyk7CisgICAgdm9pZCBzZXRB
bGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuKGJvb2xlYW4gYWxsb3dzKTsK
KyAgICB2b2lkIHNldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmli
dXRlKGJvb2xlYW4gcmVxdWlyZXMpOworICAgIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nKEZyYW1l
RmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7CiAKICAgICAvLyBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLgogICAgIHZvaWQgc2V0SW5kZXhlZERCV29ya2Vyc0VuYWJsZWQoYm9vbGVhbiBl
bmFibGVkKTsKQEAgLTkzLDIxICs5MywyMSBAQCBlbnVtIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUg
eyAiQmxvY2siLCAiCiAgICAgdm9pZCBzZXRXZWJHUFVFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7
CiAgICAgdm9pZCBzZXRXZWJWUkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0VXNlckludGVyZmFjZURpcmVjdGlvblBv
bGljeShET01TdHJpbmcgcG9saWN5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBzeXN0ZW1MYXlvdXREaXJlY3Rpb24oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKERPTVN0cmluZyBkaXJlY3Rpb24pOworICAgIERPTVN0
cmluZyB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KCk7CisgICAgdm9pZCBzZXRVc2VySW50
ZXJmYWNlRGlyZWN0aW9uUG9saWN5KERPTVN0cmluZyBwb2xpY3kpOworICAgIERPTVN0cmluZyBz
eXN0ZW1MYXlvdXREaXJlY3Rpb24oKTsKKyAgICB2b2lkIHNldFN5c3RlbUxheW91dERpcmVjdGlv
bihET01TdHJpbmcgZGlyZWN0aW9uKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVh
biBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgYm9v
bGVhbiBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQoKTsKKyAgICB2b2lkIHNldERlZmVycmVkQ1NT
UGFyc2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoYm9vbGVh
biBzaG91bGRNb2NrKTsKKyAgICB2b2lkIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFj
Y2Vzc2liaWxpdHkoYm9vbGVhbiBzaG91bGRNb2NrKTsKIAogICAgIGF0dHJpYnV0ZSBGb3JjZWRB
Y2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRBY2Nlc3NpYmlsaXR5VmFs
dWU7CiAgICAgYXR0cmlidXRlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3JjZWREaXNwbGF5
SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlOwogICAgIGF0dHJpYnV0ZSBGb3JjZWRBY2Nl
c3NpYmlsaXR5VmFsdWUgZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFs
dWU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2hvdWxkTWFuYWdlQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnkoYm9vbGVhbiBzaG91bGQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAg
ICB2b2lkIHNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KGJvb2xlYW4gc2hvdWxk
KTsKKyAgICB2b2lkIHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29sZWFuIGVuYWJs
ZWQpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNp
b24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Ig
ewogICAgIGJvb2xlYW4gaXNQYWludGluZ0ZyZXF1ZW50bHkoRWxlbWVudCBlbGVtZW50KTsKICAg
ICB2b2lkIGluY3JlbWVudEZyZXF1ZW50UGFpbnRDb3VudGVyKEVsZW1lbnQgZWxlbWVudCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4
dChFbGVtZW50IGVsZW1lbnQpOworICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4
dChFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoRE9NU3RyaW5nIHVy
bCk7CiAgICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoRE9NU3RyaW5nIHVybCk7
CiAgICAgRE9NU3RyaW5nIGZldGNoUmVzcG9uc2VTb3VyY2UoRmV0Y2hSZXNwb25zZSByZXNwb25z
ZSk7CkBAIC0xMjUsOTMgKzEyNSw5MyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsK
ICAgICBsb25nIGRlZmVycmVkR3JvdXBSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hlZXQpOwogICAg
IGxvbmcgZGVmZXJyZWRLZXlmcmFtZXNSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hlZXQpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUoTm9kZSByb290
KTsKKyAgICBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUoTm9kZSByb290KTsKICAgICBET01TdHJp
bmcgc2hhZG93UHNldWRvSWQoRWxlbWVudCBlbGVtZW50KTsKICAgICB2b2lkIHNldFNoYWRvd1Bz
ZXVkb0lkKEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGlkKTsKICAgICBOb2RlIHRyZWVTY29w
ZVJvb3ROb2RlKE5vZGUgbm9kZSk7CiAgICAgTm9kZSBwYXJlbnRUcmVlU2NvcGUoTm9kZSBub2Rl
KTsKIAogICAgIC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50
KCk7CisgICAgdW5zaWduZWQgbG9uZyBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3Vu
dCgpOwogCiAgICAgLy8gQ1NTIEFuaW1hdGlvbiB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IHN1c3BlbmRBbmltYXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlc3Vt
ZUFuaW1hdGlvbnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gYW5pbWF0aW9u
c0FyZVN1c3BlbmRlZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBwYXVzZUFu
aW1hdGlvbkF0VGltZU9uRWxlbWVudChET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0
cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVu
dCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQpOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoKTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBib29sZWFuIGFuaW1hdGlv
bnNBcmVTdXNwZW5kZWQoKTsKKyAgICBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVt
ZW50KERPTVN0cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGlt
ZSwgRWxlbWVudCBlbGVtZW50KTsKKyAgICBib29sZWFuIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Q
c2V1ZG9FbGVtZW50KERPTVN0cmluZyBhbmltYXRpb25OYW1lLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQpOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYW5pbWF0aW9uc0ludGVydmFsOwogCiAgICAgLy8gQ1NT
IFRyYW5zaXRpb24gdGVzdGluZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gcGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIHVucmVz
dHJpY3RlZCBkb3VibGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQo
RE9NU3RyaW5nIHByb3BlcnR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVu
dCBlbGVtZW50LCBET01TdHJpbmcgcHNldWRvSWQpOworICAgIGJvb2xlYW4gcGF1c2VUcmFuc2l0
aW9uQXRUaW1lT25FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIHVucmVzdHJpY3RlZCBk
b3VibGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOworICAgIGJvb2xlYW4gcGF1c2VUcmFu
c2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KERPTVN0cmluZyBwcm9wZXJ0eSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHBzZXVkb0lk
KTsKIAogICAgIERPTVN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50KTsK
ICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0RWxlbWVudCBlbGVt
ZW50LCBET01TdHJpbmcgY29sb3JWYWx1ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBzZXF1
ZW5jZTxET01TdHJpbmc+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlv
dXNIaXN0b3J5SXRlbShzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7CisgICAgc2VxdWVuY2U8
RE9NU3RyaW5nPiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCk7CisgICAg
dm9pZCBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKHNlcXVlbmNlPERP
TVN0cmluZz4gdmFsdWVzKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBhYnNv
bHV0ZUNhcmV0Qm91bmRzKCk7CisgICAgRE9NUmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAK
ICAgICBET01SZWN0IGJvdW5kaW5nQm94KEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIERPTVJlY3RMaXN0IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KCk7
CisgICAgRE9NUmVjdExpc3QgaW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoKTsKKyAgICBET01TdHJp
bmcgaW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1h
cmtlclR5cGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IG1hcmtlclJhbmdlRm9y
Tm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBsb25nIGluZGV4
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZv
ck5vZGUoTm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZHVtcE1hcmtlclJlY3RzKERP
TVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9k
ZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICBSYW5nZT8gbWFya2VyUmFu
Z2VGb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUsIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9kZSBub2Rl
LCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgRE9NU3Ry
aW5nIGR1bXBNYXJrZXJSZWN0cyhET01TdHJpbmcgbWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRU
ZXh0TWF0Y2hNYXJrZXIoUmFuZ2UgcmFuZ2UsIGJvb2xlYW4gaXNBY3RpdmUpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJv
b2xlYW4gZmxhZyk7CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KGJvb2xlYW4gZmxhZyk7CiAKICAgICB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKTsKICAgICB2
b2lkIHNldEZvbnRTbW9vdGhpbmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGxvbmcgeCwgbG9uZyB5
KTsKKyAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihsb25nIHgsIGxvbmcgeSk7CiAKICAg
ICAvLyBMaWtlIEVsZW1lbnQuc2Nyb2xsVG8oKSwgYnV0IHdpdGhvdXQgY29uc3RhaW50cywgZm9y
IHRlc3RpbmcgcnViYmVyLWJhbmRpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHVu
Y29uc3RyYWluZWRTY3JvbGxUbyhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUg
eCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICB2b2lkIHVuY29uc3RyYWluZWRTY3JvbGxU
byhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRv
dWJsZSB5KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBsYXlvdXRWaWV3cG9y
dFJlY3QoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgdmlzdWFsVmlld3BvcnRS
ZWN0KCk7CisgICAgRE9NUmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKTsKKyAgICBET01SZWN0IHZp
c3VhbFZpZXdwb3J0UmVjdCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFZp
ZXdCYXNlQmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsKKyAgICB2b2lkIHNl
dFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRQYWdpbmF0aW9uKERPTVN0cmluZyBtb2RlLCBsb25n
IGdhcCwgb3B0aW9uYWwgbG9uZyBwYWdlTGVuZ3RoID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsK
KyAgICB2b2lkIHNldFBhZ2luYXRpb24oRE9NU3RyaW5nIG1vZGUsIGxvbmcgZ2FwLCBvcHRpb25h
bCBsb25nIHBhZ2VMZW5ndGggPSAwKTsKKyAgICB2b2lkIHNldFBhZ2luYXRpb25MaW5lR3JpZEVu
YWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIGNvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCh1bnJlc3RyaWN0ZWQgZmxvYXQgZGV2aWNlUGl4
ZWxSYXRpbywgbG9uZyBkZXZpY2VXaWR0aCwgbG9uZyBkZXZpY2VIZWlnaHQsIGxvbmcgYXZhaWxh
YmxlV2lkdGgsIGxvbmcgYXZhaWxhYmxlSGVpZ2h0KTsKKyAgICBET01TdHJpbmcgY29uZmlndXJh
dGlvbkZvclZpZXdwb3J0KHVucmVzdHJpY3RlZCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvLCBsb25n
IGRldmljZVdpZHRoLCBsb25nIGRldmljZUhlaWdodCwgbG9uZyBhdmFpbGFibGVXaWR0aCwgbG9u
ZyBhdmFpbGFibGVIZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHdh
c0xhc3RDaGFuZ2VVc2VyRWRpdChFbGVtZW50IHRleHRGaWVsZCk7CisgICAgYm9vbGVhbiB3YXNM
YXN0Q2hhbmdlVXNlckVkaXQoRWxlbWVudCB0ZXh0RmllbGQpOwogICAgIGJvb2xlYW4gZWxlbWVu
dFNob3VsZEF1dG9Db21wbGV0ZShIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCk7CiAgICAg
dm9pZCBzZXRFZGl0aW5nVmFsdWUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIERPTVN0
cmluZyB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQgaW5w
dXRFbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0
dG9uKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBBdXRvRmlsbEJ1dHRvblR5cGUgYXV0
b0ZpbGxCdXR0b25UeXBlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdl
T2ZTdHJpbmcoRE9NU3RyaW5nIHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2VxdWVuY2U8
RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0
cmluZz4gZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRleHQs
IHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOworICAgIFJhbmdlPyByYW5nZU9mU3Ry
aW5nKERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0
cmluZz4gZmluZE9wdGlvbnMpOworICAgIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4
dChET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3Ry
aW5nIG1hcmtNYXRjaGVzKTsKKyAgICB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9N
U3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCBmb3Jt
Q29udHJvbEVsZW1lbnQpOworICAgIERPTVN0cmluZyBhdXRvZmlsbEZpZWxkTmFtZShFbGVtZW50
IGZvcm1Db250cm9sRWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcGFp
bnRDb250cm9sVGludHMoKTsKKyAgICB2b2lkIHBhaW50Q29udHJvbFRpbnRzKCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50IGVsZW1l
bnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CisgICAgdm9pZCBzY3JvbGxFbGVt
ZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBo
KTsKIAogICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3Bl
LCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxv
bmcgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsK
ICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIFJhbmdlIHN1YnJh
bmdlKFJhbmdlIHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24obG9uZyB4LCBsb25nIHkpOworICAgIFJhbmdlPyByYW5nZUZvckRpY3Rpb25hcnlM
b29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFuZ2VPZlN0cmlu
Z05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcgdGFyZ2V0T2Zm
c2V0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWxlZ2F0ZXNTY3JvbGxp
bmcoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGluZyhib29s
ZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGxhc3RTcGVsbENo
ZWNrUmVxdWVzdFNlcXVlbmNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGxhc3RT
cGVsbENoZWNrUHJvY2Vzc2VkU2VxdWVuY2UoKTsKKyAgICBsb25nIGxhc3RTcGVsbENoZWNrUmVx
dWVzdFNlcXVlbmNlKCk7CisgICAgbG9uZyBsYXN0U3BlbGxDaGVja1Byb2Nlc3NlZFNlcXVlbmNl
KCk7CiAKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
ICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoc2VxdWVuY2U8RE9NU3RyaW5nPiBs
YW5ndWFnZXMpOwpAQCAtMjE5LDEzICsyMTksMTMgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhh
dmlvciB7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiB1c2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0
ZXJpc3RpY3MoKTsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGlj
KERPTVN0cmluZyBjaGFyYWN0ZXJpc3RpYyk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
c2lnbmVkIGxvbmcgd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5zaWduZWQgbG9uZyB0b3VjaEV2ZW50SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWdu
ZWQgbG9uZyB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWduZWQgbG9uZyB0b3Vj
aEV2ZW50SGFuZGxlckNvdW50KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3RM
aXN0IHRvdWNoRXZlbnRSZWN0c0ZvckV2ZW50KERPTVN0cmluZyBldmVudE5hbWUpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRMaXN0ZW5lclJl
Y3RzKCk7CisgICAgRE9NUmVjdExpc3QgdG91Y2hFdmVudFJlY3RzRm9yRXZlbnQoRE9NU3RyaW5n
IGV2ZW50TmFtZSk7CisgICAgRE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRMaXN0ZW5lclJl
Y3RzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGVMaXN0PyBub2Rlc0Zyb21SZWN0
KERvY3VtZW50IGRvY3VtZW50LCBsb25nIHgsIGxvbmcgeSwKKyAgICBOb2RlTGlzdD8gbm9kZXNG
cm9tUmVjdChEb2N1bWVudCBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksCiAgICAgICAgIHVuc2ln
bmVkIGxvbmcgdG9wUGFkZGluZywgdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIHVuc2lnbmVk
IGxvbmcgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKICAgICAgICAg
Ym9vbGVhbiBpZ25vcmVDbGlwcGluZywgYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2xl
YW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBlbnVtIEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZTY3Jv
bGxhYmxlQXJlYXMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1BhZ2VC
b3hWaXNpYmxlKGxvbmcgcGFnZU51bWJlcik7CisgICAgYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxl
KGxvbmcgcGFnZU51bWJlcik7CiAKICAgICB1bnNpZ25lZCBsb25nIGltYWdlRnJhbWVJbmRleChI
VE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHZvaWQgc2V0SW1hZ2VGcmFtZURlY29kaW5n
RHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHVy
YXRpb24pOwpAQCAtMjY2LDggKzI2Niw4IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Ig
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJbnRlcm5hbFNldHRpbmdzIHNldHRpbmdzOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdvcmtlclRocmVhZENvdW50OwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhcmVTVkdB
bmltYXRpb25zUGF1c2VkOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZG91YmxlIHN2Z0FuaW1h
dGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQpOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGFyZVNWR0FuaW1hdGlvbnNQYXVzZWQ7CisgICAgZG91YmxlIHN2Z0FuaW1h
dGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQpOwogCiAgICAgLy8gRmxhZ3MgZm9y
IGxheWVyVHJlZUFzVGV4dC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lO
Q0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAxOwpAQCAtMjc3LDMxICsyNzcsMzEgQEAgZW51bSBFdmVu
dFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJF
RV9JTkNMVURFU19DT05URU5UX0xBWUVSUyA9IDE2OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IExBWUVSX1RSRUVfSU5DTFVERVNfQUNDRUxFUkFURVNfRFJBV0lORyA9IDMyOwogICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfQkFDS0lOR19TVE9SRV9BVFRBQ0hF
RCA9IDY0OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4
dChEb2N1bWVudCBkb2N1bWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsK
KyAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50IGRvY3VtZW50LCBvcHRpb25h
bCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bnNpZ25lZCBsb25nIGxvbmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50KTsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIG1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zKCk7IC8vIEZJWE1FOiByZW5hbWUgdG8gc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKCkuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCBub25GYXN0U2Ny
b2xsYWJsZVJlY3RzKCk7CisgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgp
OworICAgIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpOyAvLyBGSVhNRTog
cmVuYW1lIHRvIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpLgorICAgIERPTVJlY3RMaXN0
IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9N
U3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNB
c1RleHQoKTsKIAogICAgIC8vIFRoZXNlIHRocm93IGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhh
dmUgYSBjb21wb3NpdGluZyBsYXllci4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
RWxlbWVudFVzZXNEaXNwbGF5TGlzdERyYXdpbmcoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRF
bGVtZW50VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHRy
YWNrUmVwbGF5KTsKKyAgICB2b2lkIHNldEVsZW1lbnRVc2VzRGlzcGxheUxpc3REcmF3aW5nKEVs
ZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB1c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKKyAgICB2b2lk
IHNldEVsZW1lbnRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShFbGVtZW50IGVsZW1lbnQsIGJvb2xl
YW4gdHJhY2tSZXBsYXkpOwogCiAgICAgLy8gRmxhZ3MgZm9yIGRpc3BsYXlMaXN0Rm9yRWxlbWVu
dC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZP
Uk1fT1BFUkFUSU9OUyA9IDE7CiAgICAgLy8gUmV0dXJucyB0aGUgcmVjb3JkZWQgZGlzcGxheSBs
aXN0LgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxl
bWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7
CisgICAgRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9w
dGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAgICAgLy8gUmV0dXJucyB0aGUgZGlz
cGxheSBsaXN0IHRoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQuCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgcmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVu
dCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01TdHJpbmcgcmVw
bGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBnYXJi
YWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7CisgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERv
Y3VtZW50UmVzb3VyY2VzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0
QXV0aG9yQ1NTKERPTVN0cmluZyBjc3MpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBp
bnNlcnRVc2VyQ1NTKERPTVN0cmluZyBjc3MpOworICAgIHZvaWQgaW5zZXJ0QXV0aG9yQ1NTKERP
TVN0cmluZyBjc3MpOworICAgIHZvaWQgaW5zZXJ0VXNlckNTUyhET01TdHJpbmcgY3NzKTsKIAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVW5kZXJNZW1vcnlQcmVzc3VyZTsKICAg
ICB2b2lkIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKQEAgLTMxMiwyNiArMzEyLDI2
IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHVuc2lnbmVkIGxvbmcgcmVm
ZXJlbmNpbmdOb2RlQ291bnQoRG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIERPTVdpbmRvdz8gb3Bl
bkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoRE9NU3RyaW5nIHVybCk7CiAgICAgdm9pZCBjbG9zZUR1
bW15SW5zcGVjdG9yRnJvbnRlbmQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0
SW5zcGVjdG9ySXNVbmRlclRlc3QoYm9vbGVhbiBpc1VuZGVyVGVzdCk7CisgICAgdm9pZCBzZXRJ
bnNwZWN0b3JJc1VuZGVyVGVzdChib29sZWFuIGlzVW5kZXJUZXN0KTsKIAogICAgIERPTVN0cmlu
ZyBjb3VudGVyVmFsdWUoRWxlbWVudCBlbGVtZW50KTsKICAgICBsb25nIHBhZ2VOdW1iZXIoRWxl
bWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZVdpZHRoID0gODAw
LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZUhlaWdodCA9IDYwMCk7CiAgICAgc2Vx
dWVuY2U8RE9NU3RyaW5nPiBzaG9ydGN1dEljb25VUkxzKCk7CiAgICAgbG9uZyBudW1iZXJPZlBh
Z2VzKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMgPSA4MDAs
IG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzID0gNjAwKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYWdlUHJvcGVydHkoRE9NU3RyaW5n
IHByb3BlcnR5TmFtZSwgbG9uZyBwYWdlTnVtYmVyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IERPTVN0cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhsb25nIHBhZ2VJbmRleCwgbG9u
ZyB3aWR0aCwgbG9uZyBoZWlnaHQsIGxvbmcgbWFyZ2luVG9wLCBsb25nIG1hcmdpblJpZ2h0LCBs
b25nIG1hcmdpbkJvdHRvbSwgbG9uZyBtYXJnaW5MZWZ0KTsKKyAgICBET01TdHJpbmcgcGFnZVBy
b3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7CisgICAgRE9N
U3RyaW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGxvbmcgcGFnZUluZGV4LCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCwgbG9uZyBtYXJnaW5Ub3AsIGxvbmcgbWFyZ2luUmlnaHQsIGxvbmcg
bWFyZ2luQm90dG9tLCBsb25nIG1hcmdpbkxlZnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldFBhZ2VTY2FsZUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3Is
IGxvbmcgeCwgbG9uZyB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcigpOworICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9h
dCBzY2FsZUZhY3RvciwgbG9uZyB4LCBsb25nIHkpOworICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cigpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFBhZ2Vab29tRmFjdG9yKHVu
cmVzdHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0VGV4dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOworICAg
IHZvaWQgc2V0UGFnZVpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOwor
ICAgIHZvaWQgc2V0VGV4dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3Ip
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2xl
YW4gdXNlRml4ZWRMYXlvdXQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGaXhl
ZExheW91dFNpemUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgc2V0VXNlRml4
ZWRMYXlvdXQoYm9vbGVhbiB1c2VGaXhlZExheW91dCk7CisgICAgdm9pZCBzZXRGaXhlZExheW91
dFNpemUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcobG9u
ZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dFZpZXdFeHBvc2VkUmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0
IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7
CisgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVz
dHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBm
bG9hdCBoZWlnaHQpOwogCiAgICAgdm9pZCBzZXRIZWFkZXJIZWlnaHQodW5yZXN0cmljdGVkIGZs
b2F0IGhlaWdodCk7CiAgICAgdm9pZCBzZXRGb290ZXJIZWlnaHQodW5yZXN0cmljdGVkIGZsb2F0
IGhlaWdodCk7CkBAIC0zNTgsNDEgKzM1OCw0MSBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBib3RoIHJlc2V0IHRoZSB0cmFja2VkIHJl
cGFpbnQgcmVjdHMuIFRoZXkgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2lu
ZyBvcmRlcjoKICAgICAvLyAgc3RhcnRUcmFja2luZ1JlcGFpbnRzLCByZXBhaW50UmVjdHNBc1Rl
eHQsIHN0b3BUcmFja2luZ1JlcGFpbnRzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
dGFydFRyYWNraW5nUmVwYWludHMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3Rv
cFRyYWNraW5nUmVwYWludHMoKTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwor
ICAgIHZvaWQgc3RvcFRyYWNraW5nUmVwYWludHMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bnNpZ25lZCBsb25nIGxheWVyRmx1c2hDb3VudCgpOworICAgIHZvaWQgc3RhcnRUcmFj
a2luZ0xheWVyRmx1c2hlcygpOworICAgIHVuc2lnbmVkIGxvbmcgbGF5ZXJGbHVzaENvdW50KCk7
CiAKICAgICAvLyBRdWVyeSBpZiBhIHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRsZWQsIHRvIGRl
YnVnIHRpbWVyIHRocm90dGxpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGlz
VGltZXJUaHJvdHRsZWQobG9uZyB0aW1lckhhbmRsZSk7CisgICAgYm9vbGVhbiBpc1RpbWVyVGhy
b3R0bGVkKGxvbmcgdGltZXJIYW5kbGUpOwogCiAgICAgYm9vbGVhbiBpc1JlcXVlc3RBbmltYXRp
b25GcmFtZVRocm90dGxlZCgpOwogICAgIGJvb2xlYW4gYXJlVGltZXJzVGhyb3R0bGVkKCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TG93UG93ZXJNb2RlRW5hYmxlZChib29s
ZWFuIGVuYWJsZWQpOworICAgIHZvaWQgc2V0TG93UG93ZXJNb2RlRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lSW50ZXJ2YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc2NyaXB0ZWRBbmlt
YXRpb25zQXJlU3VzcGVuZGVkOwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIFdl
YlBhZ2U6OmV2ZW50VGhyb3R0bGluZ0RlbGF5KCksIHdoaWNoIG9ubHkgYWZmZWN0cyBpT1MuCiAg
ICAgYXR0cmlidXRlIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPyBldmVudFRocm90dGxpbmdCZWhh
dmlvck92ZXJyaWRlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHN0YXJ0VHJhY2tp
bmdTdHlsZVJlY2FsY3MoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcg
c3R5bGVSZWNhbGNDb3VudCgpOworICAgIHZvaWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygp
OworICAgIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxhc3RTdHlsZVVwZGF0ZVNpemU7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc3RhcnRUcmFja2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50
KCk7CisgICAgdm9pZCBzdGFydFRyYWNraW5nQ29tcG9zaXRpbmdVcGRhdGVzKCk7CisgICAgdW5z
aWduZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CiAKICAgICAvLyB8bm9kZXwgc2hv
dWxkIGJlIERvY3VtZW50LCBIVE1MSUZyYW1lRWxlbWVudCwgb3IgdW5zcGVjaWZpZWQuCiAgICAg
Ly8gSWYgfG5vZGV8IGlzIGFuIEhUTUxJRnJhbWVFbGVtZW50LCBpdCBhc3N1bWVzIG5vZGUuY29u
dGVudERvY3VtZW50IGlzCiAgICAgLy8gc3BlY2lmaWVkIHdpdGhvdXQgc2VjdXJpdHkgY2hlY2tz
LiBVbnNwZWNpZmllZCBvciBudWxsIG1lYW5zIHRoaXMgZG9jdW1lbnQuCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0FuZFJ1
blBvc3RMYXlvdXRUYXNrcyhvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7CisgICAgdm9pZCB1
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5b3V0VGFza3Mo
b3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGF5b3V0Q291bnQ7CiAKICAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGgg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG1vdXNlIGN1cnNvciB1c2VkIGF0IHRoZSBzcGVjaWZpZWQg
Y2xpZW50IGxvY2F0aW9uLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldEN1
cnJlbnRDdXJzb3JJbmZvKCk7CisgICAgRE9NU3RyaW5nIGdldEN1cnJlbnRDdXJzb3JJbmZvKCk7
CiAKICAgICBET01TdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQgZWxlbWVudCk7
CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIHNlcXVlbmNlPERPTVN0cmluZz4gbWVkaWFSZXNwb25zZVNv
dXJjZXMoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBz
ZXF1ZW5jZTxET01TdHJpbmc+IG1lZGlhUmVzcG9uc2VDb250ZW50UmFuZ2VzKEhUTUxNZWRpYUVs
ZW1lbnQgbWVkaWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBzaW11bGF0ZUF1ZGlv
SW50ZXJydXB0aW9uKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW0NvbmRpdGlvbmFs
PVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBtZWRpYUVsZW1lbnRIYXNDaGFyYWN0
ZXJpc3RpYyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBjaGFyYWN0ZXJpc3Rp
Yyk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIG1lZGlhRWxlbWVudEhhc0NoYXJh
Y3RlcmlzdGljKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGNoYXJhY3Rlcmlz
dGljKTsKIAogICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBXSB2b2lkIGlu
aXRpYWxpemVNb2NrQ0RNKCk7CiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV0gTW9j
a0NETUZhY3RvcnkgcmVnaXN0ZXJNb2NrQ0RNKCk7CkBAIC00MjMsMTAgKzQyMywxMCBAQCBlbnVt
IEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIERPTVN0cmluZyBnZXRJbWFnZVNvdXJj
ZVVSTChFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7
Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShET01TdHJpbmcgb3ZlcnJpZGUpOwotICAgIFtD
b25kaXRpb25hbD1WSURFT19UUkFDSywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UHJpbWFy
eUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKERPTVN0cmluZyBsYW5ndWFnZSk7Ci0gICAgW0Nv
bmRpdGlvbmFsPVZJREVPX1RSQUNLLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRDYXB0aW9u
RGlzcGxheU1vZGUoRE9NU3RyaW5nIG1vZGUpOworICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFD
S10gRE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CisgICAgW0NvbmRpdGlv
bmFsPVZJREVPX1RSQUNLXSB2b2lkIHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKERPTVN0
cmluZyBvdmVycmlkZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLXSB2b2lkIHNldFBy
aW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZShET01TdHJpbmcgbGFuZ3VhZ2UpOworICAg
IFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gdm9pZCBzZXRDYXB0aW9uRGlzcGxheU1vZGUoRE9N
U3RyaW5nIG1vZGUpOwogCiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBUaW1lUmFuZ2VzIGNyZWF0
ZVRpbWVSYW5nZXMoRmxvYXQzMkFycmF5IHN0YXJ0VGltZXMsIEZsb2F0MzJBcnJheQogICAgICBl
bmRUaW1lcyk7CkBAIC00MzQsMTcgKzQzNCwxNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yIHsKIAogICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUoSFRNTFNlbGVjdEVsZW1l
bnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CisgICAgYm9v
bGVhbiBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCBlbGVt
ZW50KTsKICAgICBib29sZWFuIGlzUGx1Z2luU25hcHNob3R0ZWQoRWxlbWVudCBlbGVtZW50KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBzZWxlY3Rpb25Cb3VuZHMoKTsKKyAg
ICBET01SZWN0IHNlbGVjdGlvbkJvdW5kcygpOwogCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NP
VVJDRV0gdm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NPVVJDRV0gc2VxdWVuY2U8RE9NU3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFj
a0lEKFNvdXJjZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lEKTsKICAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU09VUkNFXSBzZXF1ZW5jZTxET01TdHJpbmc+IGVucXVldWVkU2FtcGxlc0Zv
clRyYWNrSUQoU291cmNlQnVmZmVyIGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQpOwogICAgIFtD
b25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBz
KFNvdXJjZUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gZmxhZyk7CiAKLSAgICBbQ29uZGl0aW9uYWw9
VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uKERPTVN0cmluZyBpbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9d
IHZvaWQgYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oRE9NU3RyaW5nIGludGVycnVwdGlv
blR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBlbmRNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb24oRE9NU3RyaW5nIGZsYWdzKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lP
Tl0gdm9pZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7CiAgICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NFU1NJT05dIHZvaWQgc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9u
Tm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KTsK
QEAgLTQ1NSwxMyArNDU1LDEzIEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAg
IFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwog
ICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQob3B0aW9uYWwgYm9vbGVhbiBzdXNwZW5kZWRVbmRlckxvY2sgPSBmYWxzZSk7CiAgICAgW0Nv
bmRpdGlvbmFsPVZJREVPXSB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKG9wdGlv
bmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwotICAgIFtDb25kaXRpb25h
bD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rp
b25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtD
b25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNlc3Np
b25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJ
REVPXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBl
LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0
cmluZyBtZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAg
W0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1M
TWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25k
aXRpb25hbD1XRUJfQVVESU9dIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlv
Q29udGV4dCBjb250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9u
YWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFu
ZChET01TdHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50
ID0gMCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29t
bWFuZChET01TdHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3Vt
ZW50ID0gMCk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdm9p
ZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbGVhbiBlbmFibGVk
KTsKLSAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VULCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0
cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOworICAgIFtDb25kaXRpb25h
bD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRl
KTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIHNldE1vY2tNZWRpYUNhcHR1
cmVEZXZpY2VzRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCiAgICAgW0NvbmRpdGlvbmFsPVdF
Ql9SVENdIHZvaWQgZW11bGF0ZVJUQ1BlZXJDb25uZWN0aW9uUGxhdGZvcm1FdmVudChSVENQZWVy
Q29ubmVjdGlvbiBjb25uZWN0aW9uLCBET01TdHJpbmcgYWN0aW9uKTsKQEAgLTQ3NCw4ICs0NzQs
OCBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0aW9uYWw9VklE
RU9dIHZvaWQgc2ltdWxhdGVTeXN0ZW1XYWtlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBi
b29sZWFuIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQgZWxl
bWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE1vY2tQYWdlT3ZlcmxheSBpbnN0YWxs
TW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyBwYWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dChvcHRpb25hbCB1bnNp
Z25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIE1vY2tQYWdlT3ZlcmxheSBpbnN0YWxsTW9ja1Bh
Z2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBlKTsKKyAgICBET01TdHJpbmcgcGFnZU92ZXJs
YXlMYXllclRyZWVBc1RleHQob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAog
ICAgIHZvaWQgc2V0UGFnZU11dGVkKERPTVN0cmluZyBtdXRlZFN0YXRlKTsKICAgICBET01TdHJp
bmcgcGFnZU1lZGlhU3RhdGUoKTsKQEAgLTQ4OCwxMCArNDg4LDEwIEBAIGVudW0gRXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3IgewogCiAgICAgW0NvbmRpdGlvbmFsPUNPTlRFTlRfRklMVEVSSU5HXSBy
ZWFkb25seSBhdHRyaWJ1dGUgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBtb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOwogCi0gICAgW0NvbmRpdGlvbmFsPUNTU19TQ1JPTExfU05BUCwgTWF5VGhy
b3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQp
OworICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIERPTVN0cmluZyBzY3JvbGxTbmFw
T2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOwogICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NO
QVBdIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJv
b2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYXRo
U3RyaW5nV2l0aFNocmlua1dyYXBwZWRSZWN0cyhzZXF1ZW5jZTxkb3VibGU+IHJlY3RDb21wb25l
bnRzLCBkb3VibGUgcmFkaXVzKTsKKyAgICBET01TdHJpbmcgcGF0aFN0cmluZ1dpdGhTaHJpbmtX
cmFwcGVkUmVjdHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91YmxlIHJhZGl1
cyk7CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBnZXRDdXJyZW50TWVkaWFD
b250cm9sc1N0YXR1c0ZvckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKIApAQCAt
NTA2LDcgKzUwNiw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpOwogICAgIFtF
bmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHZvaWQgc2V0VXNlckdyYW50c1N0b3Jh
Z2VBY2Nlc3MoYm9vbGVhbiB2YWx1ZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxvdyk7CisgICAgdm9pZCBz
ZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sZWFuIGFsbG93KTsKIAogICAgIERPTVN0
cmluZyBjb21wb3NlZFRyZWVBc1RleHQoTm9kZSBwYXJlbnQpOwogCkBAIC01NDksNyArNTQ5LDcg
QEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTV0gUHJvbWlzZTxJbWFnZURhdGE+IGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1l
KCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50OwogICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU1dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRyYWNrVmlkZW9TYW1w
bGVDb3VudDsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRNZWRpYURldmljZVN0YXRlKERPTVN0cmluZyBkZXZpY2VJRCwgRE9NU3RyaW5n
IHByb3BlcnR5LCBib29sZWFuIHZhbHVlKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
XSB2b2lkIHNldE1lZGlhRGV2aWNlU3RhdGUoRE9NU3RyaW5nIGRldmljZUlELCBET01TdHJpbmcg
cHJvcGVydHksIGJvb2xlYW4gdmFsdWUpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1d
IHZvaWQgZGVsYXlNZWRpYVN0cmVhbVRyYWNrU2FtcGxlcyhNZWRpYVN0cmVhbVRyYWNrIHRyYWNr
LCBmbG9hdCBkZWxheSk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBzZXRN
ZWRpYVN0cmVhbVRyYWNrTXV0ZWQoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgYm9vbGVhbiBtdXRl
ZCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCByZW1vdmVNZWRpYVN0cmVh
bVRyYWNrKE1lZGlhU3RyZWFtIHN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKICAgICBHbG9iYWw9KFdvcmtlcixEZWRpY2F0ZWRXb3JrZXIpLAogICAgIEpTR2VuZXJh
dGVUb05hdGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
IDogV29ya2VyR2xvYmFsU2NvcGUgewotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVl
bmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2
b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRy
YW5zZmVyID0gW10pOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBACiBdIGludGVyZmFjZSBXb3JrZXIgOiBFdmVudFRhcmdldCB7CiAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVj
dD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHBvc3RN
ZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0g
W10pOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9u
IDIyNTE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKICAgICAvLyBXb3JrZXJVdGlscwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGltcG9ydFNjcmlwdHMoVVNWU3RyaW5nLi4u
IHVybHMpOworICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhVU1ZTdHJpbmcuLi4gdXJscyk7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CiAKICAgICAvLyBB
ZGRpdGlvbmFsIGNvbnN0cnVjdG9ycwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0V4dGVuZGFibGVFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGwJKHJldmlzaW9uIDIyNTE0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw1ICszMiw1IEBACiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQs
CiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRXh0ZW5kYWJsZUV2
ZW50IDogRXZlbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3YWl0VW50aWwoUHJv
bWlzZTxhbnk+IGYpOworICAgIHZvaWQgd2FpdFVudGlsKFByb21pc2U8YW55PiBmKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZDsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCByZXNwb25kV2l0aChQcm9taXNlPEZldGNoUmVzcG9uc2U+IHIpOworICAgIHZvaWQgcmVz
cG9uZFdpdGgoUHJvbWlzZTxGZXRjaFJlc3BvbnNlPiByKTsKIH07CiAKIGRpY3Rpb25hcnkgRmV0
Y2hFdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwJKHJldmlzaW9uIDIyNTE0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtl
ciA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHNjcmlw
dFVSTDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlclN0YXRlIHN0YXRlOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0
cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9p
ZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFu
c2ZlciA9IFtdKTsKIAogICAgIC8vIGV2ZW50CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bnN0YXRlY2hhbmdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBpZDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2Jq
ZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07CiAKIGVudW0gRnJhbWVUeXBlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuaWRsCShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94
bWwvRE9NUGFyc2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNSArMjIsNSBAQAogICAgIENv
bnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKIF0gaW50ZXJmYWNlIERPTVBhcnNlciB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdP
YmplY3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJpbmcgc3RyaW5nLCBET01TdHJp
bmcgY29udGVudFR5cGUpOworICAgIFtOZXdPYmplY3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmlu
ZyhET01TdHJpbmcgc3RyaW5nLCBET01TdHJpbmcgY29udGVudFR5cGUpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjI1MTQxKQorKysgU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjAs
MTMgKzYwLDEzIEBAIGVudW0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwogCiAgICAgLy8gcmVxdWVz
dAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBvcGVuKEJ5dGVTdHJpbmcgbWV0aG9kLCBE
T01TdHJpbmcgdXJsKTsgLy8gRklYTUU6IHVybCBzaG91bGQgYmUgYSBVU1ZTdHJpbmcuCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2QsIERPTVN0cmlu
ZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlvbmFsIERPTVN0cmluZz8gdXNlciA9IG51bGwsIG9w
dGlvbmFsIERPTVN0cmluZz8gcGFzc3dvcmQgPSBudWxsKTsgLy8gRklYTUU6IHVybC91c2VyL3Bh
c3N3b3JkIHNob3VsZCBhbGwgYmUgYSBVU1ZTdHJpbmdzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKEJ5dGVTdHJpbmcgaGVhZGVyLCBCeXRlU3RyaW5nIHZh
bHVlKTsKKyAgICB2b2lkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2QsIERPTVN0cmluZyB1cmwpOyAv
LyBGSVhNRTogdXJsIHNob3VsZCBiZSBhIFVTVlN0cmluZy4KKyAgICB2b2lkIG9wZW4oQnl0ZVN0
cmluZyBtZXRob2QsIERPTVN0cmluZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlvbmFsIERPTVN0
cmluZz8gdXNlciA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZz8gcGFzc3dvcmQgPSBudWxsKTsg
Ly8gRklYTUU6IHVybC91c2VyL3Bhc3N3b3JkIHNob3VsZCBhbGwgYmUgYSBVU1ZTdHJpbmdzLgor
ICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRlcihCeXRlU3RyaW5nIGhlYWRlciwgQnl0ZVN0cmluZyB2
YWx1ZSk7CiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiB3aXRoQ3JlZGVudGlhbHM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFhNTEh0
dHBSZXF1ZXN0VXBsb2FkIHVwbG9hZDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Vu
ZChvcHRpb25hbCAoRG9jdW1lbnQgb3IgQm9keUluaXQpPyBib2R5ID0gbnVsbCk7CisgICAgdm9p
ZCBzZW5kKG9wdGlvbmFsIChEb2N1bWVudCBvciBCb2R5SW5pdCk/IGJvZHkgPSBudWxsKTsKICAg
ICB2b2lkIGFib3J0KCk7CiAKICAgICAvLyByZXNwb25zZQpAQCAtNzUsNyArNzUsNyBAQCBlbnVt
IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQnl0
ZVN0cmluZyBzdGF0dXNUZXh0OwogICAgIEJ5dGVTdHJpbmc/IGdldFJlc3BvbnNlSGVhZGVyKEJ5
dGVTdHJpbmcgbmFtZSk7CiAgICAgQnl0ZVN0cmluZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShET01TdHJpbmcg
bWltZSk7CisgICAgdm9pZCBvdmVycmlkZU1pbWVUeXBlKERPTVN0cmluZyBtaW1lKTsKICAgICBh
dHRyaWJ1dGUgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlOwogICAgIFtD
YWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSByZXNw
b25zZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHJlc3BvbnNlVGV4dDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAkocmV2aXNpb24gMjI1MTQxKQor
KysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjIsMTAgKzIyLDEwIEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50
ZXJmYWNlIFhQYXRoRXZhbHVhdG9yIHsKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIg
YXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBET01TdHJpbmcg
ZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29s
dmVyKTsKKyAgICBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihvcHRpb25hbCBET01T
dHJpbmcgZXhwcmVzc2lvbiA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/
IHJlc29sdmVyKTsKIAogICAgIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29sdmVyKG9wdGlv
bmFsIE5vZGU/IG5vZGVSZXNvbHZlcik7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5l
ZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShvcHRpb25hbCBET01TdHJpbmcgZXhwcmVzc2lv
biA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBOb2RlPyBjb250ZXh0Tm9kZSwgb3B0aW9uYWwgWFBh
dGhOU1Jlc29sdmVyPyByZXNvbHZlciwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAs
IG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CisgICAgWFBhdGhSZXN1bHQgZXZhbHVh
dGUob3B0aW9uYWwgRE9NU3RyaW5nIGV4cHJlc3Npb24gPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwg
Tm9kZT8gY29udGV4dE5vZGUsIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9w
dGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5S
ZXN1bHQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCShy
ZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjIsNSArMjIsNSBAQAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1
bmN0aW9uLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBYUGF0
aEV4cHJlc3Npb24gewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQgZXZhbHVh
dGUob3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUgPSBudWxsLCBvcHRpb25hbCB1bnNpZ25lZCBz
aG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0gbnVsbCk7Cisg
ICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUob3B0aW9uYWwgTm9kZT8gY29udGV4dE5vZGUgPSBudWxs
LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/
IGluUmVzdWx0ID0gbnVsbCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVz
dWx0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRs
CShyZXZpc2lvbiAyMjUxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaW52YWxpZEl0ZXJhdG9yU3RhdGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgc25hcHNob3RMZW5ndGg7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5v
ZGUgaXRlcmF0ZU5leHQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgc25hcHNob3RJ
dGVtKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICBOb2RlIGl0ZXJhdGVO
ZXh0KCk7CisgICAgTm9kZSBzbmFwc2hvdEl0ZW0ob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRl
eCA9IDApOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423828</attachid>
            <date>2021-03-21 09:45:54 -0700</date>
            <delta_ts>2021-03-22 09:24:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20210321094552.patch</filename>
            <type>text/plain</type>
            <size>660665</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzNiBAQAorMjAyMS0wMy0yMSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIHRoZSBu
ZWVkIHRvIHNwZWNpZnkgW01heVRocm93RXhjZXB0aW9uXQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0aGUgbmVlZCB0byBzcGVjaWZ5IFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYnkgZGVkdWNpbmcgaXQgZnJvbSB0aGUgYm91bmQgCisgICAgICAg
IHNpZ25hdHVyZSdzIHJldHVybiB2YWx1ZS4gQW55IGZ1bmN0aW9uIHJldHVybmluZyBhbiBFeGNl
cHRpb25PciBpcyBvbmUgdGhhdCB0aHJvd3MuCisKKyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhp
cyB3YXMgYWxyZWFkeSBoYW5kbGVkIGJ5IHRvSlM8PiguLi4sIGltcGwuZnVuYygpKSwgd2hpY2gg
aGFkCisgICAgICAgIG92ZXJsb2FkcyBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgdmFsdWUgd2FzIGFu
IEV4Y2VwdGlvbk9yLiBUaGUgY2FzZXMgdGhpcyBkaWRuJ3QKKyAgICAgICAgd29yayBmb3Igd2Vy
ZSBmdW50aW9ucyB0aGF0IHJldHVybmVkIHZvaWQsIGFzIHRvSlM8PiguLi4sIGltcGwuZnVuYygp
KSB3b3VsZCBub3QKKyAgICAgICAgY29tcGlsZS4gVG8gd29yayBhcm91bmQgdGhpcywgdG9KUzw+
KCkgY2FuIG5vdyB0YWtlIGEgbGFtYmRhIGFzIGl0J3MgdmFsdWUsIGFuZAorICAgICAgICBjYW4g
ZGV0ZXJtaW5lIHZpYSB0aGUgbGFtYmRhJ3MgcmV0dXJuIHR5cGUgaWYgaXQgbmVlZHMgdG8gdGhy
b3cuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgYW4gSURMIG9wZXJhdGlvbiBsaWtlOgorCisgICAg
ICAgICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBmdW5jKCk7CisKKyAgICAgICAg
dXNlZCB0byBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJvZHkgdGhhdCBsb29rZWQgbGlrZSB0aGUgZm9s
bG93aW5nIDoKKworICAgICAgICAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZ1bmMo
KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyAg
ICAgICAgCisgICAgICAgIAorICAgICAgICB3aWxsIG5vdyBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJv
ZHkgdGhhdCBsb29rcyBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmZ1bmMoKTsgfSkpKTsKKworICAgICAgICB3aGljaCBjbG9zZWx5IG1pcnJvcnMgYSBub24t
dW5kZWZpbmVkIHJldHVybiBvcGVyYXRpb24uIFRoaXMgd3JhcHBlZCBsYW1iZGEgZm9ybQorICAg
ICAgICBpcyBvbmx5IHVzZWQgZm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHVuZGVmaW5lZCBvciBw
cm9taXNlcywgYXMgdGhvc2UgYXJlIHRoZSBvbmx5CisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGNh
biByZXR1cm4gdm9pZCwgYnV0IGl0IHdvdWxkIGJlIGNvcnJlY3QgdG8gdXNlIHRoZW0gZm9yIGFs
bCB0eXBlcywKKyAgICAgICAgaWYgbm90IGEgYml0IG1vcmUgbm9pc3kgYW5kIHBlcmhhcHMgYSB0
aW55IGNvbXBpbGUgdGltZSBjb3N0LgorCisgICAgICAgIE5PVEU6IFRoZSB1c2Ugb2YgYC0+IGRl
Y2x0eXBlKGF1dG8pYCBleHBsaWNpdCByZXR1cm4gdHlwZSBvbiB0aGUgbGFtYmRhIGlzIHJlcXVp
cmVkCisgICAgICAgIHRvIHBlcmZlY3RseSBmb3J3YXJkIHJlZmVyZW5jZSB0eXBlcywgc3VjaCBh
cyB0aG9zZSB1c2VkIGJ5IG93bmVkIHByb21pc2VzLiBPdGhlcndpc2UsCisgICAgICAgIGEgY29w
eSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHN1cHBv
cnRpbmcgYWxsIG9wZXJhdGlvbnMsIHRoaXMgYWxzbyByZW1vdmVzIHRoZSByZXF1aXJlbWVudCB0
byBhbm5vdGF0ZQorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBnZXR0ZXJzL3NldHRlcnMuIFRo
aXMgbW9zdGx5IGp1c3QgbWVhbnMgYWx3YXlzIGRlZmluaW5nIGEgdGhyb3cgc2NvcGUsCisgICAg
ICAgIGJ1dCBmb3IgbmFtZWQgZ2V0dGVycyBpdCBhbHNvIG1lYW50IGFkZGluZyBhIG5ldyBoZWxw
ZXIsIGB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3JgCisgICAgICAgIHdo
aWNoIGNvbnN0cnVjdG9ycyB0aGUgaXRlbSBhY2Nlc3NvciBmdW5jdG9yIGZvciB0aGUgYGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5YCAKKyAgICAgICAgYWxnb3JpdGhtIHJhdGhlciB0aGFuIGhh
cmQgY29kaW5nIGl0IGluIHRoZSBnZW5lcmF0b3IuCisKKyAgICAgICAgRHVlIHRvIGluY3JlYXNl
ZCB1c2Ugb2YgdG9KUywgdGhlIGNvZGUgZ2VuZXJhdG9yIGlzIG5vdyBjaGVja2luZyBtb3JlIHJl
dHVybiB0eXBlcworICAgICAgICAodmlhIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSkgc28g
dGhlIGNvZGUgZ2VuZXJhdG9yIHdhcyBhYmxlIHRvIGZpbmQgYSBmZXcgaW52YWxpZAorICAgICAg
ICByZXR1cm4gdHlwZXMgKGUuZy4gdXNlIG9mIFByb21pc2U8Ym9vbD4gcmF0aGVyIHRoYW4gUHJv
bWlzZTxib29sZWFuPiwgZXRjLikgYW5kIHRoZXNlCisgICAgICAgIGhhdmUgYmVlbiBmaXhlZCBh
bmQgd2lsbCBiZSBhbiBlcnJvciBnb2luZyBmb3J3YXJkLiBXb3VsZCBiZSBhIG5pY2UgaW1wcm92
ZW1lbnQgdG8KKyAgICAgICAgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGRvIHR5cGUgY2hlY2tpbmcg
dXAgZnJvbnQsIHJhdGhlciB0aGFuIGFzIGEgc2lkZSBlZmZlY3Qgb2YKKyAgICAgICAgY29kZSBn
ZW5lcmF0aW9uLCBidXQgd2Ugd2lsbCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyIGRheS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IpOgorICAgICAg
ICBBZGRlZC4gTW92ZXMgdGhlIGdldHRlckZ1bmN0b3IgbGFtYmRhIGNyZWF0aW9uIGZyb20gdGhl
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEKKyAgICAgICAgc3Vicm91dGluZSBpbiBDb2RlR2Vu
ZXJhdG9ySlMucG0sIGJ1dCB1c2VzIGRlZHVjdGlvbiBhbmQgY29uc3RleHByIHRvIGRldGVybWlu
ZQorICAgICAgICBpZiB0aGUgZ2V0dGVyIHRocm93cy4KKworICAgICAgICAoV2ViQ29yZTo6YWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICBSZW5hbWUgRnVuY3RvciB0byBJdGVt
QWNjZXNzb3IgdG8gbWFrZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQgdGhlIHR5cGUgZG9lcy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAg
ICAgIFJlcGxhY2UgU0ZJTkFFLWJhc2VkIG92ZXJsb2FkaW5nIG9mIHRvSlMvdG9KU05ld2x5Q3Jl
YXRlZCB3aXRoIGNvbnN0ZXhwciBiYXNlZAorICAgICAgICBjb25kaXRpb25hbHMgYW5kIGFkZCB0
aGUgYWJpbGl0eSB0byBwYXNzIGluIGEgZnVuY3RvciByYXRoZXIgdGhhbiB2YWx1ZS4gSWYgYQor
ICAgICAgICBmdW5jdG9yIGlzIHVzZWQsIGFkZGl0aW9uYWwgY29kZSBwYXRocyBmb3Igdm9pZCBh
bmQgRXhwZWN0aW9uT3I8dm9pZD4gYXJlIGFkZGVkCisgICAgICAgIHdoaWNoIGV4cGxpY2l0bHkg
cmV0dXJuIGpzVW5kZWZpbmVkKCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnREYXRlLmNwcDoKKyAgICAgICAgUmVtb3ZlIGluY29ycmVjdCBjb21tZW50IGFib3V0IEV4ZWNT
dGF0ZXMgdGhhdCBoYXNuJ3QgYXBwbGllZCBmb3IgYSB3aGlsZS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oOgorICAgICAgICBGaXggY29tbWVudCwgcmVw
bGFjaW5nIEV4ZWNTdGF0ZSB3aXRoIEpTR2xvYmFsT2JqZWN0LiBUaGlzIGhhcyBiZWVuIHdyb25n
IGZvcgorICAgICAgICBhIHdoaWxlLCBhbmQgdGhpcyBpcyBqdXN0IGEgZHJpdmUgYnkgZml4Lgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICBVc2UgYW4gZXhwbGljaXQgZWxzZSBhcyBwYXJ0IG9mIHRoZSBjb25zdGV4cHIg
ZXhwcmVzc2lvbiB0byBlbnN1cmUgdGhlIGZ1bmN0b3IKKyAgICAgICAgaXMgbm90IGNhbGxlZCwg
ZXZlbiBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEZWZlcnJlZFByb21pc2Up
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6
CisgICAgICAgIFJlbW92ZSB1bnVzZWQgY3JlYXRlRGVmZXJyZWRQcm9taXNlIGZ1bmN0aW9uLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChBZGRNYXBMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEFk
ZFNldExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZWVkZWQpOgorICAgICAgICBGaXggcmV0
dXJuIHR5cGUgb2YgbWFwcGVkIGNsZWFyIG9wZXJhdGlvbiB0byBiZSBgYW55YCByYXRoZXIgdGhh
biBgdW5kZWZpbmVkYAorICAgICAgICB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNo
IHJldHVybnMgYSBKU1ZhbHVlIChlLmcuIGBhbnlgKS4gVGhpcyBpcyBub3cKKyAgICAgICAgcmVx
dWlyZWQgYXMgd2UgYWN0dWFsbHkgbG9vayBhdCB0aGUgcmV0dXJuIHR5cGUgdmlhIGRlZHVjdGlv
biBhbmQgbmVlZCBpdCBtYXRjaC4KKyAKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1i
ZGEpOgorICAgICAgICBSZXBsYWNlIG1vc3Qgb2YgdGhlIGltcGxlbWVudGF0aW9uIHdpdGggYSBj
YWxsIHRvIHRoZSBuZXcgYHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcmAK
KyAgICAgICAgaGVscGVyIHdoaWNoIHJldHVybnMgYSBsYW1iZGEgd2l0aCB0aGUgY29ycmVjdCBi
ZWhhdmlvciBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB0eXBlIG9mIHRoZSBpbm5lcgorICAgICAg
ICBsYW1iZGEgcGFzc2VkLgorIAorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAg
KEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpb24pOgorICAgICAgICBNYXRjaCBt
b3N0IG90aGVyIHBhcnRzIG9mIHRoZSBnZW5lcmF0b3IgYW5kIGFsd2F5cyBjcmVhdGUgYSB0aHJv
dyBzY29wZS4KKworICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAg
ICAgUmVtb3ZlIGV4cGxpY2l0IGNhbGwgdG8gcHJvcGFnYXRlRXhjZXB0aW9uIG5vdyB0aGF0IHRv
SlMoKSB3aWxsIGhhbmRsZSB0aGF0IGZvciB1cy4KKworICAgICAgICAoR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2spOgorICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2FsbCB0byBwcm9wYWdhdGVFeGNl
cHRpb24gbm93IHRoYXQgdG9KUygpIHdpbGwgaGFuZGxlIHRoYXQgZm9yIHVzLgorCisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAgICAgICAgU2ltcGxpZnkg
YnkgdXNpbmcgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkgaGVs
cGVyIGZvciB0aGUgInJldHVybkFyZ3VtZW50TmFtZSIKKyAgICAgICAgY2FzZSBhbmQgcmVseWlu
ZyBvbiB0b0pTIGhhbmRsaW5nIHRoZSBvdGhlciBjYXNlcy4KKworICAgICAgICAoTmF0aXZlVG9K
U1ZhbHVlTWF5VGhyb3cpOgorICAgICAgICBBZGQgb3BlcmF0aW9uIHRvIHRoZSBsaXN0IG9mIHRo
aW5ncyB0aGF0IG1pZ2h0IGFsd2F5cyB0aHJvdy4KKworICAgICAgICAoTmF0aXZlVG9KU1ZhbHVl
KToKKyAgICAgICAgVXNlIHRoZSBsYW1iZGEgd3JhcHBlZCB2ZXJzaW9uIG9mIHRvSlMgZm9yIHVu
ZGVmaW5lZCBhbmQgcHJvbWlzZSB0eXBlcywgd2hpY2ggbWlnaHQgYm90aAorICAgICAgICByZXR1
cm4gdm9pZCBhbmQgdGh1cyByZXF1aXJlIGl0LiBUbyBrZWVwIG1vc3QgY29kZSB1bmNoYW5nZWQs
IGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSBjb21waWxlcgorICAgICAgICB3b3JrLCB3ZSBvbmx5IHVz
ZSB0aGUgd3JhcHBlZCB2ZXJzaW9uIHdoZW4gaXQgbWlnaHQgYmUgbmVjZXNzYXJ5LiBJZiBpdCB0
dXJucyBvdXQgdG8gYmUKKyAgICAgICAgY2hlZXAgZW5vdWdoLCBpdCBtaWdodCBtYWtlIHNlbnNl
IHRvIGFsd2F5cyB1c2UgdGhpcyBmb3JtIGZvciBzaW1wbGljaXR5LgorCisgICAgICAgIChOZWVk
c0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgUmVtb3ZlIE1heVRo
cm93RXhjZXB0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVG
b3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVO
U0ZvckJpbmRpbmdzKToKKyAgICAgICAgQWRkIGJpbmRpbmdzIHNwZWNpZmljIHZlcnNpb25zIG9m
IGByZW1vdmVBdHRyaWJ1dGVgIGFuZCBgcmVtb3ZlQXR0cmlidXRlTlNgIHdoaWNoCisgICAgICAg
IGhhdmUgYSB2b2lkIHJldHVybiB0eXBlIChyYXRoZXIgdGhhbiB0aGUgYm9vbCB1c2VkIGJ5IHRo
ZSBtYWluIGltcGxlbWVudGF0aW9uKQorICAgICAgICBhcyBpdCBpcyBub3cgYSByZXF1aXJlbWVu
dCB0aGF0IHRoYXQgdGhlIGJvdW5kIGZ1bmN0aW9ucyBzaWduYXR1cmUgbWF0Y2ggdGhlIElETC4K
KworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaWRsOgorICAgICAgICBVc2UgdGhl
IGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlcXVlc3RgLCBub3QgYFJlcXVlc3RgLgor
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaWRsOgorICAgICAgICBV
c2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBET01DYWNoZWAsIG5vdCBgQ2FjaGVgLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQrU3RvcmFnZUFjY2Vzcy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IrSXNMb2dnZWRJbi5pZGw6CisgICAgICAgIFVzZSB0aGUgY29ycmVjdCBJREwgdHlwZSwgYGJv
b2xlYW5gLCBub3QgYGJvb2xgLgorCisgICAgICAgICogZG9tL0Fib3J0U2lnbmFsLmlkbDoKKyAg
ICAgICAgVXBkYXRlIHdoZW5TaWduYWxBYm9ydGVkIHRvIG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYGJvb2xlYW5gLAorICAgICAgICBub3QgYHVuZGVm
aW5lZGAuCisKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgor
ICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlc3BvbnNlYCwg
bm90IGBSZXNwb25zZWAuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWVzLCBg
U2VydmljZVdvcmtlckNsaWVudGAsIG5vdCBgQ2xpZW50YCwgYW5kIGBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50YCwgbm90IGBXaW5kb3dDbGllbnRgLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJl
Y3QgaW50ZXJmYWNlIG5hbWVzLCBgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudGAsIG5vdCBgV2lu
ZG93Q2xpZW50YC4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29uLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvdytDYWNoZXMuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGw6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGw6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNm
b3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIr
VHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25F
dmVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVz
dFVwZGF0ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5p
ZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vSUlSRmlsdGVyTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0Um93TGlzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5p
ZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2Vi
R0xMYXllci5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAg
ICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsOgorICAgICAgICAqIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6
CisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAg
ICAgICAgKiBjc3MvRE9NQ1NTTmFtZXNwYWNlK0NTU1Byb3BlcnRpZXNhbmRWYWx1ZXMuaWRsOgor
ICAgICAgICAqIGNzcy9ET01NYXRyaXguaWRsOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFk
T25seS5pZGw6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmlk
bDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxp
c3QuaWRsOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmlkbDoKKyAgICAgICAgKiBkb20v
Q2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbDoK
KyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsOgorICAgICAgICAqIGRvbS9ET01Q
b2ludFJlYWRPbmx5LmlkbDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudCtIVE1MLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsOgorICAgICAgICAq
IGRvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAgICAgICAgKiBkb20vTXV0
YXRpb25PYnNlcnZlci5pZGw6CisgICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5pZGw6CisgICAg
ICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaWRsOgorICAg
ICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vUmFuZ2UrRE9NUGFyc2lu
Zy5pZGw6CisgICAgICAgICogZG9tL1JhbmdlLmlkbDoKKyAgICAgICAgKiBkb20vVGV4dC5pZGw6
CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVGV4dERlY29k
ZXJTdHJlYW1EZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaWRs
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsOgorICAgICAgICAqIGh0bWwv
RE9NVG9rZW5MaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxFbWJlZEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
OgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmlkbDoKKyAgICAgICAgKiBodG1sL1RpbWVSYW5nZXMuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0
YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhdGgyRC5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdERPTU9iamVjdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVz
b3VyY2VzT2JqZWN0LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGw6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOgorICAgICAgICAqIHBhZ2Uv
RE9NU2VsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogcGFnZS9IaXN0b3J5LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOgorICAgICAgICAqIHBhZ2UvUGVy
Zm9ybWFuY2UrVXNlclRpbWluZy5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9ic2Vy
dmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1VuZG9NYW5hZ2VyLmlkbDoKKyAgICAgICAgKiBwYWdl
L1VzZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5pZGw6
CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NW
R0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0LmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdQb2ludExp
c3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmlk
bDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5pZGw6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGw6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB4bWwvRE9NUGFyc2VyLmlkbDoKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1YXRv
ckJhc2UuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24uaWRsOgorICAgICAgICAq
IHhtbC9YUGF0aFJlc3VsdC5pZGw6CisgICAgICAgIFJlbW92ZSB1c2Ugb2YgW01heVRocm93RXhj
ZXB0aW9uXS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8qOgorICAgICAg
ICBSZW1vdmUgdXNlcyBvZiBbTWF5VGhyb3dFeGNlcHRpb25dIGluIHRoZSB0ZXN0cyBhbmQgdXBk
YXRlIGFsbCB0aGUgdGVzdCByZXN1bHRzLgorCiAyMDIxLTAzLTE5ICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW5rIGFnYWluc3QgdGhlIEFOR0xFIFNoYXJlZCBM
aWJyYXJ5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNlc3Npb24uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDIzICs0MSwyMyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRVU19QSU5fSU5DT1JS
RUNUID0gNjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFUVVNfUElOX0xPQ0tPVVQgPSA3
OwogCi0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIGJv
b2xlYW4gc3VwcG9ydHNWZXJzaW9uKHVuc2lnbmVkIGxvbmcgdmVyc2lvbik7Ci0gICAgW0NhbGxX
aXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBh
eW1lbnRzKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3Rh
dGljIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3Ry
aW5nIG1lcmNoYW50SWRlbnRpZmllcik7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gb3BlblBheW1lbnRTZXR1cChET01T
dHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRp
YyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOworICAgIFtD
YWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7CisgICAg
W0NhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBjYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyKTsKKyAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAo
RE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7CiAKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQs
IE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVnaW4oKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oYW55
IG1lcmNoYW50U2Vzc2lvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29t
cGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRl
IHVwZGF0ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUgdXBkYXRl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHVu
ZGVmaW5lZCBiZWdpbigpOworICAgIHVuZGVmaW5lZCBhYm9ydCgpOworICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3RdIHVuZGVmaW5lZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhbnkgbWVy
Y2hhbnRTZXNzaW9uKTsKKyAgICB1bmRlZmluZWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7CisgICAgdW5kZWZpbmVk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEFwcGxlUGF5U2hpcHBpbmdDb250YWN0
VXBkYXRlIHVwZGF0ZSk7CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsKKyAgICB1bmRlZmluZWQg
Y29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0
KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBsZVBheUxpbmVJdGVtIG5l
d1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgc2VxdWVuY2U8QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZD4gbmV3U2hpcHBpbmdNZXRob2RzLCBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5j
ZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheUxpbmVJ
dGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudCh1bnNpZ25l
ZCBzaG9ydCBzdGF0dXMpOworICAgIHVuZGVmaW5lZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwg
c2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsKKyAgICB1bmRlZmluZWQg
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBz
ZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFwcGxl
UGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJ
dGVtcyk7CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihBcHBs
ZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5l
SXRlbXMpOworICAgIHVuZGVmaW5lZCBjb21wbGV0ZVBheW1lbnQodW5zaWduZWQgc2hvcnQgc3Rh
dHVzKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb252YWxpZGF0ZW1lcmNoYW50Owog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25wYXltZW50bWV0aG9kc2VsZWN0ZWQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29u
LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24v
TmF2aWdhdG9yK0JlYWNvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAgdHlw
ZWRlZiAoQmxvYiBvciBCdWZmZXJTb3VyY2Ugb3IgRE9NRm9ybQogICAgIEVuYWJsZWRCeVNldHRp
bmc9QmVhY29uQVBJLAogICAgIEltcGxlbWVudGVkQnk9TmF2aWdhdG9yQmVhY29uCiBdIHBhcnRp
YWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIEJv
ZHlJbml0PyBkYXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBib29sZWFuIHNl
bmRCZWFjb24oVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/IGRhdGEgPSBudWxsKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmlkbAkocmV2
aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDUgKzM4LDUgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0
IG9yIFVTVlN0cmluZykgUmVxdQogICAgIFtOZXdPYmplY3RdIFByb21pc2U8dW5kZWZpbmVkPiBh
ZGRBbGwoc2VxdWVuY2U8UmVxdWVzdEluZm8+IHJlcXVlc3RzKTsKICAgICBbTmV3T2JqZWN0XSBQ
cm9taXNlPHVuZGVmaW5lZD4gcHV0KFJlcXVlc3RJbmZvIHJlcXVlc3QsIEZldGNoUmVzcG9uc2Ug
cmVzcG9uc2UpOwogICAgIFtOZXdPYmplY3QsIEltcGxlbWVudGVkQXM9cmVtb3ZlXSBQcm9taXNl
PGJvb2xlYW4+IGRlbGV0ZShSZXF1ZXN0SW5mbyByZXF1ZXN0LCBvcHRpb25hbCBDYWNoZVF1ZXJ5
T3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTmV3T2JqZWN0XSBQcm9taXNlPHNlcXVlbmNlPFJlcXVl
c3Q+PiBrZXlzKG9wdGlvbmFsIFJlcXVlc3RJbmZvIHJlcXVlc3QsIG9wdGlvbmFsIENhY2hlUXVl
cnlPcHRpb25zIG9wdGlvbnMpOworICAgIFtOZXdPYmplY3RdIFByb21pc2U8c2VxdWVuY2U8RmV0
Y2hSZXF1ZXN0Pj4ga2V5cyhvcHRpb25hbCBSZXF1ZXN0SW5mbyByZXF1ZXN0LCBvcHRpb25hbCBD
YWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIFVTVlN0
cmluZykgUmVxdQogXSBpbnRlcmZhY2UgRE9NQ2FjaGVTdG9yYWdlIHsKICAgICBbTmV3T2JqZWN0
XSBQcm9taXNlPGFueT4gbWF0Y2goUmVxdWVzdEluZm8gcmVxdWVzdCwgb3B0aW9uYWwgQ2FjaGVR
dWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxib29sZWFuPiBo
YXMoRE9NU3RyaW5nIGNhY2hlTmFtZSk7Ci0gICAgW05ld09iamVjdF0gUHJvbWlzZTxDYWNoZT4g
b3BlbihET01TdHJpbmcgY2FjaGVOYW1lKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9taXNlPERPTUNh
Y2hlPiBvcGVuKERPTVN0cmluZyBjYWNoZU5hbWUpOwogICAgIFtOZXdPYmplY3QsIEltcGxlbWVu
dGVkQXM9cmVtb3ZlXSBQcm9taXNlPGJvb2xlYW4+IGRlbGV0ZShET01TdHJpbmcgY2FjaGVOYW1l
KTsKICAgICBbTmV3T2JqZWN0XSBQcm9taXNlPHNlcXVlbmNlPERPTVN0cmluZz4+IGtleXMoKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvdytDYWNoZXMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93
K0NhY2hlcy5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NV2luZG93K0NhY2hlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDUgKzI5LDUg
QEAKICAgICBFbmFibGVkQXRSdW50aW1lPUNhY2hlQVBJLAogICAgIEltcGxlbWVudGVkQnk9RE9N
V2luZG93Q2FjaGVzCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBTZWN1cmVDb250
ZXh0LCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NQ2FjaGVTdG9yYWdlIGNhY2hl
czsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgU2VjdXJlQ29udGV4dCwg
U2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTUNhY2hlU3RvcmFnZSBjYWNoZXM7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmtl
eXN0YXR1c2VzY2hhbmdlOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwog
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBnZW5lcmF0ZVJlcXVlc3QoRE9NU3RyaW5nIGluaXREYXRh
VHlwZSwgQnVmZmVyU291cmNlIGluaXREYXRhKTsKLSAgICBQcm9taXNlPGJvb2w+IGxvYWQoRE9N
U3RyaW5nIHNlc3Npb25JZCk7CisgICAgUHJvbWlzZTxib29sZWFuPiBsb2FkKERPTVN0cmluZyBz
ZXNzaW9uSWQpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiB1cGRhdGUoQnVmZmVyU291cmNlIHJl
c3BvbnNlKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gY2xvc2UoKTsKICAgICBQcm9taXNlPHVu
ZGVmaW5lZD4gcmVtb3ZlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDYgQEAKICAgICBEaXNhYmxlZEJ5UXVpcms9aGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBN
ZWRpYUtleXMgewotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIE1l
ZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUg
c2Vzc2lvblR5cGUgPSAidGVtcG9yYXJ5Iik7Ci0gICAgUHJvbWlzZTxib29sPiBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShCdWZmZXJTb3VyY2Ugc2VydmVyQ2VydGlmaWNhdGUpOworICAgIFtDYWxsV2l0
aD1Eb2N1bWVudF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBQcm9taXNlPGJv
b2xlYW4+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0aWZpY2F0
ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRs
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB1cGRhdGUoVWludDhBcnJheSBrZXkpOworICAgIHVu
ZGVmaW5lZCB1cGRhdGUoVWludDhBcnJheSBrZXkpOwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwog
ICAgIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRrZXlhZGRlZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRlcmZhY2UgV2ViS2l0
TWVkaWFLZXlzIHsKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcga2V5U3lzdGVtKTsKIAotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJy
YXkgaW5pdERhdGEpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBXZWJL
aXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJh
eSBpbml0RGF0YSk7CiAgICAgc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkKERPTVN0cmlu
ZyBrZXlTeXN0ZW0sIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDExICszNSwxMSBAQCB0eXBlZGVmIChzZXF1ZW5jZTxzZXF1ZW5jZTxCeXRlU3RyaW5n
Pj4gCiBdIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIGNvbnN0cnVjdG9yKG9wdGlvbmFs
IEhlYWRlcnNJbml0IGluaXQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
YXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdW5kZWZpbmVkIGRlbGV0ZShCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQnl0ZVN0cmluZz8gZ2V0KEJ5dGVT
dHJpbmcgbmFtZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGhhcyhCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldChCeXRlU3Ry
aW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFsdWUpOworICAgIHVuZGVmaW5lZCBhcHBlbmQoQnl0ZVN0
cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVd
IHVuZGVmaW5lZCBkZWxldGUoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICBCeXRlU3RyaW5nPyBnZXQo
Qnl0ZVN0cmluZyBuYW1lKTsKKyAgICBib29sZWFuIGhhcyhCeXRlU3RyaW5nIG5hbWUpOworICAg
IHVuZGVmaW5lZCBzZXQoQnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKIAogICAg
IGl0ZXJhYmxlPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwJKHJldmlzaW9uIDI3NDcyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgVVNWU3Ry
aW5nKSBSZXF1CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNIaXN0b3J5TmF2
aWdhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWJvcnRTaWduYWwgc2lnbmFsOwogCi0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBO
ZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9uZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBOZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9uZSgpOwogfTsKIAogRmV0
Y2hSZXF1ZXN0IGluY2x1ZGVzIEZldGNoQm9keTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsNyBAQCBkaWN0aW9uYXJ5IEZldGNoUmVzcG9uc2VJbml0IHsKICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgQm9k
eUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNlSW5pdCBpbml0KTsKIAog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIHN0YXRpYyBG
ZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIHJl
ZGlyZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IDMw
Mik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gc3Rh
dGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRjaFJl
c3BvbnNlVHlwZSB0eXBlOwogCkBAIC01Nyw3ICs1Nyw3IEBAIGRpY3Rpb25hcnkgRmV0Y2hSZXNw
b25zZUluaXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nIHN0YXR1c1RleHQ7
CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRjaEhlYWRlcnMgaGVhZGVy
czsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2Vw
dGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOwog
fTsKIAogRmV0Y2hSZXNwb25zZSBpbmNsdWRlcyBGZXRjaEJvZHk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
J3JlcXVlc3QnCiAgICAgLy8gW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJSZXF1
ZXN0IHJlcXVlc3Q7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZHZhbmNl
KFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1HbG9i
YWxPYmplY3QsIEltcGxlbWVudGVkQXM9Y29udGludWVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBjb250aW51ZShvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbnRpbnVlUHJpbWFy
eUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CisgICAgdW5kZWZpbmVkIGFkdmFuY2UoW0Vu
Zm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9i
amVjdCwgSW1wbGVtZW50ZWRBcz1jb250aW51ZUZ1bmN0aW9uXSB1bmRlZmluZWQgY29udGludWUo
b3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVk
IGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CiAKLSAgICBbTmV3
T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1
ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRpb25dIElE
QlJlcXVlc3QgZGVsZXRlKCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBk
ZWxldGUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEx
ICszNSwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0
b3JlTmFtZXM7CiAKICAgICAvLyBGSVhNRTogJ3RyYW5zYWN0aW9uJyBzaG91bGQgYWxzbyB0YWtl
IGFuIG9wdGlvbmFsICdJREJUcmFuc2FjdGlvbk9wdGlvbnMnIGFyZ3VtZW50LgotICAgIFtOZXdP
YmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigoRE9N
U3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMsIG9wdGlvbmFsIElEQlRy
YW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgW05ld09iamVjdF0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+KSBz
dG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIp
OwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNl
cHRpb25dIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBv
cHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5hbWUp
OworICAgIFtOZXdPYmplY3RdIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0
cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7
CisgICAgdW5kZWZpbmVkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKIAogICAg
IC8vIEV2ZW50IGhhbmRsZXJzOgogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsK
QEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgIC8vIE5vbi1zdGFuZGFyZDogVGhpcyBpcyBub3QgcGFy
dCBvZiB0aGUgc3BlYywgYnV0IGlzIG5lZWRlZCBmb3IgY29tcGF0aWJpbGl0eS4KICAgICAvLyBT
ZWUgaHR0cHM6Ly9naXRodWIuY29tL3czYy9JbmRleGVkREIvaXNzdWVzLzg1Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0IHN0
b3JlTmFtZXMsIG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7
CisgICAgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVz
LCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIpOwogfTsKIAog
ZGljdGlvbmFyeSBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlv
biwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7
Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhy
b3dFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJpbmcgbmFtZSwgb3B0aW9u
YWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pOwotICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9u
XSBJREJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKERPTVN0cmluZyBuYW1lKTsKKyAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1
ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ZXJzaW9uKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKERPTVN0cmluZyBu
YW1lKTsKICAgICAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlz
ZTxzZXF1ZW5jZTxJREJEYXRhYmFzZUluZm8+PiBkYXRhYmFzZXMoKTsKICAgICAKLSAgICBbQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc2hvcnQgY21wKGFueSBmaXJz
dCwgYW55IHNlY29uZCk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gc2hvcnQgY21wKGFu
eSBmaXJzdCwgYW55IHNlY29uZCk7CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE5ICs0MSwxOSBAQCB0eXBlZGVmIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3Ry
aW5nCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlFbnRyeTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0
aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChJREJLZXlS
YW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtl
eShJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtleShhbnkga2V5KTsKLSAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25h
bCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFs
bChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
LSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05l
d09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJh
bmdlID0gbnVsbCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlU
aHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKKyAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkp
OworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQo
YW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1
ZXN0IGdldEtleShJREJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1H
bG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9u
ZyBjb3VudCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1
ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25n
IGNvdW50KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVl
c3QgZ2V0QWxsS2V5cyhvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25h
bCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhhbnkga2V5LCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0XSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29y
KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkg
a2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAg
W05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9
IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwor
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4
dCIpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBv
cGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFs
IElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGFueSBrZXks
IG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5p
ZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbG93ZXJPcGVuOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHVwcGVyT3BlbjsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBvbmx5KGFueSB2
YWx1ZSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIGxvd2VyQm91bmQoYW55IGxvd2VyLCBvcHRpb25h
bCBib29sZWFuIG9wZW4gPSBmYWxzZSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIHVwcGVyQm91bmQo
YW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4gPSBmYWxzZSk7Ci0gICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktl
eVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIGxvd2Vy
T3BlbiA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3BlbiA9IGZhbHNlKTsKKyAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHN0YXRpYyBJREJLZXlSYW5nZSBvbmx5
KGFueSB2YWx1ZSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBzdGF0
aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlvbmFsIGJvb2xlYW4gb3Bl
biA9IGZhbHNlKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHN0YXRp
YyBJREJLZXlSYW5nZSB1cHBlckJvdW5kKGFueSB1cHBlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVu
ID0gZmFsc2UpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gc3RhdGlj
IElEQktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFu
IGxvd2VyT3BlbiA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3BlbiA9IGZhbHNlKTsK
IAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBib29sZWFu
IGluY2x1ZGVzKGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGJvb2xlYW4g
aW5jbHVkZXMoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSwzMSArNDEsMzEgQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVl
bmNlPERPTVN0cmluZwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXV0
b0luY3JlbWVudDsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwgb3B0aW9uYWwgYW55IGtl
eSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gSURCUmVxdWVzdCBhZGQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVu
Y3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZShJREJLZXlSYW5nZT8g
a2V5UmFuZ2UpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVt
ZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVs
ZXRlKGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY2xlYXIoKTsKLSAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChJREJL
ZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdl
dEtleShJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtleShhbnkga2V5KTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdl
dEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50
KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0
aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0g
bnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAg
W05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2ln
bmVkIGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwg
TWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/
IHJhbmdlID0gbnVsbCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKKyAgICBbTmV3T2Jq
ZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwgb3B0
aW9uYWwgYW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJ
REJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0g
SURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsKKyAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElE
QlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CisgICAgW05ld09i
amVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0S2V5KElE
QktleVJhbmdlPyBrZXkpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0g
SURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsKGFu
eSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAg
IFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlz
KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdF0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVl
c3QgY291bnQoYW55IGtleSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURC
S2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiA9ICJuZXh0Iik7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFs
IElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3Bl
bktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJ
REJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5L
ZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9
ICJuZXh0Iik7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1
ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9u
YWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwg
b3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05l
d09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Io
b3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURC
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICBJREJJbmRleCBpbmRl
eChET01TdHJpbmcgbmFtZSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJJbmRleCBjcmVhdGVJbmRleChET01TdHJpbmcgbmFt
ZSwgKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+KSBrZXlQYXRoLCBvcHRpb25hbCBJ
REJJbmRleFBhcmFtZXRlcnMgb3B0aW9ucyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOworICAgIFtOZXdPYmplY3QsIENhbGxX
aXRoPUdsb2JhbE9iamVjdF0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChE
T01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5k
ZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAgIHVuZGVmaW5lZCBkZWxldGVJbmRleChET01TdHJp
bmcgbmFtZSk7CiB9OwogCiBkaWN0aW9uYXJ5IElEQkluZGV4UGFyYW1ldGVycyB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQAog
ICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgSURCRGF0YWJhc2UgZGI7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTUV4Y2VwdGlvbj8gZXJyb3I7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKKyAg
ICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSk7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCAnY29tbWl0Jy4KICAgICAvLyB1bmRlZmluZWQgY29tbWl0KCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWJvcnQoKTsKKyAgICB1bmRlZmluZWQgYWJv
cnQoKTsKIAogICAgIC8vIEV2ZW50IGhhbmRsZXJzOgogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb25hYm9ydDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDExIEBAIGVudW0gUmVjb3JkaW5nU3RhdGUgeyAiaW5hY3Rp
dmUiLCAicmVjb3IKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhdWRpb0Jp
dHNQZXJTZWNvbmQ7CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIEJpdHJhdGVNb2RlIGF1ZGlv
Qml0cmF0ZU1vZGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c3Rh
cnRSZWNvcmRpbmddIHVuZGVmaW5lZCBzdGFydChvcHRpb25hbCB1bnNpZ25lZCBsb25nIHRpbWVz
bGljZSk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRSZWNvcmRpbmddIHVuZGVmaW5lZCBzdGFy
dChvcHRpb25hbCB1bnNpZ25lZCBsb25nIHRpbWVzbGljZSk7CiAgICAgW0ltcGxlbWVudGVkQXM9
c3RvcFJlY29yZGluZ10gdW5kZWZpbmVkIHN0b3AoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IEltcGxlbWVudGVkQXM9cGF1c2VSZWNvcmRpbmddIHVuZGVmaW5lZCBwYXVzZSgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1yZXN1bWVSZWNvcmRpbmddIHVuZGVmaW5l
ZCByZXN1bWUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXF1ZXN0RGF0
YSgpOworICAgIFtJbXBsZW1lbnRlZEFzPXBhdXNlUmVjb3JkaW5nXSB1bmRlZmluZWQgcGF1c2Uo
KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZWNvcmRpbmddIHVuZGVmaW5lZCByZXN1bWUo
KTsKKyAgICB1bmRlZmluZWQgcmVxdWVzdERhdGEoKTsKIAogICAgIFtDYWxsV2l0aD1Eb2N1bWVu
dF0gc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkKERPTVN0cmluZyB0eXBlKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkg
KzI4LDkgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAogXSBpbnRlcmZhY2UgTWVkaWFNZXRhZGF0YSB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcihvcHRpb25hbCBN
ZWRpYU1ldGFkYXRhSW5pdCBpbml0KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgTWVkaWFNZXRhZGF0YUluaXQgaW5pdCk7CiAgICAg
YXR0cmlidXRlIERPTVN0cmluZyB0aXRsZTsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFydGlz
dDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsYnVtOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIEZyb3pl
bkFycmF5PE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAgW1NldHRlckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxNZWRpYUltYWdlPiBhcnR3b3Jr
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNSArMzUsNSBAQAogCiAgICAgdW5kZWZpbmVkIHNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNz
aW9uQWN0aW9uIGFjdGlvbiwgTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj8gaGFuZGxlcik7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3NpdGlvblN0YXRlKG9wdGlv
bmFsIE1lZGlhUG9zaXRpb25TdGF0ZT8gc3RhdGUgPSBudWxsKTsKKyAgICB1bmRlZmluZWQgc2V0
UG9zaXRpb25TdGF0ZShvcHRpb25hbCBNZWRpYVBvc2l0aW9uU3RhdGU/IHN0YXRlID0gbnVsbCk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNyAr
NTUsMTcgQEAgZW51bSBSZWFkeVN0YXRlIHsKIAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGR1cmF0aW9uOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFNv
dXJjZUJ1ZmZlciBhZGRTb3VyY2VCdWZmZXIoRE9NU3RyaW5nIHR5cGUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIgYnVm
ZmVyKTsKKyAgICBbTmV3T2JqZWN0XSBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVmZmVyKERPTVN0
cmluZyB0eXBlKTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZl
ciBidWZmZXIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZTsKICAgICAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBlbmRPZlN0cmVhbShv
cHRpb25hbCBFbmRPZlN0cmVhbUVycm9yIGVycm9yKTsKKyAgICB1bmRlZmluZWQgZW5kT2ZTdHJl
YW0ob3B0aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CiAKICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkIChET01T
dHJpbmcgdHlwZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRMaXZl
U2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyTGl2ZVNlZWthYmxlUmFuZ2UoKTsKKyAgICB1bmRlZmlu
ZWQgc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICB1
bmRlZmluZWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbnNvdXJjZW9wZW47CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJj
ZWVuZGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01
OSwxMSArNTksMTEgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRX
aW5kb3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGFwcGVuZEJ1ZmZlcihCdWZmZXJTb3VyY2UgZGF0YSk7CisgICAg
dW5kZWZpbmVkIGFwcGVuZEJ1ZmZlcihCdWZmZXJTb3VyY2UgZGF0YSk7CiAKICAgICAvLyBBYm9y
dCB0aGUgY3VycmVudCBzZWdtZW50IGFwcGVuZCBzZXF1ZW5jZS4KLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHJlbW92ZShkb3VibGUgc3RhcnQsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kKTsKKyAgICB1
bmRlZmluZWQgYWJvcnQoKTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlKGRvdWJsZSBzdGFydCwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnVw
ZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251cGRhdGU7CkBAIC03MSw1
ICs3MSw1IEBACiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9yOwogICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsKIAotICAgIFtFbmFibGVkQnlTZXR0aW5nPVNvdXJj
ZUJ1ZmZlckNoYW5nZVR5cGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2hhbmdlVHlw
ZShET01TdHJpbmcgdHlwZSk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9U291cmNlQnVmZmVyQ2hh
bmdlVHlwZV0gdW5kZWZpbmVkIGNoYW5nZVR5cGUoRE9NU3RyaW5nIHR5cGUpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVyLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9UGVlckNvbm5lY3Rpb24sCiAgICAgRXhwb3NlZD1XaW5k
b3cKIF0gaW50ZXJmYWNlIFJUQ0RUTUZTZW5kZXIgOiBFdmVudFRhcmdldCB7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0RFRNRihET01TdHJpbmcgdG9uZXMsIG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgZHVyYXRpb24gPSAxMDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
aW50ZXJUb25lR2FwID0gNzApOworICAgIHVuZGVmaW5lZCBpbnNlcnREVE1GKERPTVN0cmluZyB0
b25lcywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBkdXJhdGlvbiA9IDEwMCwgb3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBpbnRlclRvbmVHYXAgPSA3MCk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnRvbmVjaGFuZ2U7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5JbnNl
cnREVE1GOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsMTAgQEAKIAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYmluYXJ5VHlw
ZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXIg
ZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZChBcnJheUJ1ZmZl
clZpZXcgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZChCbG9i
IGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbmQoVVNWU3RyaW5n
IGRhdGEpOworICAgIHVuZGVmaW5lZCBzZW5kKEFycmF5QnVmZmVyIGRhdGEpOworICAgIHVuZGVm
aW5lZCBzZW5kKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICB1bmRlZmluZWQgc2VuZChCbG9i
IGRhdGEpOworICAgIHVuZGVmaW5lZCBzZW5kKFVTVlN0cmluZyBkYXRhKTsKIAogICAgIHVuZGVm
aW5lZCBjbG9zZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAkocmV2aXNpb24gMjc0NzI4KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB0eXBlZGVmIChvYmplY3Qgb3Ig
RE9NU3RyaW5nKSBBbGdvcml0aG1JCiAKICAgICB1bmRlZmluZWQgcmVzdGFydEljZSgpOwogICAg
IFJUQ0NvbmZpZ3VyYXRpb24gZ2V0Q29uZmlndXJhdGlvbigpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKTsKKyAgICB1bmRlZmluZWQgc2V0Q29uZmlndXJhdGlvbihSVENDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24pOwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwogCiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbm5lZ290aWF0aW9ubmVlZGVkOwpAQCAtMTI0LDE3ICsxMjQsMTcgQEAg
dHlwZWRlZiAob2JqZWN0IG9yIERPTVN0cmluZykgQWxnb3JpdGhtSQogICAgIHNlcXVlbmNlPFJU
Q1J0cFJlY2VpdmVyPiBnZXRSZWNlaXZlcnMoKTsKICAgICBzZXF1ZW5jZTxSVENSdHBUcmFuc2Nl
aXZlcj4gZ2V0VHJhbnNjZWl2ZXJzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ1J0
cFNlbmRlciBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBNZWRpYVN0cmVhbS4uLiBz
dHJlYW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmVUcmFjayhS
VENSdHBTZW5kZXIgc2VuZGVyKTsKKyAgICBSVENSdHBTZW5kZXIgYWRkVHJhY2soTWVkaWFTdHJl
YW1UcmFjayB0cmFjaywgTWVkaWFTdHJlYW0uLi4gc3RyZWFtcyk7CisgICAgdW5kZWZpbmVkIHJl
bW92ZVRyYWNrKFJUQ1J0cFNlbmRlciBzZW5kZXIpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBSVENSdHBUcmFuc2NlaXZlciBhZGRUcmFuc2NlaXZlcigoTWVkaWFTdHJlYW1UcmFjayBvciBE
T01TdHJpbmcpIHRyYWNrLCBvcHRpb25hbCBSVENSdHBUcmFuc2NlaXZlckluaXQgaW5pdCk7Cisg
ICAgUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoKE1lZGlhU3RyZWFtVHJhY2sgb3Ig
RE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOwog
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYWNrOwogCiAgICAgLy8gNi4xIFBlZXIt
dG8tcGVlciBkYXRhIEFQSQogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlzc2luZyBzY3RwCiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURhdGFDaGFubmVsKFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBvcHRpb25hbCBSVENEYXRh
Q2hhbm5lbEluaXQgb3B0aW9ucyk7CisgICAgUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5u
ZWwoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJU
Q0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
ZGF0YWNoYW5uZWw7CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAkocmV2
aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1ICszMSw1IEBA
IHR5cGVkZWYgKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBvciBSVENSdHAKICAgICBFeHBvc2VkPVdp
bmRvdywKICAgICBJbXBsZW1lbnRlZEJ5PVJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybSwKIF0g
cGFydGlhbCBpbnRlcmZhY2UgUlRDUnRwUmVjZWl2ZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gYXR0cmlidXRlIFJUQ1J0cFRyYW5zZm9ybT8gdHJhbnNmb3JtOworICAgIGF0dHJpYnV0ZSBS
VENSdHBUcmFuc2Zvcm0/IHRyYW5zZm9ybTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
aWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1
LDYgQEAgZGljdGlvbmFyeSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1PcHRpb25zIAogICAgIC8vIFBy
b21pc2U8dW5kZWZpbmVkPiByYXRjaGV0RW5jcnlwdGlvbktleSgpOwogICAgIC8vIFByb21pc2U8
dW5kZWZpbmVkPiBzZXRTaWduaW5nS2V5KENyeXB0b0tleSBrZXkpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0gcmVhZGFibGU7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgV3JpdGFibGVTdHJlYW0g
d3JpdGFibGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlYWRhYmxlU3RyZWFtIHJlYWRhYmxl
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXcml0YWJsZVN0cmVhbSB3cml0YWJsZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDUgKzM1LDUgQEAKICAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgb3B0aW9uczsK
IAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcXVlc3RLZXlGcmFtZSgpOworICAgIHVuZGVmaW5lZCBy
ZXF1ZXN0S2V5RnJhbWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwJKHJl
dmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUgKzMxLDUgQEAg
dHlwZWRlZiAoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIG9yIFJUQ1J0cAogICAgIEV4cG9zZWQ9V2lu
ZG93LAogICAgIEltcGxlbWVudGVkQnk9UlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybSwKIF0gcGFy
dGlhbCBpbnRlcmZhY2UgUlRDUnRwU2VuZGVyIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGF0
dHJpYnV0ZSBSVENSdHBUcmFuc2Zvcm0/IHRyYW5zZm9ybTsKKyAgICBhdHRyaWJ1dGUgUlRDUnRw
VHJhbnNmb3JtPyB0cmFuc2Zvcm07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAkocmV2aXNpb24gMjc0NzI4KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgUlRDUnRwU2VuZFBhcmFtZXRlcnMg
Z2V0UGFyYW1ldGVycygpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRQYXJhbWV0ZXJzKFJU
Q1J0cFNlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBy
ZXBsYWNlVHJhY2soTWVkaWFTdHJlYW1UcmFjaz8gd2l0aFRyYWNrKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdHJlYW1zKE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwor
ICAgIHVuZGVmaW5lZCBzZXRTdHJlYW1zKE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwogICAgIFBy
b21pc2U8UlRDU3RhdHNSZXBvcnQ+IGdldFN0YXRzKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VC
X1JUQywgRW5hYmxlZEF0UnVudGltZT1XZWJSVENEVE1GXSByZWFkb25seSBhdHRyaWJ1dGUgUlRD
RFRNRlNlbmRlcj8gZHRtZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCShyZXZpc2lvbiAyNzQ3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNiBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3Rv
cHBlZDsKICAgICBhdHRyaWJ1dGUgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gZGlyZWN0aW9uOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj8gY3VycmVu
dERpcmVjdGlvbjsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdG9wKCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Q29kZWNQcmVmZXJlbmNlcyhzZXF1
ZW5jZTxSVENSdHBDb2RlY0NhcGFiaWxpdHk+IGNvZGVjcyk7CisgICAgdW5kZWZpbmVkIHN0b3Ao
KTsKKyAgICB1bmRlZmluZWQgc2V0Q29kZWNQcmVmZXJlbmNlcyhzZXF1ZW5jZTxSVENSdHBDb2Rl
Y0NhcGFiaWxpdHk+IGNvZGVjcyk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25F
dmVudC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1ldGhv
ZE5hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyB2YWxpZGF0aW9uVVJMOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlKFByb21pc2U8YW55PiBt
ZXJjaGFudFNlc3Npb25Qcm9taXNlKTsKKyAgICB1bmRlZmluZWQgY29tcGxldGUoUHJvbWlzZTxh
bnk+IG1lcmNoYW50U2Vzc2lvblByb21pc2UpOwogfTsKIAogWwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1ICszMSw1IEBACiBdIGludGVyZmFjZSBQYXltZW50UmVx
dWVzdFVwZGF0ZUV2ZW50IDogRXZlbnQgewogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBl
LCBvcHRpb25hbCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdCBldmVudEluaXREaWN0KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHVwZGF0ZVdpdGgoUHJvbWlzZTxQ
YXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOworICAgIHVuZGVmaW5lZCB1cGRh
dGVXaXRoKFByb21pc2U8UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFpbHNQcm9taXNlKTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBpbnRlcmltUmVzdWx0czsKICAgICBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBtYXhBbHRlcm5hdGl2ZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b24sIEltcGxlbWVudGVkQXM9c3RhcnRSZWNvZ25pdGlvbl0gdW5kZWZpbmVkIHN0YXJ0KCk7Cisg
ICAgW0ltcGxlbWVudGVkQXM9c3RhcnRSZWNvZ25pdGlvbl0gdW5kZWZpbmVkIHN0YXJ0KCk7CiAg
ICAgW0ltcGxlbWVudGVkQXM9c3RvcFJlY29nbml0aW9uXSB1bmRlZmluZWQgc3RvcCgpOwogICAg
IFtJbXBsZW1lbnRlZEFzPWFib3J0UmVjb2duaXRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlk
bAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8g
Q2hhbm5lbCBhY2Nlc3MKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gYW55IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hhbm5lbEluZGV4KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb24sIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdl
YkF1ZGlvXSB1bmRlZmluZWQgY29weUZyb21DaGFubmVsKEZsb2F0MzJBcnJheSBkZXN0aW5hdGlv
biwgdW5zaWduZWQgbG9uZyBjaGFubmVsTnVtYmVyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1
ZmZlck9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgRW5hYmxlZEJ5U2V0dGlu
Zz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9dIHVuZGVmaW5lZCBjb3B5VG9DaGFubmVsKEZsb2F0
MzJBcnJheSBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgY2hhbm5lbE51bWJlciwgb3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBhbnkgZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOworICAgIFtF
bmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpb10gdW5kZWZpbmVkIGNvcHlG
cm9tQ2hhbm5lbChGbG9hdDMyQXJyYXkgZGVzdGluYXRpb24sIHVuc2lnbmVkIGxvbmcgY2hhbm5l
bE51bWJlciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKKyAgICBb
RW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9dIHVuZGVmaW5lZCBjb3B5
VG9DaGFubmVsKEZsb2F0MzJBcnJheSBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgY2hhbm5lbE51bWJl
ciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKICAgICBhdHRy
aWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9wdGlvbmFsIGRvdWJsZSB3aGVuID0g
MCwgb3B0aW9uYWwgZG91YmxlIGdyYWluT2Zmc2V0ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWlu
RHVyYXRpb24pOworICAgIFtJbXBsZW1lbnRlZEFzPXN0YXJ0TGF0ZXJdIHVuZGVmaW5lZCBzdGFy
dChvcHRpb25hbCBkb3VibGUgd2hlbiA9IDAsIG9wdGlvbmFsIGRvdWJsZSBncmFpbk9mZnNldCA9
IDAsIG9wdGlvbmFsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKIAogICAgIC8vIEZJWE1FOiBUaG9z
ZSBjb25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUg
cHJlZml4ZWQgQVBJIGFuZCBzaG91bGQKICAgICAvLyBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBz
dXBwb3J0aW5nIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5
ICs0NCw5IEBACiAgICAgW0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHVu
ZGVmaW5lZD4gcmVzdW1lKCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNsb3NlKCk7CiAKLSAg
ICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVk
aWFFbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2Uo
TWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
IE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlh
RWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3Ry
ZWFtIG1lZGlhU3RyZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsK
IAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydC4KICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrQXVk
aW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2UoTWVkaWFTdHJlYW1UcmFj
ayBtZWRpYVN0cmVhbVRyYWNrKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHVw
WTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSB1cFo7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRPcmllbnRhdGlvbihm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB4VXAsIGZsb2F0IHlVcCwgZmxvYXQgelVw
KTsKKyAgICB1bmRlZmluZWQgc2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7
CisgICAgdW5kZWZpbmVkIHNldE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHhVcCwgZmxvYXQgeVVwLCBmbG9hdCB6VXApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwJKHJldmlzaW9uIDI3NDcyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDE0IEBACiAgICAgYXR0cmlidXRlIENoYW5uZWxDb3VudE1v
ZGUgY2hhbm5lbENvdW50TW9kZTsKICAgICBhdHRyaWJ1dGUgQ2hhbm5lbEludGVycHJldGF0aW9u
IGNoYW5uZWxJbnRlcnByZXRhdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9O
b2RlIGNvbm5lY3QoW1JldHVyblZhbHVlXSBBdWRpb05vZGUgZGVzdGluYXRpb24sIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbnB1dCA9
IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbm5lY3QoQXVkaW9QYXJh
bSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwKTsKKyAgICBB
dWRpb05vZGUgY29ubmVjdChbUmV0dXJuVmFsdWVdIEF1ZGlvTm9kZSBkZXN0aW5hdGlvbiwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlu
cHV0ID0gMCk7CisgICAgdW5kZWZpbmVkIGNvbm5lY3QoQXVkaW9QYXJhbSBkZXN0aW5hdGlvbiwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwKTsKIAogICAgIHVuZGVmaW5lZCBkaXNj
b25uZWN0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGlzY29ubmVjdCh1
bnNpZ25lZCBsb25nIG91dHB1dCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
ZGlzY29ubmVjdChBdWRpb05vZGUgZGVzdGluYXRpb25Ob2RlKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVu
c2lnbmVkIGxvbmcgb3V0cHV0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBk
aXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVuc2lnbmVkIGxvbmcgb3V0cHV0
LCB1bnNpZ25lZCBsb25nIGlucHV0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBkaXNjb25uZWN0KEF1ZGlvUGFyYW0gZGVzdGluYXRpb25QYXJhbSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgZGlzY29ubmVjdChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uUGFy
YW0sIHVuc2lnbmVkIGxvbmcgb3V0cHV0KTsKKyAgICB1bmRlZmluZWQgZGlzY29ubmVjdCh1bnNp
Z25lZCBsb25nIG91dHB1dCk7CisgICAgdW5kZWZpbmVkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlIGRl
c3RpbmF0aW9uTm9kZSk7CisgICAgdW5kZWZpbmVkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlIGRlc3Rp
bmF0aW9uTm9kZSwgdW5zaWduZWQgbG9uZyBvdXRwdXQpOworICAgIHVuZGVmaW5lZCBkaXNjb25u
ZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVuc2lnbmVkIGxvbmcgb3V0cHV0LCB1bnNp
Z25lZCBsb25nIGlucHV0KTsKKyAgICB1bmRlZmluZWQgZGlzY29ubmVjdChBdWRpb1BhcmFtIGRl
c3RpbmF0aW9uUGFyYW0pOworICAgIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvUGFyYW0gZGVz
dGluYXRpb25QYXJhbSwgdW5zaWduZWQgbG9uZyBvdXRwdXQpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbAkocmV2aXNpb24gMjc0
NzI4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGZsb2F0IG1heFZhbHVlOwogCiAgICAgLy8gUGFyYW1ldGVyIGF1dG9tYXRpb24uCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFZhbHVlQXRUaW1lKGZsb2F0IHZhbHVlLCBk
b3VibGUgc3RhcnRUaW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvUGFyYW0gbGlu
ZWFyUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBlbmRUaW1lKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvUGFyYW0gZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGlt
ZShmbG9hdCB2YWx1ZSwgZG91YmxlIGVuZFRpbWUpOworICAgIEF1ZGlvUGFyYW0gc2V0VmFsdWVB
dFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBzdGFydFRpbWUpOworICAgIEF1ZGlvUGFyYW0gbGlu
ZWFyUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBlbmRUaW1lKTsKKyAgICBB
dWRpb1BhcmFtIGV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJs
ZSBlbmRUaW1lKTsKIAogICAgIC8vIEV4cG9uZW50aWFsbHkgYXBwcm9hY2ggdGhlIHRhcmdldCB3
aXRoIGEgcmF0ZSBoYXZpbmcgdGhlIGdpdmVuIHRpbWUgY29uc3RhbnQuCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFRhcmdldEF0VGltZShmbG9hdCB0YXJnZXQsIGRvdWJs
ZSBzdGFydFRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCk7CisgICAgQXVkaW9QYXJhbSBzZXRUYXJn
ZXRBdFRpbWUoZmxvYXQgdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lLCBmbG9hdCB0aW1lQ29uc3Rh
bnQpOwogCiAgICAgLy8gU2V0cyBhbiBhcnJheSBvZiBhcmJpdHJhcnkgcGFyYW1ldGVyIHZhbHVl
cyBzdGFydGluZyBhdCB0aW1lIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb24uCiAgICAgLy8gVGhlIG51
bWJlciBvZiB2YWx1ZXMgd2lsbCBiZSBzY2FsZWQgdG8gZml0IGludG8gdGhlIGRlc2lyZWQgZHVy
YXRpb24uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFZhbHVlQ3VydmVB
dFRpbWUoc2VxdWVuY2U8ZmxvYXQ+IHZhbHVlcywgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1
cmF0aW9uKTsKKyAgICBBdWRpb1BhcmFtIHNldFZhbHVlQ3VydmVBdFRpbWUoc2VxdWVuY2U8Zmxv
YXQ+IHZhbHVlcywgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9uKTsKIAogICAgIC8v
IENhbmNlbHMgYWxsIHNjaGVkdWxlZCBwYXJhbWV0ZXIgY2hhbmdlcyB3aXRoIHRpbWVzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydFRpbWUuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBB
dWRpb1BhcmFtIGNhbmNlbFNjaGVkdWxlZFZhbHVlcyhkb3VibGUgY2FuY2VsVGltZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIGNhbmNlbEFuZEhvbGRBdFRpbWUoZG91Ymxl
IGNhbmNlbFRpbWUpOworICAgIEF1ZGlvUGFyYW0gY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGRvdWJs
ZSBjYW5jZWxUaW1lKTsKKyAgICBBdWRpb1BhcmFtIGNhbmNlbEFuZEhvbGRBdFRpbWUoZG91Ymxl
IGNhbmNlbFRpbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5pZGwJKHJldmlzaW9u
IDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNiBAQAogICAgIEV4
cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgOiBBdWRp
b05vZGUgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lbmRlZDsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9w
dGlvbmFsIGRvdWJsZSB3aGVuID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPXN0b3BMYXRlcl0gdW5kZWZpbmVkIHN0b3Aob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAw
KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9u
YWwgZG91YmxlIHdoZW4gPSAwKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdG9wTGF0ZXJdIHVuZGVm
aW5lZCBzdG9wKG9wdGlvbmFsIGRvdWJsZSB3aGVuID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBACiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3Rv
dHlwZSwKICAgICBHbG9iYWw9KFdvcmtsZXQsQXVkaW9Xb3JrbGV0KSwKIF0gaW50ZXJmYWNlIEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xldEdsb2JhbFNjb3BlIHsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWdpc3RlclByb2Nlc3NvcihET01TdHJpbmcgbmFtZSwg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IgcHJvY2Vzc29yQ3Rvcik7CisgICAgdW5k
ZWZpbmVkIHJlZ2lzdGVyUHJvY2Vzc29yKERPTVN0cmluZyBuYW1lLCBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3RvciBwcm9jZXNzb3JDdG9yKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRGcmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIGN1cnJlbnRUaW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzYW1wbGVS
YXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw2IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgogXSBpbnRlcmZhY2UgQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dF
eGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIGNvbnN0cnVjdG9yKCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0
IHBvcnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVk
aW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00OCwzMSArNDgsMzEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0
U3RhdGUgc3RhdGU7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdlOwog
ICAgIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1l
cywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRh
IGRlY29kaW5nLgogICAgIFByb21pc2U8QXVkaW9CdWZmZXI+IGRlY29kZUF1ZGlvRGF0YShBcnJh
eUJ1ZmZlciBhdWRpb0RhdGEsIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IHN1Y2Nlc3ND
YWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CiAK
ICAgICAvLyBTb3VyY2VzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNy
ZWF0ZUJ1ZmZlclNvdXJjZSgpOwogCiAgICAgLy8gUHJvY2Vzc2luZyBub2RlcwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIGRvdWJsZSBtYXhEZWxheVRpbWUg
PSAxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlx
dWFkRmlsdGVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVh
dGVXYXZlU2hhcGVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQYW5uZXJOb2RlIGNyZWF0
ZVBhbm5lcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVD
b252b2x2ZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBB
bmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNj
cmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5u
ZWxzID0gMik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVP
c2NpbGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRl
UGVyaW9kaWNXYXZlKHNlcXVlbmNlPGZsb2F0PiByZWFsLCBzZXF1ZW5jZTxmbG9hdD4gaW1hZywg
b3B0aW9uYWwgUGVyaW9kaWNXYXZlT3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIENvbnN0YW50U291cmNlTm9kZSBjcmVhdGVDb25zdGFudFNvdXJjZSgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gU3RlcmVvUGFubmVyTm9kZSBjcmVhdGVTdGVyZW9QYW5uZXIoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IElJUkZpbHRlck5vZGUgY3JlYXRlSUlSRmlsdGVyKHNlcXVlbmNlPGRvdWJsZT4gZmVlZGZvcndh
cmQsIHNlcXVlbmNlPGRvdWJsZT4gZmVlZGJhY2spOworICAgIEdhaW5Ob2RlIGNyZWF0ZUdhaW4o
KTsKKyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgZG91YmxlIG1heERlbGF5VGlt
ZSA9IDEpOworICAgIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAg
V2F2ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFBhbm5lck5vZGUgY3JlYXRl
UGFubmVyKCk7CisgICAgQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBEeW5h
bWljc0NvbXByZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEFuYWx5
c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRl
U2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgT3NjaWxsYXRv
ck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFBlcmlvZGljV2F2ZSBjcmVhdGVQZXJpb2Rp
Y1dhdmUoc2VxdWVuY2U8ZmxvYXQ+IHJlYWwsIHNlcXVlbmNlPGZsb2F0PiBpbWFnLCBvcHRpb25h
bCBQZXJpb2RpY1dhdmVPcHRpb25zIG9wdGlvbnMpOworICAgIENvbnN0YW50U291cmNlTm9kZSBj
cmVhdGVDb25zdGFudFNvdXJjZSgpOworICAgIFN0ZXJlb1Bhbm5lck5vZGUgY3JlYXRlU3RlcmVv
UGFubmVyKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElJUkZpbHRl
ck5vZGUgY3JlYXRlSUlSRmlsdGVyKHNlcXVlbmNlPGRvdWJsZT4gZmVlZGZvcndhcmQsIHNlcXVl
bmNlPGRvdWJsZT4gZmVlZGJhY2spOwogCiAgICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1l
cmdpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRl
Q2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0g
Nik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFu
bmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKyAg
ICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5uZWxNZXJnZXJOb2RlIGNy
ZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9
IDYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmls
dGVyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNSArMzcsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIFE7IC8v
IFF1YWxpdHkgZmFjdG9yCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gZ2Fpbjsg
Ly8gaW4gRGVjaWJlbHMKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGdldEZy
ZXF1ZW5jeVJlc3BvbnNlKEZsb2F0MzJBcnJheSBmcmVxdWVuY3lIeiwgRmxvYXQzMkFycmF5IG1h
Z1Jlc3BvbnNlLCBGbG9hdDMyQXJyYXkgcGhhc2VSZXNwb25zZSk7CisgICAgdW5kZWZpbmVkIGdl
dEZyZXF1ZW5jeVJlc3BvbnNlKEZsb2F0MzJBcnJheSBmcmVxdWVuY3lIeiwgRmxvYXQzMkFycmF5
IG1hZ1Jlc3BvbnNlLCBGbG9hdDMyQXJyYXkgcGhhc2VSZXNwb25zZSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9JSVJGaWx0ZXJOb2RlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0lJUkZpbHRlck5vZGUuaWRsCShy
ZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0lJUkZp
bHRlck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw1ICsyOSw1IEBACiAgICAgRXhwb3Nl
ZD1XaW5kb3cKIF0gaW50ZXJmYWNlIElJUkZpbHRlck5vZGUgOiBBdWRpb05vZGUgewogICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihCYXNlQXVkaW9Db250
ZXh0IGF1ZGlvQ29udGV4dCwgSUlSRmlsdGVyT3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBnZXRGcmVxdWVuY3lSZXNwb25zZShGbG9hdDMyQXJyYXkg
ZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwgRmxvYXQzMkFycmF5IHBoYXNl
UmVzcG9uc2UpOworICAgIHVuZGVmaW5lZCBnZXRGcmVxdWVuY3lSZXNwb25zZShGbG9hdDMyQXJy
YXkgZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwgRmxvYXQzMkFycmF5IHBo
YXNlUmVzcG9uc2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCAr
MzQsOCBAQAogICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKIAog
ICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0gCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CisgICAgdW5kZWZpbmVkIHNldFBvc2l0aW9uKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworICAgIHVuZGVmaW5lZCBzZXRPcmllbnRhdGlvbihm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKICAgICAKICAgICAvLyBEZWZhdWx0IGRpc3RhbmNl
IG1vZGVsIGlzIGludmVyc2UKICAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFu
Y2VNb2RlbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDI3
NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNSArNDcsNSBAQAogICAgIGF0
dHJpYnV0ZSBkb3VibGUgbG9vcFN0YXJ0OwogICAgIGF0dHJpYnV0ZSBkb3VibGUgbG9vcEVuZDsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1zdGFydExhdGVyXSB1bmRl
ZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3VibGUgZ3Jh
aW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7CisgICAgW0ltcGxl
bWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9wdGlvbmFsIGRvdWJsZSB3aGVu
ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWluT2Zmc2V0ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdy
YWluRHVyYXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMzYgKzU1LDM2IEBACiAgICAgLy8gTnVtYmVyIG9mIEF1ZGlv
QnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51
bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVk
QXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlCdWZm
ZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVm
ZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJP
ZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFtJbXBsZW1lbnRl
ZEFzPWNyZWF0ZUxlZ2FjeUJ1ZmZlcl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVm
ZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KICAgICB1bmRlZmluZWQgZGVjb2RlQXVkaW9EYXRhKEFy
cmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIAogICAgIC8v
IFNvdXJjZXMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlV2Vi
S2l0QnVmZmVyU291cmNlXSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVy
U291cmNlKCk7CisgICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlXSBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CiAKLSAgICBb
Q29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFF
bGVtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1l
bnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25d
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlh
U3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRp
YVN0cmVhbURlc3RpbmF0aW9uKCk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJl
YW0gbWVkaWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwog
CiAgICAgLy8gUHJvY2Vzc2luZyBub2RlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gR2Fpbk5v
ZGUgY3JlYXRlR2FpbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGVsYXlOb2RlIGNyZWF0
ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRl
cigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNo
YXBlcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJL
aXRQYW5uZXJdIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIENvbnZvbHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdER5bmFtaWNzQ29tcHJl
c3Nvcl0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNz
b3IoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNl
cigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVT
Y3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0T3NjaWxsYXRvcl0gV2ViS2l0T3Nj
aWxsYXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
UGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQz
MkFycmF5IGltYWcpOworICAgIEdhaW5Ob2RlIGNyZWF0ZUdhaW4oKTsKKyAgICBEZWxheU5vZGUg
Y3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAx
KTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIFdhdmVT
aGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVX
ZWJLaXRQYW5uZXJdIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKKyAgICBD
b252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0
ZVdlYktpdER5bmFtaWNzQ29tcHJlc3Nvcl0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlz
ZXIoKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdE9z
Y2lsbGF0b3JdIFdlYktpdE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBQ
ZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMy
QXJyYXkgaW1hZyk7CiAKICAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFubmVsU3Bs
aXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOworICAgIENoYW5uZWxT
cGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5l
bE1lcmdlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CiAKICAg
ICAvLyBPZmZsaW5lIHJlbmRlcmluZwogICAgIC8vIHVuZGVmaW5lZCBwcmVwYXJlT2ZmbGluZUJ1
ZmZlclJlbmRlcmluZyh1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNSArMzQsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBk
b3ViCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldFJvd0xpc3Qg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgIHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVu
cmVzdHJpY3RlZCBkb3ViCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgRXhwb3NlZD1X
aW5kb3cKIF0gaW50ZXJmYWNlIFNRTFRyYW5zYWN0aW9uIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBleGVjdXRlU3FsKERPTVN0cmluZyBzcWxTdGF0ZW1lbnQsIG9wdGlvbmFs
IHNlcXVlbmNlPFNRTFZhbHVlPj8gYXJndW1lbnRzID0gW10sIG9wdGlvbmFsIFNRTFN0YXRlbWVu
dENhbGxiYWNrPyBjYWxsYmFjaywgb3B0aW9uYWwgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz8g
ZXJyb3JDYWxsYmFjayk7CisgICAgdW5kZWZpbmVkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0
YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0
aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZChB
cnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZW5k
KEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2Vu
ZChVU1ZTdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7
CisgICAgdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIHVuZGVmaW5l
ZCBzZW5kKEJsb2IgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoVVNWU3RyaW5nIGRhdGEpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1w
XSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBVU1ZTdHJpbmcgcmVhc29uKTsKKyAgICB1
bmRlZmluZWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRp
b25hbCBVU1ZTdHJpbmcgcmVhc29uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDYgQEAKIF0gaW50ZXJmYWNlIFdlYlhSRnJhbWUgewogICAgIFtTYW1lT2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNlc3Npb247CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIENhbGxXaXRoPURvY3VtZW50XSBXZWJYUlZpZXdlclBvc2U/IGdldFZpZXdlclBvc2Uo
V2ViWFJSZWZlcmVuY2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uLCBDYWxsV2l0aD1Eb2N1bWVudF0gV2ViWFJQb3NlPyBnZXRQb3NlKFdlYlhSU3BhY2Ugc3Bh
Y2UsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFdlYlhS
Vmlld2VyUG9zZT8gZ2V0Vmlld2VyUG9zZShXZWJYUlJlZmVyZW5jZVNwYWNlIHJlZmVyZW5jZVNw
YWNlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNw
YWNlIHNwYWNlLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJl
bmNlU3BhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgU2tpcFZU
YWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJlZmVyZW5jZVNwYWNlCiBdIGlu
dGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFjZSB7Ci0gICAgW05ld09iamVj
dCwgTWF5VGhyb3dFeGNlcHRpb25dIFdlYlhSUmVmZXJlbmNlU3BhY2UgZ2V0T2Zmc2V0UmVmZXJl
bmNlU3BhY2UoV2ViWFJSaWdpZFRyYW5zZm9ybSBvcmlnaW5PZmZzZXQpOworICAgIFtOZXdPYmpl
Y3RdIFdlYlhSUmVmZXJlbmNlU3BhY2UgZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoV2ViWFJSaWdp
ZFRyYW5zZm9ybSBvcmlnaW5PZmZzZXQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bnJlc2V0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksMTMgKzM5LDEzIEBA
CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUklucHV0U291cmNlQXJy
YXkgaW5wdXRTb3VyY2VzOwogCiAgICAgLy8gTWV0aG9kcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHVwZGF0ZVJlbmRlclN0YXRlKG9wdGlvbmFsIFhSUmVuZGVyU3RhdGVJbml0
IHN0YXRlSW5pdCk7CisgICAgdW5kZWZpbmVkIHVwZGF0ZVJlbmRlclN0YXRlKG9wdGlvbmFsIFhS
UmVuZGVyU3RhdGVJbml0IHN0YXRlSW5pdCk7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxXZWJY
UlJlZmVyZW5jZVNwYWNlPiByZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5
cGUgdHlwZSk7CiAKICAgICB1bnNpZ25lZCBsb25nIHJlcXVlc3RBbmltYXRpb25GcmFtZShYUkZy
YW1lUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgY2FuY2VsQW5pbWF0
aW9uRnJhbWUodW5zaWduZWQgbG9uZyBoYW5kbGUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBQcm9taXNlPHVuZGVmaW5lZD4gZW5kKCk7CisgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGVuZCgp
OwogCiAgICAgLy8gRXZlbnRzCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5p
ZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB0eXBlZGVm
IChXZWJHTFJlbmRlcmluZ0NvbnRleHQpIFdlYlhSV2ViCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgZnJhbWVidWZmZXJIZWlnaHQ7CiAKICAgICAvLyBNZXRob2RzCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBXZWJYUlZpZXdwb3J0PyBnZXRWaWV3cG9ydChXZWJYUlZpZXcg
dmlldyk7CisgICAgV2ViWFJWaWV3cG9ydD8gZ2V0Vmlld3BvcnQoV2ViWFJWaWV3IHZpZXcpOwog
CiAgICAgLy8gU3RhdGljIE1ldGhvZHMKICAgICBzdGF0aWMgZG91YmxlIGdldE5hdGl2ZUZyYW1l
YnVmZmVyU2NhbGVGYWN0b3IoV2ViWFJTZXNzaW9uIHNlc3Npb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw2IEBACiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0x
LyN0aGUtYW5pbWF0YWJsZS1pbnRlcmZhY2UtbWl4aW4KIGludGVyZmFjZSBtaXhpbiBBbmltYXRh
YmxlIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gV2Vi
QW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFtZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0
ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucykgb3B0aW9ucyk7CisgICAgW0Nh
bGxXaXRoPUdsb2JhbE9iamVjdF0gV2ViQW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFt
ZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0
aW9ucykgb3B0aW9ucyk7CiAgICAgc2VxdWVuY2U8V2ViQW5pbWF0aW9uPiBnZXRBbmltYXRpb25z
KG9wdGlvbmFsIEdldEFuaW1hdGlvbnNPcHRpb25zIG9wdGlvbnMpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsCShyZXZpc2lvbiAyNzQ3
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjksNSArMjksNSBAQAogXSBpbnRlcmZhY2UgQW5pbWF0aW9uRWZmZWN0
IHsKICAgICBbSW1wbGVtZW50ZWRBcz1nZXRCaW5kaW5nc1RpbWluZ10gRWZmZWN0VGltaW5nIGdl
dFRpbWluZygpOwogICAgIFtJbXBsZW1lbnRlZEFzPWdldEJpbmRpbmdzQ29tcHV0ZWRUaW1pbmdd
IENvbXB1dGVkRWZmZWN0VGltaW5nIGdldENvbXB1dGVkVGltaW5nKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWJpbmRpbmdzVXBkYXRlVGltaW5nXSB1bmRlZmluZWQg
dXBkYXRlVGltaW5nKG9wdGlvbmFsIE9wdGlvbmFsRWZmZWN0VGltaW5nIHRpbWluZyk7CisgICAg
W0ltcGxlbWVudGVkQXM9YmluZGluZ3NVcGRhdGVUaW1pbmddIHVuZGVmaW5lZCB1cGRhdGVUaW1p
bmcob3B0aW9uYWwgT3B0aW9uYWxFZmZlY3RUaW1pbmcgdGltaW5nKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmlu
ZzsKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBjb25zdHJ1Y3RvcihLZXlmcmFtZUVmZmVj
dCBzb3VyY2UpOwogCiAgICAgYXR0cmlidXRlIEVsZW1lbnQ/IHRhcmdldDsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBDU1NPTVN0cmluZz8gcHNldWRvRWxlbWVudDsKKyAgICBh
dHRyaWJ1dGUgQ1NTT01TdHJpbmc/IHBzZXVkb0VsZW1lbnQ7CiAgICAgW0VuYWJsZWRCeVNldHRp
bmc9V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNdIGF0dHJpYnV0ZSBJdGVyYXRpb25D
b21wb3NpdGVPcGVyYXRpb24gaXRlcmF0aW9uQ29tcG9zaXRlOwogICAgIFtFbmFibGVkQnlTZXR0
aW5nPVdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zXSBhdHRyaWJ1dGUgQ29tcG9zaXRl
T3BlcmF0aW9uIGNvbXBvc2l0ZTsKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBsZW1l
bnRlZEFzPWdldEJpbmRpbmdzS2V5ZnJhbWVzXSBzZXF1ZW5jZTxvYmplY3Q+IGdldEtleWZyYW1l
cygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBs
ZW1lbnRlZEFzPXNldEJpbmRpbmdzS2V5ZnJhbWVzXSB1bmRlZmluZWQgc2V0S2V5ZnJhbWVzKG9i
amVjdD8ga2V5ZnJhbWVzKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBsZW1lbnRl
ZEFzPXNldEJpbmRpbmdzS2V5ZnJhbWVzXSB1bmRlZmluZWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8g
a2V5ZnJhbWVzKTsKIH07CiAKIGRpY3Rpb25hcnkgQmFzZVByb3BlcnR5SW5kZXhlZEtleWZyYW1l
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBlbnVtIEFuaW1hdGlvblJlcGxhY2VT
dGF0ZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NFZmZlY3RdIGF0dHJpYnV0ZSBBbmlt
YXRpb25FZmZlY3Q/IGVmZmVjdDsKICAgICBbU2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRl
PVdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzXSBhdHRyaWJ1dGUgQW5pbWF0aW9uVGltZWxp
bmU/IHRpbWVsaW5lOwogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzU3RhcnRUaW1lXSBhdHRy
aWJ1dGUgZG91YmxlPyBzdGFydFRpbWU7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVdIGF0dHJpYnV0ZSBkb3VibGU/IGN1cnJlbnRUaW1l
OworICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVdIGF0dHJpYnV0ZSBkb3Vi
bGU/IGN1cnJlbnRUaW1lOwogICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRlOwogICAg
IFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUGxheVN0YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQW5p
bWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZTsKICAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1Jl
cGxhY2VTdGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFuaW1hdGlvblJlcGxhY2VTdGF0ZSByZXBs
YWNlU3RhdGU7CkBAIC02MCwxMSArNjAsMTEgQEAgZW51bSBBbmltYXRpb25SZXBsYWNlU3RhdGUg
ewogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUmVhZHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBQ
cm9taXNlPFdlYkFuaW1hdGlvbj4gcmVhZHk7CiAgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NG
aW5pc2hlZF0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8V2ViQW5pbWF0aW9uPiBmaW5pc2hl
ZDsKICAgICB1bmRlZmluZWQgY2FuY2VsKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgZmluaXNoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWJp
bmRpbmdzUGxheV0gdW5kZWZpbmVkIHBsYXkoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIElt
cGxlbWVudGVkQXM9YmluZGluZ3NQYXVzZV0gdW5kZWZpbmVkIHBhdXNlKCk7CisgICAgdW5kZWZp
bmVkIGZpbmlzaCgpOworICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUGxheV0gdW5kZWZpbmVk
IHBsYXkoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1BhdXNlXSB1bmRlZmluZWQgcGF1
c2UoKTsKICAgICB1bmRlZmluZWQgdXBkYXRlUGxheWJhY2tSYXRlKGRvdWJsZSBwbGF5YmFja1Jh
dGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1JldmVy
c2VdIHVuZGVmaW5lZCByZXZlcnNlKCk7CisgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NSZXZl
cnNlXSB1bmRlZmluZWQgcmV2ZXJzZSgpOwogICAgIHVuZGVmaW5lZCBwZXJzaXN0KCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tbWl0U3R5bGVzKCk7CisgICAgdW5kZWZp
bmVkIGNvbW1pdFN0eWxlcygpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjc0NzI4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNzgsMTMgKzc4LDQ2IEBAIHN0YXRpYyBib29sIGlzVmlzaWJsZU5h
bWVkUHJvcGVydHkoSlNDOjoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gTk9URTogTmFtZWQg
Z2V0dGVycyBhcmUgbGl0dGxlIG9kZC4gVG8gYXZvaWQgZG9pbmcgZHVwbGljYXRlIGxvb2t1cHMg
KG9uY2Ugd2hlbiBjaGVja2luZyBpZgorLy8gICAgICAgdGhlIHByb3BlcnR5IG5hbWUgaXMgYSAn
c3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGFuZCBvbmNlIHRvIGdldCB0aGUgdmFsdWUpIHdlIHNp
Z25hbAorLy8gICAgICAgdGhhdCBhIHByb3BlcnR5IGlzIHN1cHBvcnRlZCBieSB3aGV0aGVyIG9y
IG5vdCBpdCBpcyAnbnVsbCcgKHdoZXJlIHdoYXQgbnVsbCBtZWFucyBpcworLy8gICAgICAgZGVw
ZW5kYW50IG9uIHRoZSBJREwgdHlwZSkuIFRoaXMgaXMgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24g
dGhhdCBubyBuYW1lZCBnZXR0ZXIgd2lsbAorLy8gICAgICAgZXZlciBhY3R1YWxseSB3YW50IHRv
IHJldHVybiBudWxsIGFzIGFuIGFjdHVhbCByZXR1cm4gdmFsdWUsIHdoaWNoIHNlZW1zIGxpa2Ug
YW4gb2sKKy8vICAgICAgIGFzc3VtcHRpb24gdG8gbWFrZSAoc2hvdWxkIGl0IHR1cm4gb3V0IHRo
aXMgZG9lc24ndCBob2xkIGluIHRoZSBmdXR1cmUsIHdlIGhhdmUgbG90cworLy8gICAgICAgb2Yg
b3B0aW9uczsgZG8gdHdvIGxvb2t1cHMsIGFkZCBhbiBleHRyYSBsYXllciBvZiBPcHRpb25hbCwg
ZXRjLikuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlLCB0eXBlbmFtZSBKU0NsYXNzLCB0eXBl
bmFtZSBJbm5lckl0ZW1BY2Nlc3Nvcj4KK3N0YXRpYyBkZWNsdHlwZShhdXRvKSB2aXNpYmxlTmFt
ZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IoSW5uZXJJdGVtQWNjZXNzb3ImJiBpbm5lckl0
ZW1BY2Nlc3NvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8c3RkOjppbnZv
a2VfcmVzdWx0X3Q8SW5uZXJJdGVtQWNjZXNzb3IsIEpTQ2xhc3MmLCBKU0M6OlByb3BlcnR5TmFt
ZT4+KSB7CisgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBFeGNlcHRpb25Pcjx0eXBlbmFtZSBJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+OworCisgICAgICAgIHJldHVybiBbaW5uZXJJdGVt
QWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+KGlubmVySXRlbUFjY2Vz
c29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8UmV0dXJuVHlwZT4geworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBp
bm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJu
VHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkgfTsKKyAgICAgICAgICAgIGlmICghSURM
VHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0LnJldHVyblZhbHVlKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybiBSZXR1cm5UeXBlIHsgSURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIH07CisgICAgfSBlbHNlIHsKKyAgICAgICAgdXNpbmcgUmV0dXJuVHlw
ZSA9IHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZTsKKworICAgICAgICByZXR1
cm4gW2lubmVySXRlbUFjY2Vzc29yID0gc3RkOjpmb3J3YXJkPElubmVySXRlbUFjY2Vzc29yPihp
bm5lckl0ZW1BY2Nlc3NvcildIChKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPFJldHVyblR5cGU+IHsKKyAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gaW5uZXJJdGVtQWNjZXNzb3IodGhpc09iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgIGlmICghSURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IElETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICB9OworICAgIH0KK30KKwogLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlICduYW1lZCBwcm9w
ZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobScgYXVnbWVudGVkIHRvIHJlcGxhY2UgdGhlCiAvLyAn
c3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGNoZWNrIHdpdGggZGlyZWN0IGFjY2VzcyB0byB0aGUg
aW1wbGVtZW50YXRpb24gdmFsdWUgcmV0dXJuZWQKIC8vIGZvciB0aGUgcHJvcGVydHkgbmFtZSwg
dmlhIHBhc3NlZCBpbiBmdW5jdG9yLiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCB0d28gbG9va2lu
ZyB1cCB0aGUKIC8vIHRoZSBwcm9wZXJ0eSBuYW1lIHR3aWNlOyBvbmNlIGZvciAnbmFtZWQgcHJv
cGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nIGNoZWNrLCBhbmQgdGhlbgogLy8gYWdhaW4gd2hl
biB0aGUgdmFsdWUgaXMgbmVlZGVkLgotdGVtcGxhdGU8TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBv
dmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNzLCBjbGFzcyBGdW5jdG9yPgotc3RhdGljIGF1
dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBGdW5jdG9yJiYgaXRlbUFjY2Vzc29yKSAtPiBkZWNsdHlwZShpdGVtQWNjZXNz
b3IodGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkKK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xhc3MgSXRlbUFjY2Vzc29y
Pgorc3RhdGljIGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJdGVtQWNjZXNzb3ImJiBpdGVtQWNjZXNzb3IpIC0+IGRl
Y2x0eXBlKGl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKQogewogICAgIC8v
IE5PVEU6IFdoaWxlIGl0IGlzIG5vdCBzcGVjaWZpZWQsIGEgU3ltYm9sIGNhbiBuZXZlciBiZSBh
ICdzdXBwb3J0ZWQgcHJvcGVydHkKICAgICAvLyBuYW1lJyBzbyB3ZSBjaGVjayB0aGF0IGZpcnN0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2Uu
aAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTAgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBV
JiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIFUmJik7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgVSYm
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJikgLT4gc3RkOjplbmFibGVf
aWZfdDxJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2VwdGlvbk9yPFU+
LCBKU0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6
OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwg
SlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBh
dXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpU
aHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2VwdGlvbk9yPFU+LCBK
U0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1
dG8gdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRp
b25PcjxVPiwgSlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9N
R2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90
PCFJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZU9yRnVuY3Rvcik7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmIHZhbHVl
T3JGdW5jdG9yKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9i
YWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYgdmFsdWVPckZ1bmN0b3IpOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBib29sIG5lZWRzU3RhdGUgPSBKU0NvbnZlcnRlcjxUPjo6bmVlZHNT
dGF0ZSwgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IEpTQ29udmVydGVyPFQ+OjpuZWVkc0dsb2Jh
bE9iamVjdD4KIHN0cnVjdCBKU0NvbnZlcnRlck92ZXJsb2FkZXI7CkBAIC0xNTgsNTIgKzE1Niw5
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgCiAgICAgcmV0dXJu
IEpTQ29udmVydGVyPFQ+Ojpjb252ZXJ0TmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYg
dmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVl
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlT3JGdW5jdG9yKQogewotICAgIGlmIChVTkxJS0VM
WSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKLSAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKSk7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIHRvSlM8VD4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwotfQorICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19pbnZvY2FibGVfdjxVPikgeworICAgICAgICB1c2luZyBGdW5jdG9y
UmV0dXJuVHlwZSA9IHN0ZDo6aW52b2tlX3Jlc3VsdF90PFU+OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZSkgLT4gc3RkOjpl
bmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPgotewotICAgIHJldHVy
biB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlKSAt
PiBzdGQ6OmVuYWJsZV9pZl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1ZT4KLXsKLSAg
ICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZS5yZWxlYXNl
RXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAg
dmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7
CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9y
PHZvaWQ+LCBGdW5jdG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
dmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVy
biB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9y
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoSXNFeGNlcHRpb25PcjxV
PikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlT3JGdW5jdG9yLmhhc0V4Y2VwdGlv
bigpKSkgeworICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZU9yRnVuY3Rvci5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlT3JGdW5jdG9yLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdG9K
UzxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWVPckZ1bmN0b3Ip
KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUsIFUmJiB2YWx1ZU9yRnVuY3RvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
aW52b2NhYmxlX3Y8VT4pIHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJldHVyblR5cGUgPSBzdGQ6
Omludm9rZV9yZXN1bHRfdDxVPjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAgdmFsdWVPckZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0g
ZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9yPHZvaWQ+LCBGdW5j
dG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVPckZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKSB7
CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1Vu
ZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0b0pTPFQ+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0
b3IoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9y
PFU+KSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWVPckZ1bmN0b3IuaGFzRXhjZXB0
aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9yLnJlbGVhc2VFeGNlcHRpb24oKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2YWx1
ZU9yRnVuY3Rvci5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBz
dGQ6OmZvcndhcmQ8VT4odmFsdWVPckZ1bmN0b3IpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIFUmJiB2YWx1
ZU9yRnVuY3RvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfaW52b2NhYmxlX3Y8VT4p
IHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJldHVyblR5cGUgPSBzdGQ6Omludm9rZV9yZXN1bHRf
dDxVPjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PHZvaWQsIEZ1bmN0
b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAgdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9yPHZvaWQ+LCBGdW5jdG9yUmV0dXJuVHlwZT4p
IHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAg
ICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkPFQ+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0b3Io
KSk7CisKKyAgICB9IGVsc2UgeworICAgICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8
VT4pIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZU9yRnVuY3Rvci5oYXNFeGNlcHRp
b24oKSkpIHsKKyAgICAgICAgICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0b3IucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHZhbHVlT3JGdW5jdG9yLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZU9yRnVuY3RvcikpOwog
ICAgIH0KLQotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYsIFUmJiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25P
cjxVPiwgSlNDOjpKU1ZhbHVlPgotewotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYgdmFsdWUp
IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPgotewot
ICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKLSAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlLnJlbGVh
c2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRvSlNOZXdseUNyZWF0ZWQ8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2
YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2Vw
dGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+Ci17Ci0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQ8
VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFs
dWUpKTsKLX0KLQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdENvbnZlcnRl
ciB7CiAgICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlw
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
RGF0ZS5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydERhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBGSVhNRTogVGhp
cyBzaG91bGQgZ2V0IHBhc3NlZCBhIGdsb2JhbCBvYmplY3QgcmF0aGVyIHRoYW4gZ2V0dGluZyBp
dCBvdXQgb2YgdGhlIEV4ZWNTdGF0ZS4KIEpTVmFsdWUganNEYXRlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIERhdGVJbnN0
YW5jZTo6Y3JlYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgbGV4aWNhbEdsb2JhbE9iamVj
dC5kYXRlU3RydWN0dXJlKCksIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgR2VuZXJpY1NlcXVlbmNlQ29udmVy
dGVyIHsKIC8vIFNwZWNpYWxpemF0aW9uIGZvciBudW1lcmljIHR5cGVzCiAvLyBGSVhNRTogVGhp
cyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciB0aGUgSURMRmxvYXRpbmdQb2ludFR5cGVzIGFuZCBJ
RExMb25nLiBUbyBhZGQKIC8vIHN1cHBvcnQgZm9yIG1vcmUgbnVtZXJpYyB0eXBlcywgYWRkIGFu
IG92ZXJsb2FkIG9mIENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydCB0aGF0Ci0vLyB0YWtlcyBh
biBFeGVjU3RhdGUsIFRocm93U2NvcGUsIGRvdWJsZSBhcyBpdHMgYXJndW1lbnRzLgorLy8gdGFr
ZXMgYSBKU0dsb2JhbE9iamVjdCwgVGhyb3dTY29wZSBhbmQgZG91YmxlIGFzIGl0cyBhcmd1bWVu
dHMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogc3RydWN0IE51bWVyaWNTZXF1ZW5jZUNv
bnZlcnRlciB7CiAgICAgdXNpbmcgR2VuZXJpY0NvbnZlcnRlciA9IEdlbmVyaWNTZXF1ZW5jZUNv
bnZlcnRlcjxJRExUeXBlPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksOSArOTksOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGlu
dm9rZUZ1CiAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKQogICAg
ICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgZnVuY3RvcigpOworICAgIH0gZWxzZQorICAgICAgICBmdW5jdG9yKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjExLDEzICsyMTEsNiBAQCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0
aW9uSWZBbnkoSlNDCiAgICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBw
cm9taXNlKS0+cmVqZWN0PElETEFueT4oZXJyb3IpOwogfQogCi1SZWY8RGVmZXJyZWRQcm9taXNl
PiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NV2luZG93
JiBkb21XaW5kb3cpCi17Ci0gICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKGRv
bVdpbmRvdy52bSgpLCBkb21XaW5kb3cucHJvbWlzZVN0cnVjdHVyZSgpKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChwcm9taXNlKTsKLSAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9t
V2luZG93LCAqcHJvbWlzZSk7Ci19Ci0KIEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0
ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUmVqZWN0ZWRQcm9taXNlV2l0aFR5
cGVFcnJvckNhdXNlIGNhdXNlKQogewogICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IGxleGljYWxH
bG9iYWxPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
NSw5ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotCi1SZWY8RGVmZXJyZWRQcm9taXNl
PiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NV2luZG93
Jik7Ci0KIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
LCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKIHZvaWQgZnVsZmlsbFByb21pc2VX
aXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9pZCosIHNpemVf
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICsz
MTgsNyBAQCBzdWIgQWRkTWFwTGlrZUF0dHJpYnV0ZXNBbmRPcGVyYXRpb25JZk5lCiAgICAgdW5s
ZXNzIChncmVwIHsgJF8tPm5hbWUgZXEgImNsZWFyIiB9IChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0
ZXN9LCBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30p
KSB7CiAgICAgICAgIG15ICRjbGVhck9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CiAg
ICAgICAgICRjbGVhck9wZXJhdGlvbi0+bmFtZSgiY2xlYXIiKTsKLSAgICAgICAgJGNsZWFyT3Bl
cmF0aW9uLT50eXBlKElETFBhcnNlcjo6bWFrZVNpbXBsZVR5cGUoInVuZGVmaW5lZCIpKTsKKyAg
ICAgICAgJGNsZWFyT3BlcmF0aW9uLT50eXBlKElETFBhcnNlcjo6bWFrZVNpbXBsZVR5cGUoImFu
eSIpKTsKICAgICAgICAgSURMUGFyc2VyOjpjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVzKCRjbGVhck9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaW50ZXJmYWNlLT5tYXBMaWtlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMpOwogICAgICAgICAkY2xlYXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e05vdEVudW1lcmFibGV9ID0gMTsKICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPm9wZXJh
dGlvbnN9LCAkY2xlYXJPcGVyYXRpb24pOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHN1YiBBZGRTZXRM
aWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmUKICAgICB1bmxlc3MgKGdyZXAgeyAkXy0+bmFt
ZSBlcSAiY2xlYXIiIH0gKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30sIEB7JGludGVyZmFjZS0+
b3BlcmF0aW9uc30sIEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkpIHsKICAgICAgICAgbXkgJGNs
ZWFyT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKICAgICAgICAgJGNsZWFyT3BlcmF0
aW9uLT5uYW1lKCJjbGVhciIpOwotICAgICAgICAkY2xlYXJPcGVyYXRpb24tPnR5cGUoSURMUGFy
c2VyOjptYWtlU2ltcGxlVHlwZSgidW5kZWZpbmVkIikpOworICAgICAgICAkY2xlYXJPcGVyYXRp
b24tPnR5cGUoSURMUGFyc2VyOjptYWtlU2ltcGxlVHlwZSgiYW55IikpOwogICAgICAgICBJRExQ
YXJzZXI6OmNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJGNsZWFyT3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMsICRpbnRlcmZhY2UtPnNldExpa2UtPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAg
ICAgICRjbGVhck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX0g
PSAxOwogICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30sICRjbGVhck9wZXJh
dGlvbik7CkBAIC04NDQsMzkgKzg0NCwxNCBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlcgogCiBz
dWIgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYQogewotICAgIG15ICgkb3V0cHV0QXJyYXksICRp
bnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1l
LCAkSURMVHlwZSkgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwg
JElETFR5cGUpID0gQF87CiAgICAgCi0gICAgIyBOT1RFOiBOYW1lZCBnZXR0ZXJzIGFyZSBsaXR0
bGUgb2RkLiBUbyBhdm9pZCBkb2luZyBkdXBsaWNhdGUgbG9va3VwcyAob25jZSB3aGVuIGNoZWNr
aW5nIGlmCi0gICAgIyAgICAgICB0aGUgcHJvcGVydHkgbmFtZSBpcyBhICdzdXBwb3J0ZWQgcHJv
cGVydHkgbmFtZScgYW5kIG9uY2UgdG8gZ2V0IHRoZSB2YWx1ZSkgd2Ugc2lnbmFsCi0gICAgIyAg
ICAgICB0aGF0IGEgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGJ5IHdoZXRoZXIgb3Igbm90IGl0IGlz
ICdudWxsJyAod2hlcmUgd2hhdCBudWxsIG1lYW5zIGlzCi0gICAgIyAgICAgICBkZXBlbmRhbnQg
b24gdGhlIElETCB0eXBlKS4gVGhpcyBpcyBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IG5v
IG5hbWVkIGdldHRlciB3aWxsCi0gICAgIyAgICAgICBldmVyIGFjdHVhbGx5IHdhbnQgdG8gcmV0
dXJuIG51bGwgYXMgYW4gYWN0dWFsIHJldHVybiB2YWx1ZSwgd2hpY2ggc2VlbXMgbGlrZSBhbiBv
awotICAgICMgICAgICAgYXNzdW1wdGlvbiB0byBtYWtlIChzaG91bGQgaXQgdHVybiBvdXQgdGhp
cyBkb2Vzbid0IGhvbGQgaW4gdGhlIGZ1dHVyZSwgd2UgaGF2ZSBsb3RzCi0gICAgIyAgICAgICBv
ZiBvcHRpb25zOyBkbyB0d28gbG9va3VwcywgYWRkIGFuIGV4dHJhIGxheWVyIG9mIE9wdGlvbmFs
LCBldGMuKS4KLSAgICAKLSAgICBteSAkcmVzdWx0VHlwZSA9ICJ0eXBlbmFtZSAke0lETFR5cGV9
OjpJbXBsZW1lbnRhdGlvblR5cGUiOwotICAgICRyZXN1bHRUeXBlID0gIkV4Y2VwdGlvbk9yPCIg
LiAkcmVzdWx0VHlwZSAuICI+IiBpZiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKLSAgICBteSAkcmV0dXJuVHlwZSA9ICJPcHRp
b25hbDwiIC4gJHJlc3VsdFR5cGUgLiAiPiI7Ci0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVy
dHlOYW1lKSAtPiAke3JldHVyblR5cGV9IHtcbiIpOwotCiAgICAgbXkgQGFyZ3VtZW50cyA9IEdl
bmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgIldURjo6bnVsbG9wdCIs
ICJ0aGlzT2JqZWN0IiwgIiAgICAgICAgIik7CiAgICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkiKTsKIAotICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS4ke25hbWVk
R2V0dGVyRnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7
Ci0gICAgCi0gICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TWF5VGhyb3dFeGNlcHRpb259KSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSlcbiIpOwotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gJHtyZXN1bHRUeXBlfSB7IHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkgfTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIGlmICghJHtJRExUeXBlfTo6aXNOdWxsVmFsdWUocmVzdWx0LnJldHVyblZhbHVlKCkpKVxu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiAke3Jl
c3VsdFR5cGV9IHsgJHtJRExUeXBlfTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSkgfTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7XG4iKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghJHtJRExUeXBlfTo6aXNOdWxsVmFs
dWUocmVzdWx0KSlcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAg
ICByZXR1cm4gJHtyZXN1bHRUeXBlfSB7ICR7SURMVHlwZX06OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0O1xuIik7Ci0gICAgfQotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rvcjwke0lETFR5
cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOworICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLiR7bmFtZWRH
ZXR0ZXJGdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4iKTsKIH0KIAogIyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWdldG93bnByb3Bl
cnR5CkBAIC04OTAsMTQgKzg2NSwxMSBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgCiAgICAgbXkgJG5hbWVkR2V0dGVyT3BlcmF0aW9u
ID0gR2V0TmFtZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgbXkgJGluZGV4ZWRH
ZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwog
ICAgIAotICAgIGlmICgoJG5hbWVkR2V0dGVyT3BlcmF0aW9uICYmICRuYW1lZEdldHRlck9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259KSB8fCAoJGluZGV4
ZWRHZXR0ZXJPcGVyYXRpb24gJiYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4iKTsKLSAgICB9Ci0gICAgCiAgICAgIyBOT1RFOiBU
aGUgYWxvZ2l0aG0gZm9yIFtbR2V0T3duUHJvcGVydHldXSBjb250YWlucyBvbmx5IHRoZSBmb2xs
b3dpbmcgc3RlcDoKICAgICAjIDEuIFJldHVybiBMZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blBy
b3BlcnR5KE8sIFAsIGZhbHNlKS4KICAgICAKQEAgLTkxOCw3ICs4OTAsNyBAQCBzdWIgR2VuZXJh
dGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgbXkgKCRuYXRpdmVUb0pTQ29udmVyc2lvbiwg
JGF0dHJpYnV0ZVN0cmluZykgPSBHZW5lcmF0ZUluZGV4ZWRHZXR0ZXIoJGludGVyZmFjZSwgJGlu
ZGV4ZWRHZXR0ZXJPcGVyYXRpb24sICJpbmRleC52YWx1ZSgpIik7CiAgICAgICAgIAogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBhdXRvIHZhbHVlID0gJHtuYXRpdmVU
b0pTQ29udmVyc2lvbn07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKSBpZiAkaW5k
ZXhlZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRp
b259OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOwogICAgICAgICAKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCAk
e2F0dHJpYnV0ZVN0cmluZ30sIHZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwpAQCAtOTQ2LDcgKzkxOCw3IEBAIHN1
YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdAogICAgICAgICAKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSAke0lETFR5cGV9O1xuIik7CiAg
ICAgICAgIAotICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKCRvdXRwdXRBcnJheSwg
JGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5h
bWUsICJHZXR0ZXJJRExUeXBlIik7CisgICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEo
JG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFtZWRHZXR0ZXJPcGVyYXRp
b24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5cGUiKTsKICAgICAgICAg
CiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpID8g
IkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OlllcyIgOiAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Tm8iOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PCR7b3ZlcnJpZGVCdWlsdGlufT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7XG4iKTsKQEAgLTk1Niw3ICs5MjgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3QKICAgICAgICAgbXkgKCRuYXRpdmVUb0pTQ29udmVyc2lvbiwgJGF0dHJpYnV0ZVN0cmlu
ZykgPSBHZW5lcmF0ZU5hbWVkR2V0dGVyKCRpbnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlv
biwgIldURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSIpOwogICAgICAgICAKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHZhbHVlID0gJHtuYXRpdmVUb0pTQ29u
dmVyc2lvbn07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpIGlmICRuYW1lZEdldHRlck9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpO1xuIik7CiAgICAgICAgIAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJpbmd9LCB2
YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOwpAQCAtMTAwMCwxNiArOTcyLDEzIEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xh
c3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgIGlm
ICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UGx1Z2lufSB8fCAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gJiYgJGluZGV4ZWRHZXR0ZXJP
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkpIHsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICB9CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKKwogICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NO
YW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7Ci0gICAgCi0gICAg
aWYgKCgkbmFtZWRHZXR0ZXJPcGVyYXRpb24gJiYgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0pIHx8ICgkaW5kZXhlZEdldHRlck9w
ZXJhdGlvbiAmJiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWF5VGhyb3dFeGNlcHRpb259KSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICB9Ci0g
ICAgCisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKwogICAgICMgTk9URTogVGhlIGFsb2dpdGhtIGZv
ciBbW0dldE93blByb3BlcnR5XV0gY29udGFpbnMgb25seSB0aGUgZm9sbG93aW5nIHN0ZXA6CiAg
ICAgIyAxLiBSZXR1cm4gTGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wZXJ0eShPLCBQLCBm
YWxzZSkuCiAgICAgCkBAIC0xMDMwLDcgKzk5OSw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgKICAgICAgICAgbXkgKCRuYXRpdmVUb0pTQ29udmVyc2lvbiwgJGF0dHJp
YnV0ZVN0cmluZykgPSBHZW5lcmF0ZUluZGV4ZWRHZXR0ZXIoJGludGVyZmFjZSwgJGluZGV4ZWRH
ZXR0ZXJPcGVyYXRpb24sICJpbmRleCIpOwogICAgICAgICAKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAgICAgYXV0byB2YWx1ZSA9ICR7bmF0aXZlVG9KU0NvbnZlcnNpb259
O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIikgaWYgJGluZGV4ZWRHZXR0ZXJPcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJp
bmd9LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAg
ICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTEwNjAsNyArMTAyOSw3IEBAIHN1YiBHZW5lcmF0ZUdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gJHtJRExUeXBlfTtcbiIpOwogICAgICAg
ICAKLSAgICAgICAgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYSgkb3V0cHV0QXJyYXksICRpbnRl
cmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAi
R2V0dGVySURMVHlwZSIpOworICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKCRvdXRw
dXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAk
bmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAgICAgIAogICAg
ICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5k
ZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSA/ICJMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vIjsK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
e1xuIik7CkBAIC0xMDcwLDcgKzEwMzksNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4CiAgICAgICAgIG15ICgkbmF0aXZlVG9KU0NvbnZlcnNpb24sICRhdHRyaWJ1dGVT
dHJpbmcpID0gR2VuZXJhdGVOYW1lZEdldHRlcigkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJPcGVy
YXRpb24sICJXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkiKTsKIAogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gdmFsdWUgPSAke25hdGl2ZVRvSlNDb252ZXJz
aW9ufTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIikgaWYgJG5hbWVkR2V0dGVyT3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCAke2F0dHJpYnV0ZVN0cmluZ30sIHZhbHVl
KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0cnVl
O1xuIik7CkBAIC01MjI1LDkgKzUxOTQsOCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJC
b2R5RGVmaW5pdGlvCiAgICAgbXkgJGhhc0N1c3RvbUdldHRlciA9IEhhc0N1c3RvbUdldHRlcigk
YXR0cmlidXRlKTsKICAgICBteSAkaXNFdmVudEhhbmRsZXIgPSAkYXR0cmlidXRlLT50eXBlLT5u
YW1lIGVxICJFdmVudEhhbmRsZXIiOwogICAgIG15ICRpc0NvbnN0cnVjdG9yID0gJGNvZGVHZW5l
cmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwotICAgIG15ICRuYXRp
dmVUb0pTVmFsdWVNYXlUaHJvdyA9IE5hdGl2ZVRvSlNWYWx1ZU1heVRocm93KCRhdHRyaWJ1dGUp
OwogCi0gICAgbXkgJG5lZWRUaHJvd1Njb3BlID0gJG5lZWRTZWN1cml0eUNoZWNrIHx8ICghJGhh
c0N1c3RvbUdldHRlciAmJiAhJGlzRXZlbnRIYW5kbGVyICYmICEkaXNDb25zdHJ1Y3RvciAmJiAk
bmF0aXZlVG9KU1ZhbHVlTWF5VGhyb3cpOworICAgIG15ICRuZWVkVGhyb3dTY29wZSA9ICRuZWVk
U2VjdXJpdHlDaGVjayB8fCAoISRoYXNDdXN0b21HZXR0ZXIgJiYgISRpc0V2ZW50SGFuZGxlciAm
JiAhJGlzQ29uc3RydWN0b3IpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlu
bGluZSBKU1ZhbHVlICR7YXR0cmlidXRlR2V0dGVyQm9keU5hbWV9KCIgLiBqb2luKCIsICIsIEBz
aWduYXR1cmVBcmd1bWVudHMpIC4gIilcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOwpAQCAtNTc5MCw3ICs1NzU4LDYgQEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uRGVmaW5pdGlv
bgogICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOwogICAgICAgICB9CiAgICAg
ICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkaW1wbEZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAi
LCBAYXJndW1lbnRzKSAuICIpIjsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0
ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3Ry
aW5nKSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJG9wZXJhdGlvbik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2Us
ICRmdW5jdGlvblN0cmluZywgIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSIpIC4gIik7XG4i
KTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIApAQCAtNjA4NSwxNSAr
NjA1Miw2IEBAIHN1YiBXaWxsQ29udmVydFVuZGVmaW5lZFRvRGVmYXVsdFBhcmFtZXQKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3ViIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsCi17
Ci0gICAgbXkgKCRvcGVyYXRpb24pID0gQF87Ci0KLSAgICByZXR1cm4gMCB1bmxlc3MgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OwotCi0gICAgcmV0
dXJuICRvcGVyYXRpb24tPnR5cGUgJiYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInVuZGVm
aW5lZCIgfHwgJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJG9wZXJhdGlvbi0+dHlwZSkg
fHwgR2V0T3BlcmF0aW9uUmV0dXJuZWRBcmd1bWVudE5hbWUoJG9wZXJhdGlvbikpOwotfQotCiBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkb3Bl
cmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRpbmRlbnQp
ID0gQF87CkBAIC02MjE1LDEwICs2MTczLDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAKICAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZNb3ZlKHByb21pc2UpIikgaWYgJG9wZXJhdGlv
bi0+dHlwZSAmJiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBl
KSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fTsKIAot
ICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBh
cmd1bWVudHMpIC4gIikiOwotICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRp
b24oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlm
IE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRvcGVyYXRpb24pOwotCi0gICAg
cmV0dXJuICRmdW5jdGlvblN0cmluZzsKKyAgICByZXR1cm4gIiRmdW5jdGlvbk5hbWUoIiAuIGpv
aW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CiB9CiAKIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlI
ZWFkZXIKQEAgLTY2NjYsMTUgKzY2MjEsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1
bmN0aW9uQ2FsbAogICAgIG15ICRoYXNXcml0ZUJhcnJpZXJzRm9yQXJndW1lbnRzID0gR2VuZXJh
dGVXcml0ZUJhcnJpZXJzRm9yQXJndW1lbnRzKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGlu
ZGVudCwgJGRyeVJ1bik7CiAgICAgbXkgJHJldHVybkFyZ3VtZW50TmFtZSA9IEdldE9wZXJhdGlv
blJldHVybmVkQXJndW1lbnROYW1lKCRvcGVyYXRpb24pOwogICAgIGlmICgkcmV0dXJuQXJndW1l
bnROYW1lKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJ0aHJvd1Nj
b3BlLnJlbGVhc2UoKTtcbiIpIGlmICgkaGFzVGhyb3dTY29wZSk7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgJGluZGVudCAuICIkZnVuY3Rpb25TdHJpbmc7XG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gImludm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2Vw
dGlvbklmTmVjZXNzYXJ5KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gJGZ1bmN0aW9uU3RyaW5nOyB9KTtcbiIpOwogICAgICAgICBHZW5lcmF0ZVdyaXRlQmFy
cmllcnNGb3JBcmd1bWVudHMoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW5kZW50KTsKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoJHJldHVybkFyZ3VtZW50TmFtZS52YWx1ZSgpKTtcbiIpOwotICAgIH0gZWxzaWYgKCRvcGVy
YXRpb24tPnR5cGUtPm5hbWUgZXEgInVuZGVmaW5lZCIgfHwgKCRjb2RlR2VuZXJhdG9yLT5Jc1By
b21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpICYmICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQcm9taXNlUHJveHl9KSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRp
bmRlbnQgLiAidGhyb3dTY29wZS5yZWxlYXNlKCk7XG4iKSBpZiAoJGhhc1Rocm93U2NvcGUpOwot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xu
Iik7Ci0gICAgICAgIEdlbmVyYXRlV3JpdGVCYXJyaWVyc0ZvckFyZ3VtZW50cygkb3V0cHV0QXJy
YXksICRvcGVyYXRpb24sICRpbmRlbnQpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRp
bmRlbnQgLiAicmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIG15ICRnbG9iYWxPYmplY3RSZWZlcmVuY2UgPSAkb3BlcmF0aW9u
LT5pc1N0YXRpYyA/ICIqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9i
amVjdCkiIDogIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSI7CiAgICAgICAgIGlmICgkaGFz
V3JpdGVCYXJyaWVyc0ZvckFyZ3VtZW50cykgewpAQCAtNjY4MiwxMCArNjYzMSw4IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsCiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRpbmRlbnQgLiAiUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRoYXNUaHJvd1Njb3BlOwogICAgICAgICAgICAgR2VuZXJh
dGVXcml0ZUJhcnJpZXJzRm9yQXJndW1lbnRzKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGlu
ZGVudCk7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAicmV0dXJu
IHJlc3VsdDtcbiIpOwotICAgICAgICB9IGVsc2lmICgkaGFzVGhyb3dTY29wZSkgewotICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIlJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRl
cnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0
UmVmZXJlbmNlKSAuICIpKTtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5h
dGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0
aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKSAuICIpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSgiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygk
b3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICRnbG9iYWxPYmplY3RSZWZl
cmVuY2UpIC4gIikpO1xuIik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03MTk1LDcgKzcxNDIs
NyBAQCBzdWIgSXNWYWxpZENvbnRleHRGb3JOYXRpdmVUb0pTVmFsdWUKIHN1YiBOYXRpdmVUb0pT
VmFsdWVNYXlUaHJvdwogewogICAgIG15ICgkY29udGV4dCkgPSBAXzsKLSAgICBteSAkbWF5VGhy
b3dFeGNlcHRpb24gPSByZWYoJGNvbnRleHQpIGVxICJJRExBdHRyaWJ1dGUiIHx8ICRjb250ZXh0
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgbXkgJG1heVRo
cm93RXhjZXB0aW9uID0gcmVmKCRjb250ZXh0KSBlcSAiSURMQXR0cmlidXRlIiB8fCByZWYoJGNv
bnRleHQpIGVxICJJRExPcGVyYXRpb24iOwogfQogCiBzdWIgTmF0aXZlVG9KU1ZhbHVlCkBAIC03
MjI1LDEyICs3MTcyLDE5IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgIG15ICRJRExUeXBl
ID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAKKyAgICAjIEZJWE1FOiBOb3QgYWxs
IHByb21pc2UgdHlwZXMgcmVxdWlyZSB0aGUgZnVuY3RvciB3cmFwcGluZyAoc29tZSBhdHRyaWJ1
dGUgZ2V0dGVycyBhY3R1YWxseSByZXR1cm4gYSB2YWx1ZSkKKyAgICAjIGJ1dCB3cmFwcGluZyBp
cyBhIG5vLW9wLCBzbyBmaXhpbmcgdGhpcyB3b3VsZCBwdXJlbHkgYmUgYSBzdHlsaXN0aWMgLyBj
b21waWxlIHRpbWUgZml4LgorICAgIG15ICRuZWVkc0Z1bmN0b3JXcmFwcGluZyA9ICR0eXBlLT5u
YW1lIGVxICJ1bmRlZmluZWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCR0eXBl
KTsKKwogICAgIG15IEBjb252ZXJzaW9uQXJndW1lbnRzID0gKCk7CiAgICAgcHVzaChAY29udmVy
c2lvbkFyZ3VtZW50cywgJGxleGljYWxHbG9iYWxPYmplY3RSZWZlcmVuY2UpIGlmIE5hdGl2ZVRv
SlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlKCR0eXBlKSB8fCAkbWF5VGhyb3dFeGNlcHRpb247
CiAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkg
aWYgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0KCR0eXBlKTsKICAg
ICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAidGhyb3dTY29wZSIpIGlmICRtYXlUaHJvd0V4
Y2VwdGlvbjsKLSAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAkdmFsdWUpOwotCisgICAg
aWYgKCRuZWVkc0Z1bmN0b3JXcmFwcGluZykgeworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJn
dW1lbnRzLCAiWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gJHZhbHVlOyB9Iik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1ZSIp
OworICAgIH0KICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e05ld09iamVjdH0gPyAidG9KU05ld2x5Q3JlYXRlZCIgOiAidG9KUyI7CiAKICAgICBy
ZXR1cm4gIiR7ZnVuY3Rpb25OYW1lfTwke0lETFR5cGV9PigiIC4gam9pbigiLCAiLCBAY29udmVy
c2lvbkFyZ3VtZW50cykgLiAiKSI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjc0NzI4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcg
Y29weSkKQEAgLTM4MCw5ICszODAsNiBAQAogICAgICAgICAiTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAg
ICAgIH0sCi0gICAgICAgICJNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKLSAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAogICAg
ICAgICAiTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzIjogewogICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFj
ZS5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIFRlc3RJbnRlcmZhY2UgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoRE9NU3RyaW5nIHN0cjEsIG9w
dGlvbmFsIERPTVN0cmluZyBzdHIyID0gImRlZmF1bHRTdHJpbmciKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoRE9NU3RyaW5nIHN0cjEsIG9wdGlv
bmFsIERPTVN0cmluZyBzdHIyID0gImRlZmF1bHRTdHJpbmciKTsKIAogICAgIGl0ZXJhYmxlPFRl
c3ROb2RlLCBUZXN0T2JqPjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDYgQEAKICAgICBzdGF0aWMgYXR0cmlidXRlIERPTVN0cmluZyBzdGF0
aWNTdHJpbmdBdHRyaWJ1dGU7CiAKICAgICB1bmRlZmluZWQgdm9pZE9wZXJhdGlvbigpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVz
dE9iaiB0aHJvd2luZ09wZXJhdGlvbihET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7
CiAgICAgW0N1c3RvbV0gdW5kZWZpbmVkIGN1c3RvbU9wZXJhdGlvbigpOwogICAgIHN0YXRpYyB1
bmRlZmluZWQgc3RhdGljT3BlcmF0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0TWl4aW5JbnRlcmZhY2UuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TWl4aW5JbnRlcmZhY2UuaWRs
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QAogICAgIGF0dHJpYnV0ZSBOb2RlIG1peGluTm9kZUF0dHJpYnV0ZTsKIAogICAgIHVuZGVmaW5l
ZCBtaXhpbk9wZXJhdGlvbigpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtaXhpbkNvbXBsZXhPcGVyYXRpb24oRE9NU3Ry
aW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBUZXN0T2JqIG1peGluQ29tcGxleE9wZXJhdGlvbihET01TdHJpbmcgc3RyQXJn
LCBUZXN0T2JqIG9iakFyZyk7CiAgICAgW0N1c3RvbV0gdW5kZWZpbmVkIG1peGluQ3VzdG9tT3Bl
cmF0aW9uKCk7CiAgICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjExXSB1bmRlZmluZWQgbWl4aW5D
b25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0aW5n
XSB1bmRlZmluZWQgbWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShy
ZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNiBAQCBlbnVtIFRlc3RD
b25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhT
dGFuZGFsb25lRW51bUFyZyhUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uIGVudW1BcmcpOwogICAg
IHVuZGVmaW5lZCBtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKG9wdGlvbmFsIFRlc3RFbnVtVHlw
ZSBlbnVtQXJnKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERl
ZmF1bHRWYWx1ZShvcHRpb25hbCBUZXN0RW51bVR5cGUgZW51bUFyZyA9ICJFbnVtVmFsdWUxIik7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3MoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogCiAgICAgdW5k
ZWZpbmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nIHN0cik7CiAgICAgdW5kZWZp
bmVkIG1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhVU1ZTdHJpbmc/IHN0cik7CkBAIC0x
NjksMTEgKzE2OCw2IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cK
IAogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoUmVjb3JkKHJlY29yZDxET01TdHJpbmcsIGxvbmc+
IHJlY29yZFBhcmFtZXRlcik7CiAKLSAgICAvLyBFeGNlcHRpb25zCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgbWV0aG9kV2l0aEV4Y2VwdGlvbigpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gbG9uZyBtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZygpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2Jq
ZWN0KCk7Ci0KICAgICAvLyAnQ3VzdG9tJyBleHRlbmRlZCBhdHRyaWJ1dGUKICAgICBbQ3VzdG9t
XSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIGN1c3RvbUF0dHI7CiAgICAgW0N1c3RvbV0gdW5k
ZWZpbmVkIGN1c3RvbU1ldGhvZCgpOwpAQCAtMTk3LDExICsxOTEsOCBAQCBlbnVtIFRlc3RDb25m
aWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgLy8gJ0NhbGxXaXRoJyBleHRlbmRlZCBh
dHRyaWJ1dGUKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgd2l0aEV4ZWNT
dGF0ZVZvaWQoKTsKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBUZXN0T2JqIHdpdGhFeGVj
U3RhdGVPYmooKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHdpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKCk7Ci0gICAgW0NhbGxXaXRo
PUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogd2l0aEV4ZWNTdGF0ZU9i
akV4Y2VwdGlvbigpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB1bmRl
ZmluZWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCZFeGVjU3RhdGVdIHVuZGVmaW5lZCB3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZSgpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0JkV4ZWNTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24oKTsKICAgICBbQ2FsbFdpdGg9ICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0ICAmICBFeGVjU3RhdGUgIF0gVGVzdE9iaiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoKTsKICAgICBbQ2FsbFdpdGg9
RG9jdW1lbnRdIHVuZGVmaW5lZCB3aXRoRG9jdW1lbnRBcmd1bWVudCgpOwogICAgIFtDYWxsV2l0
aD1JbmN1bWJlbnREb2N1bWVudF0gdW5kZWZpbmVkIHdpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50
KCk7CkBAIC0zNDIsOCArMzMzLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtp
bmRhLWxvdwogICAgIHVuZGVmaW5lZCBjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlv
bmFsKG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgb2JqQXJnc0xvbmcgPSAwKTsKIAogICAg
IHVuZGVmaW5lZCBtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2Uoc2VxdWVuY2U8dW5zaWdu
ZWQgbG9uZz4gdW5zaWduZWRMb25nU2VxdWVuY2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
c2VxdWVuY2U8RE9NU3RyaW5nPiBzdHJpbmdBcnJheUZ1bmN0aW9uKHNlcXVlbmNlPERPTVN0cmlu
Zz4gdmFsdWVzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZ0xpc3QgZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uKERPTVN0cmluZ0xpc3QgdmFsdWVzKTsKKyAgICBzZXF1ZW5jZTxET01T
dHJpbmc+IHN0cmluZ0FycmF5RnVuY3Rpb24oc2VxdWVuY2U8RE9NU3RyaW5nPiB2YWx1ZXMpOwor
ICAgIERPTVN0cmluZ0xpc3QgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKERPTVN0cmluZ0xpc3QgdmFs
dWVzKTsKIAogICAgIHVuZGVmaW5lZCBvcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRl
cihvcHRpb25hbCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPHVucmVzdHJpY3RlZCBkb3VibGU+KSBv
cHRpb25hbFVuaW9uKTsKIApAQCAtMzUyLDcgKzM0Myw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2Ug
eyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWly
ZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOwogCiAgICAgW0NoZWNr
U2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3Vt
ZW50OwotICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3Vt
ZW50IGdldFNWR0RvY3VtZW50KCk7CisgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSBEb2N1bWVu
dCBnZXRTVkdEb2N1bWVudCgpOwogCiAgICAgdW5kZWZpbmVkIGNvbnZlcnQxKFRlc3ROb2RlIHZh
bHVlKTsKICAgICB1bmRlZmluZWQgY29udmVydDIoVGVzdE5vZGU/IHZhbHVlKTsKQEAgLTQxMywx
MiArNDA0LDEwIEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAg
ICAvLyBQcm9taXNlIGZ1bmN0aW9uCiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHRlc3RQcm9taXNl
RnVuY3Rpb24oKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gdGVzdFByb21pc2VGdW5jdGlvbldp
dGhGbG9hdEFyZ3VtZW50KGZsb2F0IGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlz
ZTx1bmRlZmluZWQ+IHRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKCk7CiAgICAgUHJv
bWlzZTx1bmRlZmluZWQ+IHRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVu
dChvcHRpb25hbCBsb25nIGEpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiB0ZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbihmbG9hdCBhKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gdGVzdFBy
b21pc2VPdmVybG9hZGVkRnVuY3Rpb24oRmV0Y2hSZXF1ZXN0IHJlcXVlc3QpOwogICAgIHN0YXRp
YyBQcm9taXNlPHVuZGVmaW5lZD4gdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbigpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8dW5kZWZpbmVkPiB0ZXN0U3RhdGljUHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbigpOwogICAgIFtDdXN0b21dIFByb21pc2U8dW5kZWZp
bmVkPiB0ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKCk7CiAgICAgW0N1c3RvbV0gc3RhdGljIFBy
b21pc2U8dW5kZWZpbmVkPiB0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKCk7CiAgICAg
W0N1c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8dW5kZWZpbmVkPiB0ZXN0Q3VzdG9t
UmV0dXJuc093blByb21pc2VGdW5jdGlvbigpOwpAQCAtNDQzLDcgKzQzMiw2IEBAIGVudW0gVGVz
dENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB1bmRlZmluZWQgYnVmZmVyU291
cmNlUGFyYW1ldGVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKIAogICAgIE5vZGUgdGVzdFJldHVyblZh
bHVlT3B0aW1pemF0aW9uKFtSZXR1cm5WYWx1ZV0gTm9kZSBhLCBOb2RlIGIpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gTm9kZSB0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0
aW9uKFtSZXR1cm5WYWx1ZV0gTm9kZSBhLCBOb2RlIGIpOwogCiAgICAgW0V4cG9zZWQ9V2luZG93
XSBhdHRyaWJ1dGUgbG9uZyBjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlOwog
ICAgIFtFeHBvc2VkPVdvcmtlcl0gYXR0cmlidXRlIGxvbmcgY29uZGl0aW9uYWxseUV4cG9zZWRU
b1dvcmtlckF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVu
dGFsLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIFtSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RBdHRyaWJ1dGU7CiAKICAgICB1bmRlZmluZWQgc3Vw
cGxlbWVudGFsTWV0aG9kMSgpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBzdXBwbGVtZW50YWxNZXRob2QyKERPTVN0cmlu
ZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gVGVzdE9iaiBzdXBwbGVtZW50YWxNZXRob2QyKERPTVN0cmluZyBzdHJBcmcsIFRl
c3RPYmogb2JqQXJnKTsKICAgICBbQ3VzdG9tXSB1bmRlZmluZWQgc3VwcGxlbWVudGFsTWV0aG9k
MygpOwogICAgIHN0YXRpYyB1bmRlZmluZWQgc3VwcGxlbWVudGFsTWV0aG9kNCgpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5
cGVkZWZzLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYzLDE0ICs2
MywxMSBAQAogCiAgICAgU1ZHUE9JTlQgcG9pbnRGdW5jdGlvbigpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTRVFVRU5DRV9PRl9TVFJJTkdTIHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24oU0VR
VUVOQ0VfT0ZfU1RSSU5HUyB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVu
Y2U8U1RSSU5HPiBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihzZXF1ZW5jZTxTVFJJTkc+IHZhbHVl
cyk7CisgICAgU0VRVUVOQ0VfT0ZfU1RSSU5HUyBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKFNFUVVF
TkNFX09GX1NUUklOR1MgdmFsdWVzKTsKKyAgICBzZXF1ZW5jZTxTVFJJTkc+IHN0cmluZ1NlcXVl
bmNlRnVuY3Rpb24yKHNlcXVlbmNlPFNUUklORz4gdmFsdWVzKTsKIAogICAgIGJvb2xlYW4gY2Fs
bFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoc2VxdWVuY2U8VGVzdEV2ZW50VGFyZ2V0
PiBzZXF1ZW5jZUFyZyk7CiAKLSAgICAvLyBFeGNlcHRpb25zCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgbWV0aG9kV2l0aEV4Y2VwdGlvbigpOwotCiAgICAgLy8gQnVpbHRpbiBU
eXBlZGVmcwogICAgIGF0dHJpYnV0ZSBCdWZmZXJTb3VyY2UgYnVmZmVyU291cmNlQXR0cjsKICAg
ICBhdHRyaWJ1dGUgRE9NVGltZVN0YW1wIGRvbVRpbWVTdGFtcEF0dHI7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNFeHBvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERpY3Rpb25hcnk8RXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93OjpEaWN0Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5kb1NvbWV0aGluZygpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExEaWN0aW9uYXJ5PEV4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdzo6RGljdD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZG9Tb21ldGhpbmcoKSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBl
RnVuY3Rpb25fZG9Tb21ldGhpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3Bw
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKCpsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwubWV0aG9kV2l0aENFUmVhY3Rpb25zKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RX
aXRoQ0VSZWFjdGlvbnMoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aENFUmVhY3Rpb25zLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTQyOCw5ICs0MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uRGlzYWxsb3dlZFNjb3BlIGN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29w
ZTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQoKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW1wbC52YWx1ZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnZhbHVlKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25fdG9T
dHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsOSArMzUxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXIoKSkpCiAgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25JbnRlcmZhY2UiX3MpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwudGVzdE9wZXJhdGlvbkludGVyZmFjZSgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwudGVzdE9wZXJhdGlvbkludGVyZmFjZSgpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRp
b25JbnRlcmZhY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtMzcwLDkgKzM2OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RPcGVyYXRpb25DYWxsVHJh
Y2VyKCkpKQogICAgICAgICBUZXN0T3BlcmF0aW9uQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGlt
cGwsICJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVkIl9zKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRl
c3RPcGVyYXRpb25TcGVjaWZpZWQoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9uU3BlY2lm
aWVkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTQwMCw5ICszOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFj
dGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCBhKSwgVGVzdEludGVyZmFjZUNhbGxU
cmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCBiKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnByb2Nlc3NBcmd1bWVudChpbXBsLCBjKSB9KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUo
YiksIFdURk1vdmUoYykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhBcmd1bWVu
dHMoV1RGTW92ZShhKSwgV1RGTW92ZShiKSwgV1RGTW92ZShjKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVz
dE9wZXJhdGlvbldpdGhBcmd1bWVudHMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNDI0LDkgKzQxOCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhh
c0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxl
QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChp
bXBsLCBub2RlTnVsbGFibGVBcmcpIH0pOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KFdURk1vdmUobm9kZU51bGxh
YmxlQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1l
bnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9u
V2l0aE51bGxhYmxlQXJndW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNDQ4LDkgKzQ0MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0Fj
dGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1
bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGws
IHZhcmlhbnRBcmcpIH0pOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVz
dE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50QXJnKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlh
bnRBcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENhbGxU
cmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC00NzIsOSArNDYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxU
cmFjZXIoKSkpCiAgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24o
aW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVz
dEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50TnVsbGFi
bGVBcmcpIH0pOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdE9wZXJh
dGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnROdWxsYWJsZUFy
ZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1
bWVudChXVEZNb3ZlKHZhcmlhbnROdWxsYWJsZUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVy
YXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNDk0LDkgKzQ4Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VM
WShpbXBsLmhhc0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0
aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpw
cm9jZXNzQXJndW1lbnQoaW1wbCwgdmFyaWFudE9wdGlvbmFsQXJnKSB9KTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50
QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50T3B0aW9uYWxBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRl
c3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50T3B0
aW9uYWxBcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENh
bGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFu
dEFyZ3VtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTUxNiw5ICs1MDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50
ZXJmYWNlQ2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJl
Y29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50
Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgdmFy
aWFudERlZmF1bHRBcmcpIH0pOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
dGVzdE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERl
ZmF1bHRBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlh
bnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVz
dE9wZXJhdGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU0LDkgKzY1NCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1p
eGluT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5taXhpbk9wZXJhdGlvbigpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZUZ1bmN0aW9uX21peGluT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcyMCw5ICs3MTgsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW1wbC5taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5taXhp
bkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5Db25k
aXRpb25hbE9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03NDAsOSArNzM2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWl4aW5T
ZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5taXhpblNldHRp
bmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9taXhpblNl
dHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzYxLDcgKzc1NSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gaW1wbFJlc3VsdCA9IGltcGwubWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1
ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGltcGxSZXN1bHQubm9kZXMpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1
ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKGltcGxSZXN1bHQubm9kZXMp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uX21peGluUmVzdWx0RmllbGRPcGVyYXRpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
Nzc5LDkgKzc3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFs
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC5wYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCgpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uX3BhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJ
KHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbGwK
ICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5ydW50aW1lQ29uZGl0aW9u
YWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZVByb21pc2UoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVBdHRyaWJ1dGVQcm9taXNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTU3OSw3ICs1Nzks
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxsCiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TFByb21pc2U8SURMRG91YmxlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdy
aXRlQXR0cmlidXRlUHJvbWlzZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExQcm9taXNlPElETERvdWJsZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLnNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0
ZVByb21pc2UoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlUHJvbWlzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAko
cmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTIsNyArMTA5Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51
bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2dldEF0dHJpYnV0ZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oanNUZXN0RE9N
SklUUHJvCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252
ZXJ0KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBlbmNvZGVkTmFtZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25faXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC0xMTMxLDcgKzEx
MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMSk7CiAgICAgYXV0byB5ID0gY29udmVydDxJRExVbnNpZ25lZFNob3J0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGltcGwuaXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pdGVtKFdURk1vdmUo
eCksIFdURk1vdmUoeSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25faXRlbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xMTU0LDcgKzExNTQsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04oanNUZXN0RE9NSklUUHJvCiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHkgPSBET01K
SVQ6OkRpcmVjdENvbnZlcnRlcjxJRExVbnNpZ25lZFNob3J0Pjo6ZGlyZWN0Q29udmVydCgqbGV4
aWNhbEdsb2JhbE9iamVjdCwgZW5jb2RlZFkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuaXRlbShXVEZNb3Zl
KHgpLCBXVEZNb3ZlKHkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLml0ZW0oV1RG
TW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2hhc0F0dHJpYnV0ZUJvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCkBAIC0xMTY0LDcgKzExNjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmhhc0F0dHJpYnV0ZSgpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25faGFzQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTExODMsNyArMTE4Myw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihqc1Rlc3RET01KSVRQcm8KICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5oYXNBdHRyaWJ1dGUoKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25fZ2V0RWxlbWVu
dEJ5SWRCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gZWxlbWVudElkID0gY29udmVydDxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQp
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdU
Rk1vdmUoZWxlbWVudElkKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9nZXRFbGVtZW50QnlJZCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xMjE5LDcg
KzEyMTksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oanNUZXN0RE9NSklUUHJvCiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGVsZW1lbnRJZCA9
IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRh
cHRvcjxJRExET01TdHJpbmc+Pjo6ZGlyZWN0Q29udmVydCgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
ZW5jb2RlZEVsZW1lbnRJZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50
ZXJmYWNlPEVsZW1lbnQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
X2dldEVsZW1lbnRzQnlOYW1lQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTEyMzQsNyArMTIz
NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIGVsZW1lbnROYW1lID0gY29udmVydDxJRExBdG9tU3RyaW5nQWRhcHRv
cjxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50
TmFtZSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRz
QnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2dldEVsZW1lbnRzQnlOYW1lLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTEyNTUsNyArMTI1NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihqc1Rlc3RE
T01KSVRQcm8KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gZWxlbWVudE5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExBdG9tU3RyaW5nQWRh
cHRvcjxJRExET01TdHJpbmc+Pjo6ZGlyZWN0Q29udmVydCgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
ZW5jb2RlZEVsZW1lbnROYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZUxpc3Q+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUp
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxp
c3Q+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSkp
OwogfQogCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RET01KSVQ6OnN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkocmV2aXNp
b24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERvbWFpblNlY3VyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDkgKzIzNCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIG5leHRDaGlsZCA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm5leHRDaGlsZCIs
ICJUZXN0RG9tYWluU2VjdXJpdHkiLCAiZXhjaXRpbmdGdW5jdGlvbiIsICJOb2RlIik7IH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5leGNpdGluZ0Z1bmN0aW9uKCpuZXh0
Q2hpbGQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdERvbWFpblNlY3VyaXR5UHJv
dG90eXBlRnVuY3Rpb25fZXhjaXRpbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNTYsOSArMjU0LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgIGF1dG8gbWVzc2FnZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC5wb3N0TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnBvc3RN
ZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVGdW5jdGlvbl9wb3N0TWVzc2FnZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC0yNzcsOSArMjczLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gcGFyYW0gPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKHBhcmFt
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUocGFyYW0pKTsgfSkp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERvbWFpblNl
Y3VyaXR5UHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDJCb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3REb21haW5TZWN1cml0eT46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCkBAIC0yOTUsOSArMjg5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gcGFyYW0yID0gY29u
dmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAxLCAicGFyYW0yIiwgIlRlc3REb21haW5TZWN1cml0eSIsICJvdmVy
bG9hZGVkTWV0aG9kIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKnBhcmFtMSwgKnBhcmFtMik7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5vdmVybG9hZGVkTWV0aG9kKCpwYXJhbTEsICpwYXJhbTIpOyB9KSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVG
dW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3REb21haW5TZWN1cml0eT46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCShy
ZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Myw5ICs0
NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwuZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJh
bSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihXVEZNb3ZlKHRl
c3RQYXJhbSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uX2VuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMjMgKzE1NywyMyBAQCBib29sIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgaWYg
KGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGlu
ZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgp
Lml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52
YWx1ZSgpKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJm
YWNlPE5vZGU+OwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0
LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53
cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAg
ICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlw
ZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0
b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlw
ZSwgSlNUZXN0RXZlbnRUYXJnZXQ+KFtdIChKU1Rlc3RFdmVudFRhcmdldCYgdGhpc09iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICBy
ZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0xODUsOSArMTg1LDExIEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93
blByb3BlcnR5U2wKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmpl
Y3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAo
TElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7
CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTE5NSwxNCArMTk3LDEyIEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blBy
b3BlcnR5U2wKICAgICB9CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVyZmFjZTxOb2Rl
PjsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBw
cm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAg
ICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAg
IHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0
ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlz
aWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVz
dEV2ZW50VGFyZ2V0PihbXSAoSlNUZXN0RXZlbnRUYXJnZXQmIHRoaXNPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRo
aXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZh
Y2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExVbnNpZ25lZExv
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNl
PE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBpbXBsLml0ZW0oV1RGTW92ZShpbmRleCkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUs
IGltcGwuaXRlbShXVEZNb3ZlKGluZGV4KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uX2l0ZW0sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsMTcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkRPTVByb21p
c2VQcm94eS5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2luY2x1ZGUgIkpTRE9N
Q29udmVydFByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgpA
QCAtMTU2NSw5ICsxNTY4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnJlZ3VsYXJPcGVyYXRpb24oV1RGTW92ZSh0ZXN0
UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnJlZ3VsYXJPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFy
YW0pKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25fcmVndWxhck9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNTg2LDkgKzE1
ODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJh
bSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRl
c3RQYXJhbSkpOyB9KSkpOwogfQogCiAjZW5kaWYKQEAgLTE2MDQsOSArMTYwMyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwog
fQogCiAjZW5kaWYKQEAgLTE2NTIsOSArMTY0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNv
bnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RHbG9iYWxPYmplY3Q6OmVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBU
ZXN0R2xvYmFsT2JqZWN0OjplbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKFdURk1vdmUo
dGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RH
bG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uX2VuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25T
dGF0aWMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMTY3Niw5ICsxNjcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29u
dmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dvcmxk
KFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dv
cmxkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2VuYWJsZWRJblNwZWNpZmlj
V29ybGQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMTY5OCw5ICsxNjkxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29u
dmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoV1RG
TW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTcyMCw5ICsxNzExLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoV1RGTW92ZSh0ZXN0
UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVzRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTcz
OCw5ICsxNzI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdFByaXZhdGVGdW5jdGlvbigpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwudGVzdFByaXZhdGVGdW5jdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl90ZXN0UHJpdmF0ZUZ1
bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTE3NTcsOSArMTc0NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETERvdWJsZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJv
bWlzZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9jYWxjdWxhdGVTZWNyZXRSZXN1bHQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTc3
NCw3ICsxNzU5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihp
bXBsLmdldFNlY3JldEJvb2xlYW4oKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9nZXRT
ZWNyZXRCb29sZWFuLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTE3OTAsNyArMTc3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4o
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3Rlc3RGZWF0dXJlR2V0
U2VjcmV0Qm9vbGVhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw5ICsxNTUsMTEgQEAgYm9vbCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZh
bHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC0xNjcsMTEgKzE2OSwxNCBAQCBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXI6OmdlCiAKIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVj
dCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChM
SUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDkgKzE1NSwxMSBAQCBib29s
IEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qPihvYmpl
Y3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShp
bmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTY3LDExICsxNjksMTQgQEAgYm9vbCBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpbwogCiBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgp
KSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIs
OSArMTYyLDExIEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjoKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNzQsMTEgKzE3NiwxNCBAQCBib29s
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6CiAKIGJvb2wgSlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
bmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJB
WV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOwor
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsK
KyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yODUs
OSArMjkwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1
ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92
ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25faW5kZXhlZFNldHRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3Myw5ICs4NzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5taXhpbk9wZXJhdGlv
bigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwubWl4aW5PcGVyYXRpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX21peGlu
T3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTkzOSw5ICs5MzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5taXhpbkNvbmRpdGlv
bmFsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9u
KCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbl9taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTk1OSw5
ICs5NTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25fbWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTk4MCw3
ICs5NzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIGltcGxSZXN1bHQgPSBpbXBsLm1peGluUmVzdWx0RmllbGRPcGVy
YXRpb24oKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShpbXBsUmVzdWx0Lm5v
ZGVzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShp
bXBsUmVzdWx0Lm5vZGVzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX21peGluUmVzdWx0RmllbGRPcGVyYXRpb24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtOTk4LDkgKzk5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21Q
YXJ0aWFsKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5wYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlh
bCgpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25fcGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtMTAxOCw5ICsxMDEwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbE1ldGhvZDEoaW1wbCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRh
bDo6c3VwcGxlbWVudGFsTWV0aG9kMShpbXBsKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX3N1cHBsZW1lbnRhbE1l
dGhvZDEsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMTA4Myw5ICsxMDczLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBXZWJDb3JlOjpUZXN0
U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gV2ViQ29yZTo6
VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbl9z
dXBwbGVtZW50YWxNZXRob2Q0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU05v
ZGUuaCIKLSNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpAQCAtNTQsNyArNTMsNiBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fdm9pZE9w
ZXJhdGlvbik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX3Rocm93aW5nT3BlcmF0aW9uKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0UHJvdG90eXBlRnVuY3Rpb25fY3VzdG9tT3BlcmF0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3JG
dW5jdGlvbl9zdGF0aWNPcGVyYXRpb24pOwogCkBAIC0xMTEsNyArMTA5LDYgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdExlZ2FjeQogICAgIHsgImN1c3RvbUdldHRlclNldHRl
clN0cmluZ0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RfY3VzdG9tR2V0dGVy
U2V0dGVyU3RyaW5nQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RfY3Vz
dG9tR2V0dGVyU2V0dGVyU3RyaW5nQXR0cmlidXRlKSB9IH0sCiAgICAgeyAibm9kZUF0dHJpYnV0
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rfbm9kZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0X25vZGVBdHRyaWJ1dGUpIH0gfSwKICAgICB7ICJ2b2lkT3BlcmF0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX3ZvaWRP
cGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAidGhyb3dpbmdPcGVyYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fdGhyb3dpbmdP
cGVyYXRpb24pLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAiY3VzdG9tT3BlcmF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX2N1c3RvbU9wZXJh
dGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJDT05TVEFOVDEiLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2lj
LCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICAgICB7ICJDT05TVEFOVDIiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7
IChsb25nIGxvbmcpKDIpIH0gfSwKQEAgLTMwMiw5ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC52b2lkT3Bl
cmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC52b2lkT3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3Rv
dHlwZUZ1bmN0aW9uX3ZvaWRPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzEyLDMyICszMDcsNiBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JCiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD46OmNhbGw8anNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl92b2lkT3BlcmF0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ2b2lkT3BlcmF0aW9uIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uX3Rocm93aW5nT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBp
ZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3Qp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKLSAgICBhdXRvIHN0ckFyZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBv
YmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJvYmpBcmciLCAiVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0IiwgInRocm93aW5nT3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRocm93aW5nT3BlcmF0aW9uKCpjb250ZXh0
LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl90aHJv
d2luZ09wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdD46OmNhbGw8anNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQ
cm90b3R5cGVGdW5jdGlvbl90aHJvd2luZ09wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAidGhyb3dpbmdPcGVyYXRpb24iKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90
eXBlRnVuY3Rpb25fY3VzdG9tT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKQEAgLTM1OCw5ICszMjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdDo6c3RhdGljT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0OjpzdGF0aWNPcGVyYXRpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlv
bl9zdGF0aWNPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMTUgKzE2NCwxNCBAQCBib29sIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6OmdldE93CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OwotICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4g
T3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJ
RExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0
eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4oW10gKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTE4NCwxNiArMTgzLDE1IEBAIGJvb2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Z2V0T3cKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwog
ICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47Ci0gICAgYXV0byBn
ZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAt
PiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRl
cklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3Bl
cnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zPihbXSAoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICBy
ZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVz
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMjM3LDcgKzIzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRl
cmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9k
ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1
bmN0aW9uX25hbWVkSXRlbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lvbiAy
NzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkR2V0VG9NYXBMaWtlKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbl9nZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oZm9yd2FyZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRIYXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hh
cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55Pihmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
MjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFu
eT4oZm9yd2FyZEtleXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgZm9yd2FyZEtleXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbl9rZXlzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb01h
cExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1Rv
TWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uX3ZhbHVlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KGZvcndhcmRGb3JFYWNoVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2Fs
bGJhY2spKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbl9mb3JFYWNoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0
byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFNldFRvTWFwTGlrZSgqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSwgV1RGTW92ZSh2
YWx1ZSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3
YXJkU2V0VG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVk
VGhpcywgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fc2V0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTMzOCw5ICszMzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGZvcndhcmRDbGVhclRvTWFwTGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGZvcndhcmRDbGVhclRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2NsZWFyLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTM1OSw3ICsz
NTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb01hcExp
a2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3Zl
KGtleSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3
YXJkRGVsZXRlVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9kZWxldGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTEsOSArMjUxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY2xlYXIoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmNsZWFyKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RN
YXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fY2xlYXIsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtMjcyLDcgKzI3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2Fy
ZEdldFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGZvcndhcmRHZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uX2dldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC0yOTEsNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pihmb3J3YXJkSGFzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zUHJvdG90eXBlRnVuY3Rpb25faGFzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMwNSw3ICszMDMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBM
aWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9N
YXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZW50cmllcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMTksNyArMzE3
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJk
S2V5c1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJk
S2V5c1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2tleXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzMzLDcg
KzMzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9y
d2FyZFZhbHVlc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNh
c3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBm
b3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAq
Y2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTM1Miw3ICszNTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQW55Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZv
ckVhY2hUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRU
aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGZvcndhcmRGb3JFYWNoVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2ZvckVhY2gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzcxLDcgKzM2OSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmREZWxldGVU
b01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBX
VEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFw
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2RlbGV0ZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwyMyArMTU2LDIzIEBAIGJvb2wgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVj
dCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdl
dHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+
IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewot
ICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVy
SURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVy
dHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5
cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTg0LDkgKzE4NCwx
MSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVj
dCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChM
SUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTE5NCwxNCArMTk2LDEyIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGkKICAgICB9CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERP
TVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwg
YXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMjMg
KzE1NiwyMyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgaWYgKGF1dG8g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZh
bHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElE
TERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVj
dCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5
cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE4NCw5ICsxODQsMTEgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFY
X0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4
KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRl
eCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTE5NCwxNCArMTk2LDEyIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmcKICAgICB9CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
bmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4g
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0
dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJv
cGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDIzICsxNjUsMjMgQEAgYm9vbCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogewogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRl
bShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1l
KSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdl
dHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFBy
b3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAt
PiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5u
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0p
OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xOTMs
OSArMTkzLDExIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhp
c09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMDMsMTQgKzIwNSwxMiBAQCBib29sIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgfQogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0
ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4oW10g
KEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJl
dHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNjAsOSArMzYwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubmFtZWRTZXR0ZXIoV1RG
TW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubmFtZWRTZXR0ZXIo
V1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVGdW5jdGlvbl9uYW1lZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zODUsOSArMzgzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1
dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5k
ZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9pbmRleGVkU2V0dGVyLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDE1ICsxNTUsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldAog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBl
ID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlz
T2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09i
amVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQp
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVy
SURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTc1LDE2ICsxNzQsMTUgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldAogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3Ry
aW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRv
IHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAg
ICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2
aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlw
ZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlm
IChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTUgKzE1NSwxNCBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiB7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAg
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzUsMTYgKzE3NCwxNSBAQCBib29sIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmlu
ZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBw
cm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAg
ICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAg
IHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0
ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlz
aWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+
IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7
CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3Bl
cnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxNSArMTYxLDE0IEBAIGJvb2wgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmcKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4ob2JqZWN0KTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5
TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYg
KCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFt
ZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0
bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTE4MSwxNiArMTgwLDE1IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXI6OmcKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0
ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9w
ZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciYgdGhp
c09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgewor
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTI1Niw5ICsyNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm5hbWVkRGVsZXRlcihXVEZNb3ZlKG5hbWUpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm5hbWVkRGVsZXRlcihXVEZNb3ZlKG5hbWUpKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3Rpb25fbmFtZWREZWxldGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc0
NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDIz
ICsxNTYsMjMgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICB1
c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjpp
c051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nl
c3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXI+KFtdIChKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciYgdGhpc09iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAg
ICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE4NCw5ICsxODQsMTEgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cgogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAo
aW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBA
IC0xOTQsMTQgKzE5NiwxMiBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyCiAgICAgfQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
aW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1l
KSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdl
dHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFBy
b3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcj4oW10gKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShh
dXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52
YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTUsMTUgKzE1NSwxNCBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blBy
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0g
SURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2Jq
ZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXNPYmplY3QpLCBwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVy
SURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVy
dHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGg+KFtdIChKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoJiB0aGlzT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0
aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0od29ybGRGb3JET01PYmplY3QodGhpc09iamVj
dCksIHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE3NSwxNiArMTc0LDE1IEBAIGJvb2wgSlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
aW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1l
KSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0o
d29ybGRGb3JET01PYmplY3QodGhpc09iamVjdCksIHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8
R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4oW10gKEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGgmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+
IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbSh3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KSwgcHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
MTUgKzE1NSwxNCBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9
IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09i
amVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlO
YW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkK
LSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJG
dW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklE
TFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+
IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7
CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3Bl
cnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzUsMTYgKzE3NCwxNSBAQCBib29sIEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIm
IHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8p
IHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MSwxNSArMTYxLDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcjo6Z2UKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5nZXR0ZXJOYW1lKHByb3BlcnR5TmFtZVRv
QXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjpp
c051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nl
c3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cj4oW10gKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldHRlck5hbWUocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTgxLDE2
ICsxODAsMTUgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZQogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKj4ob2JqZWN0
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0
dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAo
YXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldHRlck5hbWUocHJvcGVydHlOYW1lVG9BdG9tU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZh
bHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxh
YmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVu
Y3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPihbXSAo
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09i
amVjdC53cmFwcGVkKCkuZ2V0dGVyTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzQsNyArMjMyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGltcGwuZ2V0dGVyTmFtZShXVEZNb3ZlKG5hbWUpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXR0ZXJOYW1lKFdURk1vdmUobmFt
ZSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uX2dldHRlck5hbWUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
NzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTUgKzE1
NSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcio+
KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERP
TVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwg
YXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0
eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3Bl
cnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZh
bHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3NSwxNiArMTc0
LDE1IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihvYmplY3QpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExU
eXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0
aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhp
c09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1
bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdl
dHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0
dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAg
ICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTUsMTUgKzE1NSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICB1
c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjpp
c051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nl
c3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbj4oW10gKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3NSwxNiArMTc0LDE1IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJp
bmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8g
cHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAg
ICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZp
c2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4g
ZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsK
ICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNp
b24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEs
MTUgKzE2MSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdlCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBl
ID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlz
T2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09i
amVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQp
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVy
SURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE4MSwxNiArMTgwLDE1IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
Z2UKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+
KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vz
c29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
PihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzE1LDkgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUo
bmFtZSksIFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1v
dmUobmFtZSksIFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9u
YW1lZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSwyMyArMTY1LDIzIEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihvYmplY3QpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgp
Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRl
cihpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuaW5kZXhlZFNldHRlcihpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICB1c2lu
ZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsK
KyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3Nv
ckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
cj4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXImIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE5Myw5ICsxOTMsMTEgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5E
RVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgo
KSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5kZXgp
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0
dGVyKGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwMywxNCArMjA1LDEyIEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICB9CiAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcg
R2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBb
XSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Cisg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JG
dW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+
KFtdIChKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyJiB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVy
biB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC0zNDAsOSArMzQwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92
ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubmFtZWRTZXR0ZXIoV1RG
TW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0
aW9uX25hbWVkU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTM2Miw3ICszNjAsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBpbmRleCA9
IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuaW5kZXhl
ZFNldHRlcihXVEZNb3ZlKGluZGV4KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25faW5kZXhlZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSwyMyArMTY1LDIzIEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIqPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5k
ZXhlZFNldHRlcihpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPihbXSAoSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciYgdGhpc09iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJB
WV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihp
bmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4
ZWRTZXR0ZXIoaW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0yMDMsMTQgKzIwNSwxMiBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBCiAgICAgfQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJp
bmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8g
cHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAg
ICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZp
c2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPihbXSAoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09i
amVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlz
aWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewot
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMzYwLDkgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSks
IFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFt
ZSksIFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5j
dGlvbl9uYW1lZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zODMsOSArMzgxLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5kZXhlZFNldHRl
cihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuaW5kZXhl
ZFNldHRlcihXVEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uX2luZGV4ZWRTZXR0ZXIyQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC0zOTgsNyAr
Mzk0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluZGV4ZWRT
ZXR0ZXIoV1RGTW92ZShpbmRleCkpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3Rv
dHlwZUZ1bmN0aW9uX2luZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTUgKzE1NSwxNCBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwot
ICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3Bl
cnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAg
aWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxl
TmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oW10gKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xNzUsMTYgKzE3NCwxNSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlCiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20o
dm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5
TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYg
KCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFt
ZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjc0NzI4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OSwxNSArMTc5LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWEKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAg
ICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1
bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlv
bmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlw
ZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0
ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVt
QWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAg
ICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTk5LDE2ICsxOTgsMTUgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YQogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0s
IGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
PiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFH
ZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQ
cm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0zNTAsOSArMzQ4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24o
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uX3VuZm9yZ2VhYmxlT3BlcmF0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc5LDE1ICsxNzksMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgdXNpbmcgR2V0dGVy
SURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0
byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUo
cmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9y
PEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KFtdIChKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0
aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7
CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTk5LDE2ICsxOTgsMTUgQEAgYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYQogICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0
eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlm
ICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5h
bWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+KFtdIChKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMzI3LDkgKzMyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25fdW5m
b3JnZWFibGVPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTcgQEAKIAogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkRP
TVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0UHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0RPTUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKQEAgLTMxMiw5
ICszMTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0V29ya2VyUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElE
TFVuZGVmaW5lZD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
dGVzdFdvcmtlclByb21pc2UoV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fdGVzdFdvcmtlclBy
b21pc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMzI5LDkgKzMzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNhbGN1bGF0ZVNlY3JldFJl
c3VsdChXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExQcm9taXNlPElETERvdWJsZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlz
ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Tm9kZVByb3Rv
dHlwZUZ1bmN0aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zNDYsNyArMzQ2LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmdldFNlY3Jl
dEJvb2xlYW4oKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX2dldFNlY3JldEJvb2xlYW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVh
bj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRC
b29sZWFuKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25fdGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1NSw3ICsxNDU1
LDYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Twogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9k
V2l0aFN0YW5kYWxvbmVFbnVtQXJnKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSk7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RU
aGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVU1ZTdHJpbmdBcmcp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVU1ZT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKTsKQEAgLTE0NjQsOSArMTQ2Myw2IEBA
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE8KIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhC
eXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9zZXJpYWxpemVkVmFs
dWUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aFJlY29yZCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uKTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRp
b25SZXR1cm5pbmdPYmplY3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY3VzdG9tTWV0aG9kKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2N1c3RvbU1ldGhvZFdp
dGhBcmdzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3ByaXZhdGVNZXRob2QpOwpAQCAtMTQ3NSwxMSArMTQ3MSw4IEBAIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE8KIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3JlbW92ZUV2ZW50TGlzdGVu
ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZU9iaik7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93
aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9u
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kRXhlY1N0YXRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlT2JqRXhjZXB0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
RXhlY1N0YXRlV2l0aFNwYWNlcyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRG9jdW1lbnRBcmd1bWVudCk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRo
Q2FsbGVyRG9jdW1lbnRBcmd1bWVudCk7CkBAIC0xNTc2LDExICsxNTY5LDkgQEAgc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Twogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYW55KTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNl
RnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rp
b25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24pOwotc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0
aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25fdGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbik7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0Q3Vz
dG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbik7CkBAIC0xNTkzLDcgKzE1ODQsNiBAQCBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPCiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25XaXRoRXh0
ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2J1ZmZlclNvdXJjZVBhcmFtZXRlcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl90ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJldHVyblZhbHVlT3B0aW1p
emF0aW9uV2l0aEV4Y2VwdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVu
Y3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2Nv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbik7CkBAIC0xOTM0LDcg
KzE5MjQsNiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uCiAgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogICAgIHsgInRlc3RTdGF0
aWNQcm9taXNlRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ0ZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bl90ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJ0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24pLCAoaW50
cHRyX3QpICgwKSB9IH0sCiB9OwogCkBAIC0yMTc3LDcgKzIxNjYsNiBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAibWV0aG9kV2l0aFN0YW5kYWxvbmVF
bnVtQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoU3RhbmRhbG9uZUVu
dW1BcmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsRW51
bUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsRW51bUFy
ZyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJn
QW5kRGVmYXVsdFZhbHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0
aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsg
Im1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpLCAoaW50cHRyX3QpICgy
KSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aFVTVlN0cmluZ0FyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAg
ICB7ICJtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyksIChpbnRwdHJfdCkgKDEpIH0g
fSwKICAgICB7ICJtZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCkBAIC0yMTg2LDkgKzIx
NzQsNiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAi
bWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAic2VyaWFsaXplZFZhbHVl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9zZXJpYWxpemVkVmFsdWUpLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aFJlY29yZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aFJlY29yZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJtZXRo
b2RXaXRoRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhj
ZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhFeGNlcHRpb25S
ZXR1cm5pbmdMb25nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0
aW9uUmV0dXJuaW5nTG9uZyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJtZXRob2RXaXRo
RXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAg
IHsgImN1c3RvbU1ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY3VzdG9tTWV0aG9k
KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImN1c3RvbU1ldGhvZFdpdGhBcmdzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jdXN0b21NZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkg
KDMpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMykKQEAgLTIyMDYsMTEgKzIxOTEsOCBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAicmVtb3ZlRXZl
bnRMaXN0ZW5lciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcmVtb3ZlRXZlbnRMaXN0ZW5l
ciksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJ3aXRoRXhlY1N0YXRlVm9pZCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWQpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAid2l0aEV4ZWNTdGF0ZU9iaiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
d2l0aEV4ZWNTdGF0ZU9iaiksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ3aXRoRXhlY1N0
YXRlVm9pZEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0
ZVZvaWRFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAid2l0aEV4ZWNTdGF0
ZU9iakV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZU9i
akV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAg
IHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4
ZWNTdGF0ZU9iakV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNw
YWNlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ3aXRoRG9jdW1lbnRBcmd1bWVudCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aERvY3VtZW50QXJndW1lbnQpLCAoaW50cHRy
X3QpICgwKSB9IH0sCiAgICAgeyAid2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3dpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KSwgKGludHB0cl90
KSAoMCkgfSB9LApAQCAtMjMwNSw3ICsyMjg3LDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialBybwogICAgIHsgImFueSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
YW55KSwgKGludHB0cl90KSAoMikgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb24iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb24pLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJn
dW1lbnQpLCAoaW50cHRyX3QpICgxKSB9IH0sCi0gICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldp
dGhFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rp
b25XaXRoRXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KSwgKGludHB0cl90
KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbiksIChpbnRw
dHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90
KSAoMCkgfSB9LApAQCAtMjMyMSw3ICsyMzAyLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialBybwogICAgIHsgIm9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQ
YXJhbWV0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbldpdGhFeHRlcm5h
bERpY3Rpb25hcnlQYXJhbWV0ZXIpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiYnVmZmVy
U291cmNlUGFyYW1ldGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9idWZmZXJTb3VyY2VQ
YXJhbWV0ZXIpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidGVzdFJldHVyblZhbHVlT3B0
aW1pemF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UmV0dXJuVmFsdWVPcHRp
bWl6YXRpb24pLCAoaW50cHRyX3QpICgyKSB9IH0sCi0gICAgeyAidGVzdFJldHVyblZhbHVlT3B0
aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwK
ICAgICB7ICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiksIChp
bnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVu
Y3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
b3JrZXJGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJjb25kaXRpb25hbGx5
RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbiksIChpbnRw
dHJfdCkgKDApIH0gfSwKQEAgLTI1MDIsOSArMjQ4MiwxMSBAQCBib29sIEpTVGVzdE9iajo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChpbmRleC52
YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJRExE
T01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChpbmRleC52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI1MTQsMTEgKzI0OTYsMTQgQEAgYm9vbCBKU1Rlc3RP
Ymo6OmdldE93blByb3BlcnR5U2xvdChKU09iagogCiBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJS
QVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURM
RE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5u
dWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubnVsbGFibGVTdHJpbmdTcGVjaWFs
TWV0aG9kKGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTUwMDYsNyArNDk5MSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfdGVzdFJlYWQKICAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
UHJvbWlzZTxJRExVbmRlZmluZWQ+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0UmVhZE9ubHlWb2lkUHJvbWlzZUF0
dHJpYnV0ZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExQcm9taXNlPElETFVuZGVmaW5lZD4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLnRlc3RSZWFkT25seVZvaWRQcm9taXNlQXR0cmlidXRlKCk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfdGVzdFJlYWRPbmx5Vm9pZFByb21p
c2VBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpAQCAtNTAxOSw3ICs1MDA0LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial90ZXN0UmVhZAogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9t
aXNlPElETEludGVyZmFjZTxUZXN0Tm9kZT4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0UmVhZE9ubHlQcm9taXNl
QXR0cmlidXRlKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETFByb21pc2U8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4+KGxleGljYWxHbG9iYWxPYmplY3Qs
ICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RSZWFkT25seVByb21pc2VBdHRyaWJ1dGUoKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial90ZXN0UmVhZE9ubHlQ
cm9taXNlQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTUzODksOSArNTM3NCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBh
cmFtKSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtNTQwNyw5ICs1MzkwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
dGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5l
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAK
ICNlbmRpZgpAQCAtNTQ1NSw5ICs1NDM2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVy
dDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgVGVzdE9iajo6ZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyhXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6OmVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25f
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NDc5LDkgKzU0NTgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdURk1v
dmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hl
blJ1bnRpbWVGZWF0dXJlRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5hYmxl
ZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTUwMSw5
ICs1NDc4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC53b3JsZFNwZWNpZmljTWV0aG9kKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC53b3JsZFNwZWNpZmljTWV0aG9kKFdURk1vdmUodGVzdFBhcmFtKSk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl93b3JsZFNwZWNpZmljTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU1MTgsOSArNTQ5Myw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETERvdWJsZT4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY2FsY3VsYXRlU2VjcmV0
UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY2FsY3VsYXRlU2VjcmV0UmVzdWx0LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTU1MzUsNyArNTUwOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2dl
dFNlY3JldEJvb2xlYW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTU1MSw3ICs1NTI0LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVh
bigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC01NTY4LDkgKzU1NDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC51bmRlZmluZWRNZXRo
b2QoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLnVuZGVmaW5lZE1ldGhvZCgpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdW5kZWZpbmVk
TWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTU1OTYsOSArNTU2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQy
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgInVuZGVmaW5lZE1l
dGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLnVuZGVmaW5lZE1ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1v
dmUoc3RyQXJnKSwgKm9iakFyZyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC51bmRlZmluZWRNZXRob2RXaXRo
QXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
dW5kZWZpbmVkTWV0aG9kV2l0aEFyZ3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTYxMyw3ICs1NTgyLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2QoKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qnl0ZT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuYnl0ZU1ldGhvZCgp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fYnl0ZU1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NjM5LDcgKzU2MDgsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgYXV0byBvYmpB
cmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJi
eXRlTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRo
b2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExCeXRlPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ieXRlTWV0
aG9kV2l0aEFyZ3MoV1RGTW92ZShieXRlQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX2J5dGVNZXRob2RXaXRoQXJncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NjU0LDcgKzU2MjMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kKCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TE9jdGV0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5vY3RldE1ldGhv
ZCgpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fb2N0ZXRNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTY4MCw3ICs1NjQ5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGF1dG8g
b2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDIudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3Qi
LCAib2N0ZXRNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9j
dGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9i
akFyZykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETE9jdGV0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5vY3RldE1ldGhvZFdpdGhBcmdzKFdURk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFyZyks
ICpvYmpBcmcpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fb2N0ZXRNZXRob2RXaXRoQXJncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01Njk1LDcgKzU2NjQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhv
ZCgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5s
b25nTWV0aG9kKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9sb25nTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU3MjEsNyArNTY5MCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAg
ICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0
T2JqZWN0IiwgImxvbmdNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KGlt
cGwubG9uZ01ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwg
Km9iakFyZykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmxvbmdNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyks
ICpvYmpBcmcpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fbG9uZ01ldGhvZFdpdGhBcmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU3MzYsNyArNTcwNSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9i
ak1ldGhvZCgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2JqTWV0aG9k
KCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9vYmpNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTc2Miw3ICs1NzMxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGF1dG8gb2Jq
QXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDIudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
b2JqTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwu
b2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2Jq
QXJnKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm9iak1ldGhvZFdpdGhB
cmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vYmpN
ZXRob2RXaXRoQXJncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01Nzc3LDcgKzU3NDYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9u
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVNZXRo
b2QoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakluc3RhbmNl
RnVuY3Rpb25fdW5mb3JnZWFibGVNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTc5Nyw5ICs1NzY2LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IGF1dG8gYXJnID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
RE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoV1RGTW92ZShhcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoYXJnKSk7IH0pKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RX
aXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01ODE5LDkgKzU3ODYsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byByZXNvbHZlciA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFhQYXRoTlNSZXNvbHZl
cj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAi
cmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1l
dGVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwubWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcigqcmVzb2x2ZXIpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcigqcmVzb2x2
ZXIpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01
ODM2LDcgKzU4MDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxl
PElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLm51bGxhYmxlU3RyaW5n
TWV0aG9kKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxlU3RyaW5nTWV0aG9kKCkpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9udWxsYWJs
ZVN0cmluZ01ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01ODUwLDcgKzU4MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgVGVzdE9iajo6bnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
TnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFRlc3RPYmo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKCkpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX251bGxhYmxlU3Ry
aW5nU3RhdGljTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU4NzAsNyArNTgzNSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGluZGV4
ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGltcGwubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKFdURk1vdmUoaW5kZXgpKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKFdURk1vdmUoaW5kZXgpKSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X251bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01ODkwLDkgKzU4NTUsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBlbnVtQXJnID0gY29udmVydDxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlw
ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhXVEZNb3ZlKGVudW1B
cmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhFbnVtQXJnKFdURk1vdmUoZW51bUFyZykp
OyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aEVudW1BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTkxMiw5ICs1ODc1LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IGF1dG8gZW51bUFyZyA9IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVt
ZXJhdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhTdGFuZGFsb25l
RW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVFbnVtZXJh
dGlvbj4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoU3RhbmRhbG9uZUVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoU3RhbmRhbG9uZUVudW1BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTkzMiw5ICs1ODkzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gZW51bUFy
ZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8
SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlv
bmFsPENvbnZlcnRlcjxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5U
eXBlPihjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVFbnVtRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJlbnVtQXJn
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIsIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOyB9KSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoV1RGTW92ZShl
bnVtQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKFdURk1v
dmUoZW51bUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01
OTUyLDkgKzU5MTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgYXV0byBlbnVtQXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUxIDogY29udmVydDxJRExFbnVtZXJhdGlv
bjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiLCBleHBlY3RlZEVudW1lcmF0aW9uVmFs
dWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoV1RGTW92
ZShlbnVtQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5k
RGVmYXVsdFZhbHVlKFdURk1vdmUoZW51bUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZ0FuZERlZmF1bHRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01OTYyLDI5ICs1OTE5LDYgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRo
T3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQm9keShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZ
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1
dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIG9iakFyZyA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQx
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiLCAiVGVzdE9iaiIpOyB9KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwubWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhXVEZN
b3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3NCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFRoYXRSZXF1
aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVU1ZTdHJpbmdBcmdC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKQEAgLTU5OTcsOSArNTkzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZl
cnQ8SURMVVNWU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5n
QXJnKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJn
KFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoVVNWU3RyaW5nQXJnLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYw
MTksOSArNTk1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVVNW
U3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5n
QXJnKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVVU1ZT
dHJpbmdBcmcoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmlu
Z0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC02MDQxLDkgKzU5NzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1Ry
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhV
U1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYwNjMsOSArNTk5
MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMQnl0ZVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwubWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoQnl0ZVN0cmluZ0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MDg1LDkgKzYwMTEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBz
dHIgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEJ5dGVTdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKFdURk1vdmUoc3RyKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKFdURk1vdmUoc3RyKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9tZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYxMDcsOSAr
NjAzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYxMjksOSArNjA1MSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHNl
cmlhbGl6ZWRBcmcgPSBjb252ZXJ0PElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5zZXJpYWxpemVkVmFsdWUoV1RGTW92
ZShzZXJpYWxpemVkQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5zZXJpYWxpemVkVmFsdWUoV1RGTW92
ZShzZXJpYWxpemVkQXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9zZXJpYWxpemVkVmFsdWUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjE1MSw5
ICs2MDcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gcmVjb3JkUGFyYW1ldGVyID0gY29udmVydDxJRExSZWNvcmQ8
SURMRE9NU3RyaW5nLCBJRExMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aFJl
Y29yZChXVEZNb3ZlKHJlY29yZFBhcmFtZXRlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0
aFJlY29yZChXVEZNb3ZlKHJlY29yZFBhcmFtZXRlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFJlY29y
ZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC02MTYxLDUzICs2MDc5LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoUmVjb3JkQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoUmVjb3JkIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoRXhjZXB0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKLXsKLSAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwot
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgcHJvcGFnYXRlRXhj
ZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhF
eGNlcHRpb24oKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X21ldGhvZFdpdGhFeGNlcHRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0
aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoRXhj
ZXB0aW9uIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZ0JvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9u
UmV0dXJuaW5nTG9uZygpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZ0JvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVy
bmluZ0xvbmciKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3RC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50
ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdP
YmplY3QoKSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewot
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Qm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5n
T2JqZWN0Iik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9jdXN0b21NZXRob2RCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTYyNDgs
NyArNjExOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICBhdXRvIGFyZ3VtZW50ID0gY29udmVydDxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5wcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5w
cml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ByaXZhdGVNZXRob2QsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNjI2OCw3ICs2MTM5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYXJndW1lbnQgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLnB1YmxpY0FuZFByaXZhdGVNZXRob2QoV1RG
TW92ZShhcmd1bWVudCkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLnB1YmxpY0FuZFByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fcHVibGljQW5kUHJpdmF0ZU1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02Mjk0LDEwICs2MTY1LDEwIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICBhdXRv
IHVzZUNhcHR1cmUgPSBjb252ZXJ0PElETEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDIudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmFk
ZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUo
dXNlQ2FwdHVyZSkpOworICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5hZGRFdmVudExpc3RlbmVyKFdURk1vdmUodHlwZSks
IFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUpKTsgfSkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoJnN0YXRpY19jYXN0PEpTT2JqZWN0Jj4oKmNhc3RlZFRoaXMpLCBhcmd1
bWVudDEudmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYWRkRXZlbnRMaXN0ZW5lciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MzIzLDEw
ICs2MTk0LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgy
KTsKICAgICBhdXRvIHVzZUNhcHR1cmUgPSBjb252ZXJ0PElETEJvb2xlYW4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShsaXN0
ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOworICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5yZW1vdmVFdmVudExpc3Rl
bmVyKFdURk1vdmUodHlwZSksIFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUp
KTsgfSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnN0YXRpY19jYXN0PEpTT2JqZWN0Jj4o
KmNhc3RlZFRoaXMpLCBhcmd1bWVudDEudmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcmVtb3ZlRXZlbnRMaXN0
ZW5lciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC02MzQxLDkgKzYyMTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC53aXRoRXhlY1N0YXRlVm9p
ZCgqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwud2l0aEV4ZWNTdGF0ZVZvaWQoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGxleGljYWxHbG9iYWxPYmplY3QpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lkLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTYzNTgsNyArNjIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJm
YWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLndpdGhFeGVjU3RhdGVPYmooKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGxleGljYWxHbG9iYWxPYmplY3QpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBp
bXBsLndpdGhFeGVjU3RhdGVPYmooKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxH
bG9iYWxPYmplY3QpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVPYmosIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjM2NiwzOCArNjIz
NSw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fd2l0aEV4ZWNTdGF0ZU9iakJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAid2l0aEV4ZWNTdGF0ZU9iaiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRp
b25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwud2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24o
KmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lk
RXhjZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb25C
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIndpdGhFeGVjU3RhdGVWb2lk
RXhjZXB0aW9uIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC53aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKCpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkpKSk7Ci19Ci0KLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRl
T2JqRXhjZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlv
bkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAid2l0aEV4ZWNTdGF0ZU9i
akV4Y2VwdGlvbiIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKQEAgLTY0MDgsOSArNjI0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKmNvbnRleHQpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwud2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKmNvbnRleHQpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtNjQyOCw5ICs2MjYzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSgqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKCpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFt
ZSwgKmNvbnRleHQpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3Rh
dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtNjQzOCwyNCArNjI3MSw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMp
Ci17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2Vw
dGlvbigqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpj
YWxsRnJhbWUsICpjb250ZXh0KSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhl
Y1N0YXRlT2JqRXhjZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2Jq
RXhjZXB0aW9uIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNT
dGF0ZVdpdGhTcGFjZXNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTY0NjYsNyArNjI4MSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvKiBjb250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGlt
cGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKCpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwg
KmNvbnRleHQpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKCpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwgKmNvbnRleHQpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTY0ODYsOSArNjMwMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqY29udGV4dCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW1wbC53aXRoRG9jdW1lbnRBcmd1bWVudChkb2N1bWVudCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC53
aXRoRG9jdW1lbnRBcmd1bWVudChkb2N1bWVudCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRG9jdW1lbnRBcmd1bWVu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC02NTA2LDkgKzYzMTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byogaW5jdW1iZW50RG9jdW1lbnQgPSBpbmN1bWJlbnRET01X
aW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCAq
Y2FsbEZyYW1lKS5kb2N1bWVudCgpOwogICAgIGlmICghaW5jdW1iZW50RG9jdW1lbnQpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC53aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCgqaW5jdW1i
ZW50RG9jdW1lbnQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwud2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQo
KmluY3VtYmVudERvY3VtZW50KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTY1MjMsOSArNjMzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLndpdGhDYWxsZXJXaW5kb3dBcmd1bWVu
dChpbmN1bWJlbnRET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxH
bG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC53aXRoQ2FsbGVyV2lu
ZG93QXJndW1lbnQoaW5jdW1iZW50RE9NV2luZG93KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSkpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aENhbGxlcldp
bmRvd0FyZ3VtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTY1NDMsOSArNjM1Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9wdCA9IGFyZ3VtZW50MC52
YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVy
blR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZl
cnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhX
VEZNb3ZlKG9wdCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJnKFdURk1v
dmUob3B0KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxBcmcsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjU2Myw5ICs2
MzcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGF1dG8gb3B0ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNv
bnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRGVmYXVsdFZhbHVlKFdURk1vdmUob3B0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShvcHQpKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NTg4LDkgKzYzOTMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgYXV0byBv
cHQgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVy
PElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpS
ZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUo
b3B0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25h
bEFyZyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUob3B0KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NjE2LDkgKzY0MTksNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgYXV0byBvcHQy
ID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0
dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQy
LnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKFdURk1vdmUobm9uT3B0KSwgV1RGTW92
ZShvcHQxKSwgV1RGTW92ZShvcHQyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdDEp
LCBXVEZNb3ZlKG9wdDIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09w
dGlvbmFsQXJncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC02NjM2LDkgKzY0MzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFs
dWUoKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKFdURk1vdmUoc3RyKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoV1RGTW92ZShzdHIpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NjU2LDkgKzY0NTUsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0
byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252
ZXJ0PElETFVTVlN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
VVNWU3RyaW5nKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxVU1ZTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFVTVlN0
cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC02Njc2LDkgKzY0NzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmluZ0FkYXB0b3I8
SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
QXRvbVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0
cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC02Njk2LDkgKzY0OTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gImZvbyJfcyA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoV1RGTW92
ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1
bHRWYWx1ZShXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5k
RGVmYXVsdFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTY3MTYsOSArNjUwOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3VtZW50MC52
YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBBdG9tU3RyaW5nKCJmb28iLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkgOiBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0
cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdB
bmREZWZhdWx0VmFsdWUoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21l
dGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjczNiw5
ICs2NTI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmlu
ZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc051bGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjc1Niw5ICs2NTQ1LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzVW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjc3Niw5ICs2NTYzLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1
dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IG51bGxBdG9tKCkgOiBj
b252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoV1RGTW92ZShzdHIpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoV1RGTW92
ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNjc5Niw5ICs2NTgxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IGVtcHR5U3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyhX
VEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC02ODE2LDkgKzY1OTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNWU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKFdU
Rk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJ
c0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxVU1ZT
dHJpbmdJc0VtcHR5U3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY4MzYsOSArNjYxNyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3Vt
ZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBlbXB0eUF0b20oKSA6IGNvbnZlcnQ8SURMQXRv
bVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1v
dmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC02ODU2LDkgKzY2MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PElETFVucmVzdHJp
Y3RlZERvdWJsZT4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRG91Ymxl
SXNOYU4oV1RGTW92ZShudW1iZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bERvdWJsZUlzTmFOKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxE
b3VibGVJc05hTiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC02ODc2LDkgKzY2NTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PElE
TFVucmVzdHJpY3RlZEZsb2F0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxGbG9hdElzTmFOKFdURk1vdmUobnVtYmVyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxGbG9hdElzTmFOKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0
aW9uYWxGbG9hdElzTmFOLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY4OTYsOSArNjY3MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG51bWJlciA9IGFyZ3Vt
ZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xv
bmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmdMb25nPjo6UmV0
dXJuVHlwZT4oY29udmVydDxJRExMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyhXVEZNb3ZlKG51bWJlcikpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjkxNiw5ICs2Njg5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gbnVtYmVyID0g
Y29udmVydDxJRExMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsTG9uZ0xvbmdJc1plcm8oV1RGTW92ZShudW1iZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02OTM2LDkgKzY3MDcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBu
dW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVy
dGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVy
dGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuc2lnbmVk
TG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25l
ZExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRo
T3B0aW9uYWxVbnNpZ25lZExvbmdMb25nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY5NTYsOSArNjcyNSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG51bWJl
ciA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhX
VEZNb3ZlKG51bWJlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9u
Z0lzWmVybywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC02OTc2LDkgKzY3NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBhcnJheSA9IGFyZ3VtZW50MC52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj46
OlJldHVyblR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoYXJyYXkp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoYXJy
YXkpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY5OTYsOSAr
Njc2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBhdXRvIGFycmF5ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZl
cnRlcjxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZXsgfSA6IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0
aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KFdURk1vdmUoYXJyYXkpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7IH0pKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzAxNiw5ICs2Nzc5
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IGF1dG8gYiA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252
ZXJ0ZXI8SURMQm9vbGVhbj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURM
Qm9vbGVhbj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKFdURk1vdmUoYikpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MDM2LDkgKzY3OTcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBiID0gY29udmVy
dDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29s
ZWFuSXNGYWxzZShXVEZNb3ZlKGIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW5Jc0ZhbHNlKFdURk1vdmUoYikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsQm9v
bGVhbklzRmFsc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNzA1Niw5ICs2ODE1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMQW55
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBbnkoV1RGTW92ZShhKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBbnkoV1RGTW92ZShhKSk7IH0pKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoT3B0aW9uYWxBbnksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzA3Niw5ICs2ODMzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gYSA9IGFy
Z3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMT2Jq
ZWN0Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExPYmplY3Q+OjpSZXR1
cm5UeXBlPihjb252ZXJ0PElETE9iamVjdD4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbE9iamVjdChXVEZNb3ZlKGEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdChXVEZNb3ZlKGEpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbE9iamVj
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC03MDk2LDkgKzY4NTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBvYmogPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gbnVsbHB0ciA6IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iaiIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIiLCAiVGVzdE9iaiIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsV3Jh
cHBlcihvYmopOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlcihvYmop
OyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MTE2LDkgKzY4Njks
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
YXV0byBvYmogPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyIiwgIlRlc3RP
YmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbE51bGxhYmxlV3JhcHBlcihXVEZNb3ZlKG9iaikpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKFdURk1vdmUob2JqKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzEzNiw5ICs2ODg3LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8g
b2JqID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iaiIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsICJUZXN0
T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoV1RGTW92ZShvYmopKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChXVEZNb3ZlKG9iaikp
OyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTcxNTYsOSArNjkwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBhdXRvIHJlc29sdmVyID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRl
cmZhY2U8WFBhdGhOU1Jlc29sdmVyPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsWFBhdGhOU1Jlc29sdmVyKFdURk1vdmUocmVzb2x2ZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhP
cHRpb25hbFhQYXRoTlNSZXNvbHZlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MTc2LDkgKzY5MjMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byByZWNvcmQg
PSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gV1RGOjpudWxsb3B0IDogY29udmVy
dDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChXVEZNb3ZlKHJlY29yZCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKFdURk1vdmUocmVjb3JkKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzE5Niw5ICs2OTQxLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1
dG8gcHJvbWlzZSA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBudWxscHRyIDog
Y29udmVydDxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFByb21pc2UoV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0
aG9kV2l0aE9wdGlvbmFsUHJvbWlzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MjE4LDkgKzY5NjEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0
byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNl
QXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0
aENhbGxiYWNrSW50ZXJmYWNlQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcyNDAsOSArNjk4MSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVy
ZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxi
YWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFy
ZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0lu
dGVyZmFjZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC03MjY1LDkgKzcwMDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJn
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoTm9u
Q2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKG5vbkNh
bGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZN
b3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC03Mjg1LDkgKzcwMjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5k
ZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRl
cmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1v
dmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNl
QXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTczMDUsOSArNzA0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxs
YWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxl
Q2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNh
bGxiYWNrKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJm
YWNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTczMjcsOSArNzA2MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKGNhbGxiYWNrLnJlbGVh
c2VOb25OdWxsKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25B
cmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC03MzQ5LDkgKzcwODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoTnVsbGFibGVD
YWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1l
dGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03Mzc0
LDkgKzcxMDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MS52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25Bcmco
V1RGTW92ZShub25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhX
VEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcz
OTQsOSArNzEyMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+
Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxi
YWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2sp
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
NzQxNCw5ICs3MTM5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxi
YWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rp
b25BcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X21ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03
NDMzLDkgKzcxNTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJh
Y2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNh
bEdsb2JhbE9iamVjdCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpz
dGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uX3N0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTc0NTQsOSArNzE3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxH
bG9iYWxPYmplY3QpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNr
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhD
YWxsYmFja0FyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fc3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc0NzIsNyArNzE5MSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1w
bC5jb25kaXRpb25hbE1ldGhvZDEoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlv
bmFsTWV0aG9kMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC03NDkwLDkgKzcyMDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb25kaXRpb25h
bE1ldGhvZDIoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
Y29uZGl0aW9uYWxNZXRob2QyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc1MTAsOSArNzIyNyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNv
bmRpdGlvbmFsTWV0aG9kMygpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxNZXRob2QzKCk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9jb25kaXRpb25hbE1ldGhvZDMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzUzNSw5ICs3MjUwLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAg
IGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKHN0ckFyZykpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUoc3Ry
QXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kMkJvZHkoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCkBAIC03NTUzLDkgKzcyNjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSk7CiAgICAgYXV0byBsb25nQXJnID0gYXJndW1lbnQxLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6
IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKG9iakFyZyks
IFdURk1vdmUobG9uZ0FyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZN
b3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRl
ZE1ldGhvZDNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzU2OCw5ICs3Mjc5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92
ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2QoV1RGTW92ZShzdHJBcmcpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRo
b2Q0Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc1ODMsOSArNzI5Miw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGxv
bmdBcmcgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRN
ZXRob2QoV1RGTW92ZShsb25nQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9k
KFdURk1vdmUobG9uZ0FyZykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDVCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzU5OCw5ICs3MzA1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIs
ICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC5vdmVybG9hZGVkTWV0aG9kKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2Q2Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc2
MTMsOSArNzMxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGxpc3RBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElE
TEludGVyZmFjZTxET01TdHJpbmdMaXN0Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAibGlzdEFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiRE9NU3RyaW5nTGlzdCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGxpc3RBcmcpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShsaXN0QXJnKSk7IH0pKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9vdmVybG9hZGVkTWV0aG9kN0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03NjI4LDkgKzczMzEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byBhcnJheUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RG
TW92ZShhcnJheUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3Zl
KGFycmF5QXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kOEJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCkBAIC03NjQzLDkgKzczNDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0
PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0
aG9kIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoKm9iakFyZyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0
aG9kKCpvYmpBcmcpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDlCb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQpAQCAtNzY1OCw5ICs3MzU3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gd2luZG93ID0gY29udmVy
dDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiV2luZG93UHJveHkiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKndpbmRvdyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVy
bG9hZGVkTWV0aG9kKCp3aW5kb3cpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDEw
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc2NzMsOSArNzM3MCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGFycmF5
QXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOyB9KSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3Zl
cmxvYWRlZE1ldGhvZDExQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc2ODgsOSArNzM4Myw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIGFycmF5QXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOyB9
KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDEyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAg
LTc3MDMsOSArNzM5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ckFyZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJnKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoc3RyQXJnKSk7IH0pKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kMTNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzcx
Nyw5ICs3NDA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBibG9iQXJn
cyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExJbnRlcmZhY2U8QmxvYj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGJsb2JBcmdzKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsgfSkpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X292ZXJsb2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03
NzkxLDkgKzc0ODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFj
ZTxUZXN0T2JqPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAxLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlciIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKFdURk1vdmUo
c3RyQXJnKSwgV1RGTW92ZShvYmpBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRo
b2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShzdHJBcmcpLCBXVEZNb3ZlKG9iakFyZykp
OyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjJC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzgwOSw5ICs3NDk2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGF1dG8gbG9uZ0FyZyA9IGFyZ3Vt
ZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46
OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+
KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgp
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RG
TW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2Fk
ZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXJPdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCkBAIC03ODU1LDkgKzc1NDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBvYmplY3RPck5vZGUgPSBjb252
ZXJ0PElETFVuaW9uPElETEludGVyZmFjZTxUZXN0T2JqPiwgSURMSW50ZXJmYWNlPFRlc3ROb2Rl
Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hp
bmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7IH0p
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24yQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc4NzAsOSArNzU1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhbHVlID0g
Y29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0
aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3Zl
cmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUodmFsdWUpKTsgfSkp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbk92ZXJs
b2FkRGlzcGF0Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc5MTAsOSArNzU5MSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIG9iamVjdE9yTm9kZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RPYmo+
LCBJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZShvYmplY3RPck5vZGUpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25z
KFdURk1vdmUob2JqZWN0T3JOb2RlKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9k
V2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzkyNSw5
ICs3NjA0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETFVuaW9uPElETEludGVyZmFj
ZTxUZXN0SW50ZXJmYWNlPiwgSURMRE9NU3RyaW5nLCBJRExMb25nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZSh2
YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hp
bmdVbmlvbnMoV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhv
ZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnNPdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCkBAIC03OTcwLDkgKzc2NDcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byBvYmplY3QgPSBjb252ZXJ0PElETElu
dGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDEsICJvYmplY3QiLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0
aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24iLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGlu
Z1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSwgKm9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RP
ck5vZGUpLCAqb2JqZWN0KTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2RXaXRoTm9u
RGlzdGluZ3Vpc2hpbmdVbmlvbjJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzk4OCw5ICs3NjYz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpOwogICAgIGF1dG8gbm9kZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJub2RlIiwg
IlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9u
IiwgIlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5v
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RP
ck5vZGUpLCAqbm9kZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRp
c3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpLCAqbm9kZSk7IH0pKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb25PdmVybG9h
ZERpc3BhdGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC04MDI1LDkgKzc2OTgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0
byBvYmplY3RPck5vZGUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETEludGVyZmFj
ZTxUZXN0T2JqPiwgSURMSW50ZXJmYWNlPFRlc3ROb2RlPj4+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUob2JqZWN0T3JOb2Rl
KSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMkJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCkBAIC04MDQwLDkgKzc3MTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8
SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihX
VEZNb3ZlKGluZGV4KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9u
KFdURk1vdmUoaW5kZXgpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkV2l0aE51bGxhYmxlVW5p
b25PdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC04MDgyLDkgKzc3NTEsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0
byBvYmplY3RPck5vZGUgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gdHJ1ZSA6
IGNvbnZlcnQ8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExCb29sZWFuPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZNb3ZlKG9iamVj
dE9yTm9kZSkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjJCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQpAQCAtODA5Nyw5ICs3NzY0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gaW5kZXggPSBj
b252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFs
VW5pb24oV1RGTW92ZShpbmRleCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9u
YWxVbmlvbihXVEZNb3ZlKGluZGV4KSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZFdpdGhPcHRp
b25hbFVuaW9uT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtODE0Myw5ICs3
ODA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOwogICAgIGF1dG8gbm9kZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJub2Rl
IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1Bh
cmFtZXRlciIsICJUZXN0Tm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZN
b3ZlKG9iaiksICpub2RlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9u
RGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShvYmopLCAqbm9kZSk7IH0pKSk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9vdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMkJvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCkBAIC04MTYxLDkgKzc4MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byBpbmRleCA9IGNv
bnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVO
b25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3ZlKG5vZGUpLCBXVEZNb3ZlKGluZGV4KSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFy
YW1ldGVyKFdURk1vdmUobm9kZSksIFdURk1vdmUoaW5kZXgpKTsgfSkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292
ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXJPdmVybG9hZERpc3Bh
dGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC04MTk1LDkgKzc4NTYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRl
c3RPYmo6OmNsYXNzTWV0aG9kKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6Y2xhc3NNZXRob2QoKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25fY2xhc3NNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODIxNCw3ICs3ODczLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gYXJnID0gYXJn
dW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25n
Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExMb25nPihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFy
ZykpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgVGVzdE9i
ajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoV1RGTW92ZShhcmcpKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fY2xhc3NNZXRo
b2RXaXRoT3B0aW9uYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODI0Niw5ICs3OTA1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYXJnID0g
Y29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhv
ZDEoV1RGTW92ZShhcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpvdmVybG9hZGVkTWV0aG9kMShX
VEZNb3ZlKGFyZykpOyB9KSkpOwogfQogCiAjZW5kaWYKQEAgLTgyNjMsOSArNzkyMCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIHR5cGUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RP
Ymo6Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUodHlwZSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6
Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUodHlwZSkpOyB9KSkpOwogfQogCiAjZW5kaWYKQEAg
LTgzMTQsOSArNzk2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIG9iakFyZ3NMb25nID0gY29udmVydDxJRExDbGFt
cEFkYXB0b3I8SURMVW5zaWduZWRMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY2xhc3NNZXRo
b2RXaXRoQ2xhbXAoV1RGTW92ZShvYmpBcmdzU2hvcnQpLCBXVEZNb3ZlKG9iakFyZ3NMb25nKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5jbGFzc01ldGhvZFdpdGhDbGFtcChXVEZNb3ZlKG9iakFyZ3NTaG9y
dCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NsYXNzTWV0aG9kV2l0aENsYW1wLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTgzMzQsOSArNzk4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9iakFyZ3NMb25nID0gY29udmVydDxJRExDbGFtcEFk
YXB0b3I8SURMTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1w
T25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jbGFzc01l
dGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwoV1RGTW92ZShvYmpBcmdzTG9uZykpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY2xh
c3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTgzNTksOSArODAxMCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAg
ICBhdXRvIG9iakFyZ3NMb25nID0gY29udmVydDxJRExFbmZvcmNlUmFuZ2VBZGFwdG9yPElETFVu
c2lnbmVkTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VS
YW5nZShXVEZNb3ZlKG9iakFyZ3NTaG9ydCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShXVEZNb3ZlKG9iakFyZ3NTaG9y
dCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NsYXNzTWV0aG9kV2l0aEVuZm9yY2VS
YW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC04Mzc5LDkgKzgwMjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURM
RW5mb3JjZVJhbmdlQWRhcHRvcjxJRExMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY2xhc3NN
ZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsKFdURk1v
dmUob2JqQXJnc0xvbmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0
aW9uYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtODQwMSw5ICs4MDQ4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdW5zaWduZWRMb25nU2Vx
dWVuY2UgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETFVuc2lnbmVkTG9uZz4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShXVEZNb3ZlKHVuc2lnbmVk
TG9uZ1NlcXVlbmNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoVW5zaWduZWRMb25nU2Vx
dWVuY2UoV1RGTW92ZSh1bnNpZ25lZExvbmdTZXF1ZW5jZSkpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFVu
c2lnbmVkTG9uZ1NlcXVlbmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg0NjEsOSArODEwNiw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9wdGlvbmFsVW5p
b24gPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVy
PElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMVW5yZXN0cmljdGVkRG91Ymxl
Pj4+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETFVuaW9uPElETERPTVN0
cmluZywgSURMU2VxdWVuY2U8SURMVW5yZXN0cmljdGVkRG91YmxlPj4+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMVW5yZXN0cmljdGVk
RG91YmxlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlv
blBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFsVW5pb24pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm9wZXJh
dGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKFdURk1vdmUob3B0aW9uYWxVbmlvbikpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fb3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODQ4Niw5
ICs4MTI5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwogICAgIGF1dG8gbnVsbGFibGVBcnJheUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFi
bGU8SURMU2VxdWVuY2U8SURMVW5zaWduZWRMb25nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShXVEZNb3ZlKGFycmF5QXJnKSwgV1RG
TW92ZShudWxsYWJsZUFycmF5QXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQW5kV2l0
aG91dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdURk1vdmUobnVsbGFibGVB
cnJheUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTg1MDgsNyArODE0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGVsZW1lbnRJZCA9IGNvbnZlcnQ8SURM
UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNl
PEVsZW1lbnQ+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxs
YWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdU
Rk1vdmUoZWxlbWVudElkKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9nZXRFbGVtZW50QnlJZCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NTQzLDkgKzgx
ODQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJ2YWx1
ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQxIiwgIlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwuY29udmVydDEoKnZhbHVlKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbnZlcnQxLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg1NjUsOSArODIw
NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8
VGVzdE5vZGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb252ZXJ0MihXVEZNb3ZlKHZh
bHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb252ZXJ0MihXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9j
b252ZXJ0MiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC04NTg3LDkgKzgyMjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb252ZXJ0MyhXVEZNb3ZlKHZh
bHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb252ZXJ0MyhXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9j
b252ZXJ0MywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC04NjA5LDkgKzgyNDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZl
cnQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY29udmVy
dDQoV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY29udmVydDQoV1RGTW92ZSh2YWx1
ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fY29udmVydDQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODYyNiw3ICs4MjU5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm11dGFibGVQb2ludEZ1
bmN0aW9uKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubXV0YWJsZVBv
aW50RnVuY3Rpb24oKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX211dGFibGVQb2ludEZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg2NDEsOSAr
ODI3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLmJhbmFuYSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuYmFuYW5hKCk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9vcmFuZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtODY2NSw5ICs4Mjk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJn
dW1lbnRzPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsIDEp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhv
ZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnZhcmlhZGlj
U3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFk
aWNTdHJpbmdNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODY4OSw5ICs4MzE4LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGlj
QXJndW1lbnRzPElETFVucmVzdHJpY3RlZERvdWJsZT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC52YXJpYWRp
Y0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fdmFyaWFkaWNEb3VibGVNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODcxMyw5ICs4MzQwLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byB0YWlsID0gY29u
dmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUodGFpbCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwpKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Zhcmlh
ZGljTm9kZU1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NzM3LDkgKzgzNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNB
cmd1bWVudHM8SURMVW5pb248SURMSW50ZXJmYWNlPE5vZGU+LCBJRExET01TdHJpbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0
YWlsKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC52YXJpYWRpY1VuaW9uTWV0aG9kKFdURk1vdmUoaGVhZCks
IFdURk1vdmUodGFpbCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk1ldGhvZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NzYy
LDkgKzgzODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSk7CiAgICAgYXV0byBiID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW1wbC5hbnkoV1RGTW92ZShhKSwgV1RGTW92ZShiKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5hbnko
V1RGTW92ZShhKSwgV1RGTW92ZShiKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9hbnksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODc3OSw5ICs4NDAw
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVu
ZGVmaW5lZD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVz
dFByb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVu
Y3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtODgwMSw5ICs4NDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURM
RmxvYXQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50KFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
dGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg4MTEsMjMgKzg0
MjgsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoRmxvYXRBcmd1bWVudCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhF
eGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1By
b21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b24oV1RGTW92ZShwcm9taXNlKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb24iKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9u
YWxJbnRBcmd1bWVudEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJu
aW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpAQCAtODgzOCw5ICs4NDM4LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gYSA9IGFyZ3VtZW50MC52
YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVy
blR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZl
cnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
T3B0aW9uYWxJbnRBcmd1bWVudChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVm
aW5lZD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdFBy
b21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KFdURk1vdmUoYSksIFdURk1vdmUo
cHJvbWlzZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3Vt
ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTg4NTgsOSArODQ1Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETEZs
b2F0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihX
VEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rp
b24oV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJv
bWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtODg3Myw5ICs4NDY5LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgIGF1dG8gcmVxdWVzdCA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPEZldGNoUmVxdWVzdD4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAicmVxdWVz
dCIsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIiwgIkZldGNo
UmVxdWVzdCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdFBy
b21pc2VPdmVybG9hZGVkRnVuY3Rpb24oKnJlcXVlc3QsIFdURk1vdmUocHJvbWlzZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5k
ZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbigqcmVxdWVzdCwgV1RGTW92ZShwcm9taXNlKSk7IH0p
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbk92ZXJsb2FkRGlzcGF0
Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKQEAgLTg5MDcsOSArODUwMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgVGVzdE9iajo6dGVz
dFN0YXRpY1Byb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEds
b2JhbE9iamVjdCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24oV1RGTW92ZShwcm9taXNlKSk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODkxNywyMiArODUwOSw2
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHIKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbkJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
biIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQotewotICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBUZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihX
VEZNb3ZlKHByb21pc2UpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewot
ICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxT
dGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGljUHJvbWlzZUZ1bmN0
aW9uV2l0aEV4Y2VwdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsKLX0KLQogc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RD
dXN0b21Qcm9taXNlRnVuY3Rpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
blJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTg5ODIsNyArODU1OCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3RSZXR1cm5z
T3duUHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKCkpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5k
ZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0
UmV0dXJuc093blByb21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbigpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJl
dHVybnNPd25Qcm9taXNlQW5kUHJvbWlzZVByb3h5RnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTAwMSw5ICs4
NTc3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogI2VuZGlm
CkBAIC05MDE5LDkgKzg1OTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExMb25nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwuY29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKGEpKTsgfSkpKTsKIH0KIAogI2Vu
ZGlmCkBAIC05MDY1LDkgKzg2MzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuc2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChXVEZN
b3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChXVEZN
b3ZlKHN0cikpOyB9KSkpOwogfQogCiAjaWYgRU5BQkxFKENPTkRJVElPTikKQEAgLTkwODEsOSAr
ODY1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLnNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOyB9KSkpOwogfQogCiAjZW5k
aWYKQEAgLTkxMjMsOSArODY5MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGluaXQgPSBjb252ZXJ0PElETERpY3Rp
b25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmF0dGFjaFNo
YWRvd1Jvb3QoV1RGTW92ZShpbml0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5hdHRhY2hTaGFkb3dSb290
KFdURk1vdmUoaW5pdCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYXR0YWNoU2hhZG93Um9vdCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MTQ1LDkg
Kzg3MTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byBkaWN0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PERpY3Rpb25h
cnlJbXBsTmFtZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm9wZXJhdGlvbldpdGhFeHRlcm5hbERp
Y3Rpb25hcnlQYXJhbWV0ZXIoV1RGTW92ZShkaWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vcGVyYXRp
b25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKFdURk1vdmUoZGljdCkpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
b3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MTY3LDkg
Kzg3MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byBkYXRhID0gY29udmVydDxJRExVbmlvbjxJRExBcnJheUJ1ZmZl
clZpZXcsIElETEFycmF5QnVmZmVyPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuYnVmZmVyU291cmNl
UGFyYW1ldGVyKFdURk1vdmUoZGF0YSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuYnVmZmVyU291cmNlUGFy
YW1ldGVyKFdURk1vdmUoZGF0YSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYnVmZmVyU291cmNlUGFyYW1ldGVyLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTkxOTIsOCArODc1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETEludGVyZmFjZTxO
b2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEs
ICJiIiwgIlRlc3RPYmplY3QiLCAidGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uIiwgIk5vZGUi
KTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RSZXR1cm5WYWx1
ZU9wdGltaXphdGlvbigqYSwgKmIpOworICAgIGludm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2Vw
dGlvbklmTmVjZXNzYXJ5KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC50ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oKmEsICpiKTsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudDAudmFsdWUoKSk7CiB9CiAKQEAgLTkyMDIs
MzEgKzg3NjMsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl90ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uQm9keShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZ
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1
dG8gYSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImEiLCAiVGVzdE9iamVjdCIsICJ0ZXN0UmV0
dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uIiwgIk5vZGUiKTsgfSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgxKTsKLSAgICBhdXRvIGIgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJiIiwgIlRlc3RPYmpl
Y3QiLCAidGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiIsICJOb2RlIik7
IH0pOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZXR1cm5WYWx1ZU9wdGlt
aXphdGlvbldpdGhFeGNlcHRpb24oKmEsICpiKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhcmd1bWVudDAudmFsdWUoKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhj
ZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0
aEV4Y2VwdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiIpOwotfQotCiBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC05MjM0LDkgKzg3
NzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24oKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbigpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyNTEs
OSArODc4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlv
bigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9u
KCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
OTI2OCw5ICs4ODAwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Fu
ZFdvcmtlckZ1bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRv
V2luZG93QW5kV29ya2VyRnVuY3Rpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
aW5kb3dBbmRXb3JrZXJGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05Mjg1LDkgKzg4MTUsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5sZWFkaW5nSHlwaGVuRnVuY3Rpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmxlYWRpbmdIeXBoZW5G
dW5jdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fZGFzaF9sZWFkaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfZnVuY3Rpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpAQCAtOTMwMiw5ICs4ODMwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudHJhaWxpbmdIeXBoZW5GdW5jdGlv
bigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwudHJhaWxpbmdIeXBoZW5GdW5jdGlvbigpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJh
aWxpbmdfZGFzaF9oeXBoZW5fZGFzaF9mdW5jdGlvbl9kYXNoXywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MzE5LDkgKzg4
NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24oKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLmxlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbGVhZGluZ191bmRl
cnNjb3JlX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkzMzYsOSArODg2MCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLl9kb3Vi
bGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5fZG91Ymxl
X2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZG91YmxlX2xlYWRpbmdfdW5k
ZXJzY29yZV9mdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MzUzLDkgKzg4NzUsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50cmFp
bGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXygpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudHJhaWxpbmdfdW5k
ZXJzY29yZV9mdW5jdGlvbl8oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3RyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25f
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTkzNzUsNyArODg5NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uID0gY29udmVy
dDxJRExBbGxvd1NoYXJlZEFkYXB0b3I8SURMVWludDhBcnJheT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZGVzdGluYXRpb24iLCAiVGVzdE9i
amVjdCIsICJlbmNvZGVJbnRvIiwgIlVpbnQ4QXJyYXkiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5l
bmNvZGVJbnRvKGRlc3RpbmF0aW9uLnJlbGVhc2VOb25OdWxsKCkpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5lbmNvZGVJbnRvKGRlc3RpbmF0
aW9uLnJlbGVhc2VOb25OdWxsKCkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5jb2RlSW50bywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MzkwLDcgKzg5
MTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVTVlN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGltcGwuc3RyaW5naWZpZXJBdHRyaWJ1dGUoKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVVNWU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdpZmllckF0
dHJpYnV0ZSgpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fdG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsOSArMTk1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubm9uQ29uZGl0aW9u
YWxPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm5vbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbFByb3RvdHlwZUZ1bmN0aW9uX25vbkNvbmRpdGlvbmFsT3BlcmF0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTIxNSw5ICsyMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbE9wZXJhdGlvbigpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwuY29uZGl0aW9uYWxPcGVyYXRpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlRnVuY3Rpb25f
Y29uZGl0aW9uYWxPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVy
ZmFjZS5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTQsNiArMTU0LDcgQEAgYm9vbCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldE93blByb3Bl
cgogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNl
Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBpZiAocGx1Z2luRWxlbWVudEN1c3RvbUdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBBU1NFUlQoc2xvdC5pc1Rh
aW50ZWRCeU9wYXF1ZU9iamVjdCgpKTsKQEAgLTE2Nyw2ICsxNjgsNyBAQCBib29sIEpTVGVzdFBs
dWdpbkludGVyZmFjZTo6Z2V0T3duUHJvcGVyCiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBs
dWdpbkludGVyZmFjZSo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
aW5kZXgpOwogICAgIGlmIChwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFBy
b21pc2VSZWplYwogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9taXNlPElETEFueT4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnByb21pc2Uo
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlz
ZTxJRExBbnk+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5wcm9t
aXNlKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRfcHJvbWlzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBrZXkgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KGZvcndhcmRHZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkR2V0VG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uX2dldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pihmb3J3YXJkSGFzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbl9oYXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2Vu
dHJpZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2tleXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl92YWx1ZXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjk2
LDcgKzI5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExBbnk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRv
TWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdU
Rk1vdmUoY2FsbGJhY2spKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9m
b3JFYWNoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvU2V0TGlrZSgqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRIYXNU
b1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBX
VEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVh
ZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25faGFzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTIyOCw3ICsyMjgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRy
aWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhp
cykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRF
bnRyaWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVk
VGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seVNl
dExpa2VQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI0Miw3ICsyNDIsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9T
ZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9T
ZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90
b3R5cGVGdW5jdGlvbl9rZXlzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb1NldExpa2UoKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvU2V0TGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVu
Y3Rpb25fdmFsdWVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTI3NSw3ICsyNzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oZm9yd2FyZEZvckVhY2hUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRGb3JFYWNoVG9TZXRMaWtlKCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxs
YmFjaykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlT
ZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNp
b24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMyw5ICszMjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNj
cmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmZ1
bmN0aW9uKFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmZ1bmN0aW9uKFdURk1vdmUo
dmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX2Z1bmN0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTM0MCw3ICszMzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmZ1bmN0aW9uUmV0dXJuaW5n
KCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLmZ1bmN0aW9uUmV0dXJuaW5nKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbl9mdW5jdGlvblJldHVybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
YXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRIYXNUb1NldExpa2UoKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkSGFzVG9TZXRMaWtl
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VQcm90
b3R5cGVGdW5jdGlvbl9oYXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb1NldExpa2UoKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEVudHJpZXNUb1NldExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9l
bnRyaWVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fa2V5cywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNjIs
NyArMjYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihm
b3J3YXJkVmFsdWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAq
Y2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGZvcndhcmRWYWx1ZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNl
dExpa2VQcm90b3R5cGVGdW5jdGlvbl92YWx1ZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvU2V0TGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2sp
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEZv
ckVhY2hUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRU
aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMDAsNyAr
MzAwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkQWRkVG9TZXRMaWtl
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2Fy
ZEFkZFRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fYWRkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMxNCw5ICszMTQsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGZvcndhcmRDbGVhclRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgKmNhc3RlZFRoaXMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndh
cmRDbGVhclRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3Rl
ZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVBy
b3RvdHlwZUZ1bmN0aW9uX2NsZWFyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMzNSw3ICszMzMsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBr
ZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb1NldExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRGVsZXRlVG9TZXRMaWtl
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VQcm90
b3R5cGVGdW5jdGlvbl9kZWxldGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksOSAr
MjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwuZGVsZXRlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5kZWxldGUoKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9kZWxldGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjcwLDcgKzI2
OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvU2V0TGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5
KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRI
YXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlz
LCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2hhcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC0yODQsNyArMjgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pihmb3J3YXJkRW50cmllc1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9u
X2VudHJpZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtMjk4LDcgKzI5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVG
dW5jdGlvbl9rZXlzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTMxMiw3ICszMTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb1NldExpa2UoKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvU2V0TGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1By
b3RvdHlwZUZ1bmN0aW9uX3ZhbHVlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMzEsNyArMzI5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
Y2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRGb3JFYWNoVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRv
U2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdU
Rk1vdmUoY2FsbGJhY2spKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTM0NSw5ICszNDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGZvcndhcmRDbGVhclRvU2V0TGlr
ZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRDbGVhclRvU2V0TGlrZSgqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlw
ZUZ1bmN0aW9uX2NsZWFyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkocmV2
aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW1wbC50b1N0cmluZygpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnRvU3RyaW5nKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC50b1N0
cmluZygpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLnRvU3RyaW5nKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHAJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pZGVudGlmaWVyKCkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaWRl
bnRpZmllcigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2lkZW50aWZpZXIsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
MTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pZGVudGlmaWVyKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3Bw
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5hbHRlcm5hdGVJZGVudGlm
aWVyKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVu
Y3Rpb25faWRlbnRpZmllciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xOTUsNyArMTk1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmFs
dGVybmF0ZUlkZW50aWZpZXIoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5hbHRlcm5hdGVJZGVudGlmaWVyKCkpKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXNQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2
aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwudG9TdHJpbmcoKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50b1N0cmluZygp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNw
cAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmlkZW50aWZpZXIoKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pZGVudGlm
aWVyKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmlkZW50aWZpZXIoKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pZGVu
dGlmaWVyKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsNyArODAsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RUCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uX3N0cmluZ1NlcXVlbmNlRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9zdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uMik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX2NhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJ
bmNsdWRlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvbik7CiAKIC8vIEF0dHJpYnV0ZXMK
IApAQCAtMjIzLDcgKzIyMiw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RU
eXBlZGUKICAgICB7ICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uX3N0cmluZ1NlcXVlbmNlRnVuY3Rpb24pLCAoaW50cHRyX3QpICgxKSB9IH0s
CiAgICAgeyAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25fc3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAg
ICAgeyAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25fY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUpLCAo
aW50cHRyX3QpICgxKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uKSwgKGludHB0cl90KSAo
MCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKSB9OwpAQCAtNDk5
LDkgKzQ5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBhdXRvIHggPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVy
dGVyPElETFNlcXVlbmNlPElETExvbmc+Pjo6UmV0dXJuVHlwZXsgfSA6IGNvbnZlcnQ8SURMU2Vx
dWVuY2U8SURMTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmZ1bmMoV1RGTW92ZSh4KSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC5mdW5jKFdURk1vdmUoeCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9mdW5jLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTUzMyw5ICs1MjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50NCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoNCk7CiAgICAgYXV0byBhbHBoYSA9IGFyZ3VtZW50NC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+OjpSZXR1cm5UeXBlPigp
IDogT3B0aW9uYWw8Q29udmVydGVyPElETFVucmVzdHJpY3RlZEZsb2F0Pjo6UmV0dXJuVHlwZT4o
Y29udmVydDxJRExVbnJlc3RyaWN0ZWRGbG9hdD4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50NC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnNldFNo
YWRvdyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3ZlKGJsdXIpLCBXVEZN
b3ZlKGNvbG9yKSwgV1RGTW92ZShhbHBoYSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2V0U2hhZG93KFdU
Rk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1ciksIFdURk1vdmUoY29s
b3IpLCBXVEZNb3ZlKGFscGhhKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX3NldFNoYWRvdywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NTUs
NyArNTQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElE
TFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBs
Lm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuc2ln
bmVkTG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhTZXF1ZW5jZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NzUsOSArNTY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc2VxdWVuY2VB
cmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5udWxsYWJsZVNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFy
ZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbl9udWxsYWJsZVNlcXVlbmNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU5Nyw5ICs1ODks
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnNlcXVlbmNlT2ZOdWxsYWJs
ZXNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2VxdWVuY2VPZk51
bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX3NlcXVlbmNlT2ZO
dWxsYWJsZXNBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNjE5LDkgKzYwOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHNlcXVlbmNlQXJn
ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExET01TdHJp
bmc+Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0Fy
ZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNl
T2ZOdWxsYWJsZXNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9udWxsYWJs
ZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjQxLDkgKzYyOSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRv
IHNlcXVlbmNlQXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExTZXF1ZW5jZTxJRExVbmlvbjxJ
RExET01TdHJpbmcsIElETFNlcXVlbmNlPElETERPTVN0cmluZz4+Pj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoV1RGTW92ZShzZXF1
ZW5jZUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9udWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNjYzLDkgKzY0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHVuaW9uQXJnID0gY29udmVydDxJRExVbmlvbjxJ
RExET01TdHJpbmcsIElETExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC51bmlvbkFyZyhXVEZN
b3ZlKHVuaW9uQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC51bmlvbkFyZyhXVEZNb3ZlKHVuaW9uQXJn
KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uX3VuaW9uQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY4OCw5ICs2NzIsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgYXV0byBhcmcyID0g
YXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExD
bGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9u
YWw8Q29udmVydGVyPElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj46OlJldHVy
blR5cGU+KGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwuZnVuY1dpdGhDbGFtcChXVEZNb3ZlKGFyZzEpLCBXVEZNb3ZlKGFy
ZzIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLmZ1bmNXaXRoQ2xhbXAoV1RGTW92ZShhcmcxKSwgV1RGTW92
ZShhcmcyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX2Z1bmNXaXRoQ2xhbXAsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzEwLDkgKzY5Miw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5mdW5jV2l0aENsYW1wSW5UeXBlZGVmKFdURk1vdmUoYXJnKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC5mdW5jV2l0aENsYW1wSW5UeXBlZGVmKFdURk1vdmUoYXJnKSk7IH0pKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uX2Z1bmNXaXRoQ2xhbXBJblR5cGVkZWYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzI3LDcgKzcwNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wb2ludEZ1
bmN0aW9uKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwucG9pbnRGdW5j
dGlvbigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbl9wb2ludEZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc4Nyw3ICs3NjcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFRl
c3RFdmVudFRhcmdldD4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEJvb2xlYW4+KGltcGwuY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RG
TW92ZShzZXF1ZW5jZUFyZykpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShXVEZN
b3ZlKHNlcXVlbmNlQXJnKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX2NhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJ
bmNsdWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTc5NSwyMyArNzc1LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdFR5cGVkZWZzUAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+
OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fY2FsbFdpdGhTZXF1ZW5jZVRo
YXRSZXF1aXJlc0luY2x1ZGVCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
ImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX21l
dGhvZFdpdGhFeGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RX
aXRoRXhjZXB0aW9uKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aEV4Y2VwdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RUeXBlZGVmczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaWRsCShyZXZpc2lvbiAyNzQ3
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNiBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAg
ICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQ1NTR3JvdXBpbmdSdWxlIDogQ1NTUnVsZSB7
CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxl
czsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShDU1NP
TVN0cmluZyBydWxlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoQ1NTT01TdHJpbmcgcnVsZSwgb3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIHVuZGVmaW5lZCBkZWxldGVSdWxlKHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBA
QAogICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eSk7CiAg
ICAgLy8gRklYTUU6IFRoZSByZXR1cm4gdmFsdWUgb2YgJ2dldFByb3BlcnR5UHJpb3JpdHknIHNo
b3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgRE9NU3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5
KERPTVN0cmluZyBwcm9wZXJ0eSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eSwgW0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVy
dHkpOworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBw
cm9wZXJ0eSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9wdGlv
bmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOwor
ICAgIFtDRVJlYWN0aW9uc10gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9w
ZXJ0eSk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGU/IHBhcmVudFJ1bGU7CiAgICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgY3NzRmxvYXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwJKHJl
dmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjIsMTEgKzIyLDExIEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIENTU1N0eWxlU2hlZXQgOiBTdHlsZVNoZWV0IHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQ1NTUnVsZSBvd25lclJ1bGU7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPWNzc1J1bGVzRm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlz
dCBjc3NSdWxlczsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0
UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgW0ltcGxlbWVudGVkQXM9Y3NzUnVsZXNGb3JCaW5kaW5nc10gcmVhZG9u
bHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IGNzc1J1bGVzOworICAgIHVuc2lnbmVkIGxvbmcgaW5z
ZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDAp
OworICAgIHVuZGVmaW5lZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJ1bGVzRm9yQmluZGluZ3NdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBydWxlczsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IGxvbmcgYWRkUnVsZShvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0b3IgPSAidW5kZWZpbmVkIiwg
b3B0aW9uYWwgRE9NU3RyaW5nIHN0eWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVJ1
bGUob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIFtJbXBsZW1lbnRlZEFz
PXJ1bGVzRm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBydWxlczsK
KyAgICBsb25nIGFkZFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5l
ZCIsIG9wdGlvbmFsIERPTVN0cmluZyBzdHlsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlUnVsZShvcHRpb25hbCB1bnNp
Z25lZCBsb25nIGluZGV4ID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RPTUNT
U05hbWVzcGFjZStDU1NQcm9wZXJ0aWVzYW5kVmFsdWVzLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NQ1NTTmFtZXNwYWNlK0NTU1Byb3BlcnRpZXNhbmRWYWx1ZXMuaWRs
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTTmFtZXNwYWNl
K0NTU1Byb3BlcnRpZXNhbmRWYWx1ZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1ICsyOCw1
IEBACiAgICAgRW5hYmxlZEJ5U2V0dGluZz1DU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzLAog
ICAgIEltcGxlbWVudGVkQnk9RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eQogXSBwYXJ0aWFs
IGludGVyZmFjZSBET01DU1NOYW1lc3BhY2UgewotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5
VGhyb3dFeGNlcHRpb25dIHN0YXRpYyB1bmRlZmluZWQgcmVnaXN0ZXJQcm9wZXJ0eShET01DU1ND
dXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSBzdGF0aWMgdW5kZWZpbmVkIHJlZ2lzdGVyUHJvcGVydHkoRE9NQ1NTQ3VzdG9tUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9E
T01NYXRyaXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXgu
aWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogXSBpbnRlcmZhY2UgRE9NTWF0cml4
IDogRE9NTWF0cml4UmVhZE9ubHkgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPHVucmVzdHJp
Y3RlZCBkb3VibGU+KSBpbml0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0
XSBzdGF0aWMgRE9NTWF0cml4IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhl
cik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXgg
ZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0NjRBcnJheShGbG9h
dDY0QXJyYXkgYXJyYXk2NCk7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9t
TWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOworICAgIFtOZXdPYmplY3RdIHN0
YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7Cisg
ICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQ2NEFycmF5KEZsb2F0NjRB
cnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBsZSBhbGlh
c2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4CiAgICAgaW5oZXJpdCBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAvLyBBbGlhcyBmb3IgbTExLgpAQCAtNjIs
OCArNjIsOCBAQAogICAgIGluaGVyaXQgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbTQ0
OwogCiAgICAgLy8gTXV0YWJsZSB0cmFuc2Zvcm0gbWV0aG9kcwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NTWF0cml4IG11bHRpcGx5U2VsZihvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVy
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTU1hdHJpeCBwcmVNdWx0aXBseVNlbGYob3B0
aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgRE9NTWF0cml4IG11bHRpcGx5U2VsZihv
cHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBET01NYXRyaXggcHJlTXVsdGlwbHlT
ZWxmKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwogICAgIERPTU1hdHJpeCB0cmFuc2xh
dGVTZWxmKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgdHggPSAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgdHkgPSAwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgdHog
PSAwKTsKQEAgLTkwLDUgKzkwLDUgQEAKICAgICBET01NYXRyaXggc2tld1lTZWxmKG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBkb3VibGUgc3kgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAg
ICBET01NYXRyaXggaW52ZXJ0U2VsZigpOwogCi0gICAgW0V4cG9zZWQ9V2luZG93LCBNYXlUaHJv
d0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1zZXRNYXRyaXhWYWx1ZUZvckJpbmRpbmdzXSBET01N
YXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRyYW5zZm9ybUxpc3QpOworICAgIFtFeHBv
c2VkPVdpbmRvdywgSW1wbGVtZW50ZWRBcz1zZXRNYXRyaXhWYWx1ZUZvckJpbmRpbmdzXSBET01N
YXRyaXggc2V0TWF0cml4VmFsdWUoRE9NU3RyaW5nIHRyYW5zZm9ybUxpc3QpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOSArMzAsOSBAQAogXSBpbnRlcmZhY2UgRE9NTWF0cml4UmVhZE9ubHkgewog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25h
bCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPHVucmVzdHJpY3RlZCBkb3VibGU+KSBpbml0KTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9u
bHkgZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9h
dDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5MzIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0NjRBcnJheShGbG9h
dDY0QXJyYXkgYXJyYXk2NCk7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRP
bmx5IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgW05ld09i
amVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9hdDMyQXJyYXkoRmxvYXQzMkFy
cmF5IGFycmF5MzIpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBm
cm9tRmxvYXQ2NEFycmF5KEZsb2F0NjRBcnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0
dHJpYnV0ZXMgYXJlIHNpbXBsZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0
eDQgbWF0cml4CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYTsg
Ly8gQWxpYXMgZm9yIG0xMS4KQEAgLTg3LDE1ICs4NywxNSBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBhbmds
ZSA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAgIFtOZXdPYmplY3RdIERPTU1hdHJp
eCBza2V3WChvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlz
IGluIGRlZ3JlZXMuCiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IHNrZXdZKG9wdGlvbmFsIHVu
cmVzdHJpY3RlZCBkb3VibGUgc3kgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KLSAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRE9NTWF0cml4IG11bHRpcGx5KG9wdGlvbmFs
IERPTU1hdHJpeEluaXQgb3RoZXIpOworICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBtdWx0aXBs
eShvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKICAgICBbTmV3T2JqZWN0XSBET01NYXRy
aXggZmxpcFgoKTsKICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggZmxpcFkoKTsKICAgICBbTmV3
T2JqZWN0XSBET01NYXRyaXggaW52ZXJzZSgpOwogCiAgICAgW05ld09iamVjdF0gRE9NUG9pbnQg
dHJhbnNmb3JtUG9pbnQob3B0aW9uYWwgRE9NUG9pbnRJbml0IHBvaW50KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIEZsb2F0MzJBcnJheSB0b0Zsb2F0MzJBcnJheSgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRmxvYXQ2NEFycmF5IHRvRmxvYXQ2NEFycmF5KCk7CisgICAgRmxvYXQzMkFy
cmF5IHRvRmxvYXQzMkFycmF5KCk7CisgICAgRmxvYXQ2NEFycmF5IHRvRmxvYXQ2NEFycmF5KCk7
CiAKLSAgICBbRXhwb3NlZD1XaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSBzdHJpbmdpZmllcjsK
KyAgICBbRXhwb3NlZD1XaW5kb3ddIHN0cmluZ2lmaWVyOwogICAgIFtEZWZhdWx0XSBvYmplY3Qg
dG9KU09OKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVBy
aW1pdGl2ZVZhbHVlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMyArNTYsMTMgQEAKICAgICAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHNldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAw
LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9IE5hTik7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0RmxvYXRWYWx1ZShvcHRpb25h
bCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOworICAgIHVuZGVmaW5lZCBzZXRGbG9hdFZh
bHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCwgb3B0aW9uYWwgdW5yZXN0
cmljdGVkIGZsb2F0IGZsb2F0VmFsdWUgPSBOYU4pOworICAgIHVucmVzdHJpY3RlZCBmbG9hdCBn
ZXRGbG9hdFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCk7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdHJpbmdWYWx1ZShvcHRpb25hbCB1
bnNpZ25lZCBzaG9ydCBzdHJpbmdUeXBlID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZ1Zh
bHVlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBnZXRTdHJpbmdWYWx1ZSgp
OworICAgIHVuZGVmaW5lZCBzZXRTdHJpbmdWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBz
dHJpbmdUeXBlID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlKTsKKyAgICBET01T
dHJpbmcgZ2V0U3RyaW5nVmFsdWUoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGVwcmVj
YXRlZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIERlcHJlY2F0ZWRDU1NPTVJlY3QgZ2V0UmVjdFZhbHVlKCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBnZXRSR0JDb2xvclZhbHVlKCk7CisgICAg
RGVwcmVjYXRlZENTU09NQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKKyAgICBEZXByZWNhdGVk
Q1NTT01SZWN0IGdldFJlY3RWYWx1ZSgpOworICAgIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yIGdl
dFJHQkNvbG9yVmFsdWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwJ
KHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBGb250RmFjZVNldExvYWRTdGF0
dXMgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkaW5nZXJyb3I7CiAKICAgICBQ
cm9taXNlPHNlcXVlbmNlPEZvbnRGYWNlPj4gbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9uYWwg
RE9NU3RyaW5nIHRleHQgPSAiICIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBj
aGVjayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiICIpOworICAg
IGJvb2xlYW4gY2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0g
IiAiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPEZvbnRGYWNlU2V0PiByZWFk
eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1czsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NiBAQAogCiAgICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0ZU1lZGl1bShET01TdHJp
bmcgb2xkTWVkaXVtKTsKKyAgICB1bmRlZmluZWQgZGVsZXRlTWVkaXVtKERPTVN0cmluZyBvbGRN
ZWRpdW0pOwogICAgIHVuZGVmaW5lZCBhcHBlbmRNZWRpdW0oRE9NU3RyaW5nIG5ld01lZGl1bSk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2lnbmFsLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaWRsCShyZXZpc2lvbiAyNzQ3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAgICAgUHJpdmF0ZUlkZW50aWZpZXIsCiAgICAgUHVibGljSWRlbnRp
ZmllcgogXSBpbnRlcmZhY2UgQWJvcnRTaWduYWwgOiBFdmVudFRhcmdldCB7Ci0gICAgWyBQcml2
YXRlSWRlbnRpZmllciBdIHN0YXRpYyB1bmRlZmluZWQgd2hlblNpZ25hbEFib3J0ZWQoQWJvcnRT
aWduYWwgb2JqZWN0LCBBYm9ydEFsZ29yaXRobSBhbGdvcml0aG0pOworICAgIFtQcml2YXRlSWRl
bnRpZmllcl0gc3RhdGljIGJvb2xlYW4gd2hlblNpZ25hbEFib3J0ZWQoQWJvcnRTaWduYWwgb2Jq
ZWN0LCBBYm9ydEFsZ29yaXRobSBhbGdvcml0aG0pOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gYWJvcnRlZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYWJvcnQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDExICsyMiwxMSBAQAogXSBpbnRlcmZhY2UgQ2hhcmFjdGVyRGF0YSA6IE5vZGUgewogICAg
IGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBkYXRhOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1
bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBET01TdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25l
ZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgdW5kZWZpbmVkIGFwcGVu
ZERhdGEoRE9NU3RyaW5nIGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IGluc2VydERhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIERPTVN0cmluZyBkYXRhKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVEYXRhKHVuc2lnbmVkIGxvbmcgb2Zm
c2V0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCByZXBsYWNlRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3Vu
dCwgRE9NU3RyaW5nIGRhdGEpOworICAgIHVuZGVmaW5lZCBpbnNlcnREYXRhKHVuc2lnbmVkIGxv
bmcgb2Zmc2V0LCBET01TdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIGRlbGV0ZURhdGEodW5z
aWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIHVuZGVmaW5lZCBy
ZXBsYWNlRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCwgRE9N
U3RyaW5nIGRhdGEpOwogfTsKIAogQ2hhcmFjdGVyRGF0YSBpbmNsdWRlcyBDaGlsZE5vZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDgg
QEAKIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjaGlsZG5vZGUKIGludGVyZmFj
ZSBtaXhpbiBDaGlsZE5vZGUgewotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBiZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rl
cyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0
aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXBsYWNlV2l0
aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2Nv
cGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlKCk7CisgICAgW0NFUmVh
Y3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmluZWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZyku
Li4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdW5kZWZpbmVkIGFmdGVy
KChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29w
YWJsZV0gdW5kZWZpbmVkIHJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMp
OworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdW5kZWZpbmVkIHJlbW92ZSgpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCShy
ZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNiBAQAogXSBpbnRlcmZhY2UgQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5IHsKICAgICBbQ0VSZWFjdGlvbnMsIEN1c3RvbV0gdW5kZWZpbmVk
IGRlZmluZShET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3IpOwogICAgIGFueSBn
ZXQoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uLCBSZXR1
cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx1bmRlZmluZWQ+IHdoZW5EZWZpbmVkKERPTVN0cmluZyBu
YW1lKTsKKyAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx1bmRlZmluZWQ+
IHdoZW5EZWZpbmVkKERPTVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5l
ZCB1cGdyYWRlKE5vZGUgcm9vdCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRl
cmZhY2UgRE9NSW1wbGVtZW50YXRpb24gewotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0
aW9uXSBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lLCBET01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBzeXN0ZW1JZCk7Ci0gICAgW05ld09i
amVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0
cmluZz8gbmFtZXNwYWNlVVJJLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAg
ICBbTmV3T2JqZWN0XSBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBET01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBzeXN0ZW1JZCk7Cisg
ICAgW05ld09iamVjdF0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOwogICAgIFtOZXdPYmpl
Y3RdIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1MRG9jdW1lbnQob3B0aW9uYWwgRE9NU3RyaW5nIHRp
dGxlKTsKIAogICAgIGJvb2xlYW4gaGFzRmVhdHVyZSgpOyAvLyBVc2VsZXNzOyBhbHdheXMgcmV0
dXJucyB0cnVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Qb2ludFJlYWRPbmx5LmlkbAko
cmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9ubHku
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgejsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0
cmljdGVkIGRvdWJsZSB3OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01Qb2ludCBtYXRy
aXhUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBtYXRyaXgpOworICAgIERPTVBvaW50
IG1hdHJpeFRyYW5zZm9ybShvcHRpb25hbCBET01NYXRyaXhJbml0IG1hdHJpeCk7CiAKICAgICBb
RGVmYXVsdF0gb2JqZWN0IHRvSlNPTigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MTAgKzM4LDEwIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbGVuZ3RoOwogICAgIGdl
dHRlciBEYXRhVHJhbnNmZXJJdGVtIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERhdGFUcmFuc2Zlckl0ZW0/IGFkZChET01TdHJpbmcgZGF0YSwg
RE9NU3RyaW5nIHR5cGUpOworICAgIERhdGFUcmFuc2Zlckl0ZW0/IGFkZChET01TdHJpbmcgZGF0
YSwgRE9NU3RyaW5nIHR5cGUpOwogICAgIERhdGFUcmFuc2Zlckl0ZW0/IGFkZChGaWxlIGZpbGUp
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworICAgIHVuZGVmaW5lZCByZW1vdmUodW5zaWduZWQgbG9uZyBpbmRleCk7CiAK
ICAgICB1bmRlZmluZWQgY2xlYXIoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQrSFRNTC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
K0hUTUwuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQrSFRNTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDExICs1OCwxMSBAQCBwYXJ0aWFsIGlu
dGVyZmFjZSBEb2N1bWVudCB7CiAgICAgLy8gRklYTUU6IFRoZSBIVE1MIHNwZWMgc2F5cyB0aGlz
IHNob3VsZCBjb25zdWx0IHRoZSAicmVzcG9uc2libGUgZG9jdW1lbnQiLiBXZSBzaG91bGQgZW5z
dXJlCiAgICAgLy8gdGhhdCB0aGUgY2FsbGVyIGRvY3VtZW50IG1hdGNoZXMgdGhvc2Ugc2VtYW50
aWNzLiBJdCBpcyBwb3NzaWJsZSB3ZSBzaG91bGQgcmVwbGFjZSBpdCB3aXRoCiAgICAgLy8gdGhl
IGV4aXN0aW5nICdpbmN1bWJlbnQgZG9jdW1lbnQnIGNvbmNlcHQuCi0gICAgW0NFUmVhY3Rpb25z
LCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5k
aW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IG9wZW4ob3B0aW9uYWwgRE9NU3RyaW5n
IHVudXNlZDEsIG9wdGlvbmFsIERPTVN0cmluZyB1bnVzZWQyKTsgLy8gYm90aCBhcmd1bWVudHMg
YXJlIGlnbm9yZWQuCi0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgSW1w
bGVtZW50ZWRBcz1vcGVuRm9yQmluZGluZ3MsIE1heVRocm93RXhjZXB0aW9uXSBXaW5kb3dQcm94
eSBvcGVuKFVTVlN0cmluZyB1cmwsIERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMp
OwotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBDYWxs
V2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHdy
aXRlKERPTVN0cmluZy4uLiB0ZXh0KTsKLSAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3Bv
bnNpYmxlRG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgd3JpdGVsbihET01T
dHJpbmcuLi4gdGV4dCk7CisgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURv
Y3VtZW50LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5nc10gRG9jdW1lbnQgb3BlbihvcHRp
b25hbCBET01TdHJpbmcgdW51c2VkMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHVudXNlZDIpOyAvLyBi
b3RoIGFyZ3VtZW50cyBhcmUgaWdub3JlZC4KKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZp
cnN0V2luZG93LCBJbXBsZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5nc10gV2luZG93UHJveHkgb3Bl
bihVU1ZTdHJpbmcgdXJsLCBET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIGZlYXR1cmVzKTsKKyAg
ICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9Y2xvc2VGb3JCaW5kaW5nc10gdW5kZWZpbmVk
IGNsb3NlKCk7CisgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50
XSB1bmRlZmluZWQgd3JpdGUoRE9NU3RyaW5nLi4uIHRleHQpOworICAgIFtDRVJlYWN0aW9ucywg
Q2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudF0gdW5kZWZpbmVkIHdyaXRlbG4oRE9NU3RyaW5n
Li4uIHRleHQpOwogCiAgICAgLy8gdXNlciBpbnRlcmFjdGlvbgogICAgIFtJbXBsZW1lbnRlZEFz
PXdpbmRvd1Byb3h5XSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IGRlZmF1bHRWaWV3
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50K1N0b3JhZ2VBY2Nlc3MuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudCtTdG9yYWdlQWNjZXNzLmlk
bAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50K1N0b3Jh
Z2VBY2Nlc3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw2IEBACiAgICAgRW5hYmxl
ZEJ5U2V0dGluZz1zdG9yYWdlQWNjZXNzQVBJLAogICAgIEltcGxlbWVudGVkQnk9RG9jdW1lbnRT
dG9yYWdlQWNjZXNzCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKLSAgICBQcm9taXNl
PGJvb2w+IGhhc1N0b3JhZ2VBY2Nlc3MoKTsKKyAgICBQcm9taXNlPGJvb2xlYW4+IGhhc1N0b3Jh
Z2VBY2Nlc3MoKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYxLDIx
ICs2MSwyMSBAQCB0eXBlZGVmIChIVE1MU2NyaXB0RWxlbWVudCBvciBTVkdTY3JpcHRFCiAgICAg
SFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhET01TdHJpbmc/IG5hbWVzcGFj
ZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAgICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZShET01TdHJpbmcgY2xhc3NOYW1lcyk7CiAKLSAgICBbTmV3T2JqZWN0LCBN
YXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jcmVhdGVFbGVtZW50Rm9yQmluZGluZ3Nd
IEVsZW1lbnQgY3JlYXRlRWxlbWVudChET01TdHJpbmcgbG9jYWxOYW1lKTsgLy8gRklYTUU6IG1p
c3Npbmcgb3B0aW9ucyBwYXJhbWV0ZXIuCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRp
b25dIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSk7IC8vIEZJWE1FOiBtaXNzaW5nIG9wdGlvbnMgcGFyYW1ldGVy
LgorICAgIFtOZXdPYmplY3QsIEltcGxlbWVudGVkQXM9Y3JlYXRlRWxlbWVudEZvckJpbmRpbmdz
XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoRE9NU3RyaW5nIGxvY2FsTmFtZSk7IC8vIEZJWE1FOiBt
aXNzaW5nIG9wdGlvbnMgcGFyYW1ldGVyLgorICAgIFtOZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRl
RWxlbWVudE5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSk7IC8vIEZJWE1FOiBtaXNzaW5nIG9wdGlvbnMgcGFyYW1ldGVyLgogICAgIFtOZXdPYmplY3Rd
IERvY3VtZW50RnJhZ21lbnQgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIFtOZXdPYmpl
Y3RdIFRleHQgY3JlYXRlVGV4dE5vZGUoRE9NU3RyaW5nIGRhdGEpOwotICAgIFtOZXdPYmplY3Qs
IE1heVRocm93RXhjZXB0aW9uXSBDREFUQVNlY3Rpb24gY3JlYXRlQ0RBVEFTZWN0aW9uKERPTVN0
cmluZyBkYXRhKTsKKyAgICBbTmV3T2JqZWN0XSBDREFUQVNlY3Rpb24gY3JlYXRlQ0RBVEFTZWN0
aW9uKERPTVN0cmluZyBkYXRhKTsKICAgICBbTmV3T2JqZWN0XSBDb21tZW50IGNyZWF0ZUNvbW1l
bnQoRE9NU3RyaW5nIGRhdGEpOwotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKERPTVN0cmlu
ZyB0YXJnZXQsIERPTVN0cmluZyBkYXRhKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKERPTVN0cmluZyB0YXJnZXQsIERP
TVN0cmluZyBkYXRhKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24sIE5l
d09iamVjdF0gTm9kZSBpbXBvcnROb2RlKE5vZGUgbm9kZSwgb3B0aW9uYWwgYm9vbGVhbiBkZWVw
ID0gZmFsc2UpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgYWRv
cHROb2RlKE5vZGUgbm9kZSk7CisgICAgW0NFUmVhY3Rpb25zLCBOZXdPYmplY3RdIE5vZGUgaW1w
b3J0Tm9kZShOb2RlIG5vZGUsIG9wdGlvbmFsIGJvb2xlYW4gZGVlcCA9IGZhbHNlKTsKKyAgICBb
Q0VSZWFjdGlvbnNdIE5vZGUgYWRvcHROb2RlKE5vZGUgbm9kZSk7CiAKLSAgICBbTmV3T2JqZWN0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciBjcmVhdGVBdHRyaWJ1dGUoRE9NU3RyaW5nIGxvY2Fs
TmFtZSk7Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgY3JlYXRlQXR0
cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
KTsKKyAgICBbTmV3T2JqZWN0XSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZShET01TdHJpbmcgbG9jYWxO
YW1lKTsKKyAgICBbTmV3T2JqZWN0XSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb24sIE5ld09iamVjdF0gRXZlbnQgY3JlYXRlRXZlbnQoRE9NU3RyaW5nIHR5cGUpOwor
ICAgIFtOZXdPYmplY3RdIEV2ZW50IGNyZWF0ZUV2ZW50KERPTVN0cmluZyB0eXBlKTsKIAogICAg
IFtOZXdPYmplY3RdIFJhbmdlIGNyZWF0ZVJhbmdlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudCtET01QYXJzaW5nLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NSArMjYsNSBAQAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNp
b25zLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZQogcGFydGlhbCBpbnRlcmZhY2UgRWxlbWVudCB7
CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBE
T01TdHJpbmcgb3V0ZXJIVE1MOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBpbnNlcnRBZGphY2VudEhUTUwoRE9NU3RyaW5nIHBvc2l0aW9uLCBET01TdHJp
bmcgdGV4dCk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNlbnRIVE1M
KERPTVN0cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsCShyZXZpc2lvbiAyNzQ3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudCtQb2ludGVyRXZlbnRzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vcG9p
bnRlcmV2ZW50cy8jZXh0ZW5zaW9ucy10by10aGUtZWxlbWVudC1pbnRlcmZhY2UKIHBhcnRpYWwg
aW50ZXJmYWNlIEVsZW1lbnQgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNl
dFBvaW50ZXJDYXB0dXJlIChsb25nIHBvaW50ZXJJZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgcmVsZWFzZVBvaW50ZXJDYXB0dXJlIChsb25nIHBvaW50ZXJJZCk7CisgICAg
dW5kZWZpbmVkIHNldFBvaW50ZXJDYXB0dXJlIChsb25nIHBvaW50ZXJJZCk7CisgICAgdW5kZWZp
bmVkIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSAobG9uZyBwb2ludGVySWQpOwogICAgIGJvb2xlYW4g
aGFzUG9pbnRlckNhcHR1cmUgKGxvbmcgcG9pbnRlcklkKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWRO
YW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IEF0
b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKTsKKyAg
ICAvLyBCaW5kaW5ncyB2YXJpYW50cyBvZiB0aGUgYWJvdmUgdHdvIGZ1bmN0aW9ucyB0aGF0IGhh
dmUgdGhlIGNvcnJlY3QgcmV0dXJuIHR5cGUuCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlQXR0cmli
dXRlRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgeyByZW1vdmVB
dHRyaWJ1dGUocXVhbGlmaWVkTmFtZSk7IH0KKyAgICBpbmxpbmUgdm9pZCByZW1vdmVBdHRyaWJ1
dGVOU0ZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lKSB7IHJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lKTsgfQogCiAgICAgUmVmPEF0dHI+IGRldGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRl
eCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsMzMgKzQy
LDMzIEBACiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRBdHRyaWJ1dGVOYW1lcygpOwogICAg
IFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxp
ZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLSAgICBbQ0VSZWFjdGlvbnNd
IHVuZGVmaW5lZCByZW1vdmVBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwotICAg
IFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHJlbW92ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFt
ZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRo
cm93RXhjZXB0aW9uXSBib29sZWFuIHRvZ2dsZUF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwgb3B0aW9uYWwgYm9vbGVhbiBmb3JjZSk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmlu
ZWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUp
OworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsK
KyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9cmVtb3ZlQXR0cmlidXRlRm9yQmluZGlu
Z3NdIHVuZGVmaW5lZCByZW1vdmVBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwor
ICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1yZW1vdmVBdHRyaWJ1dGVOU0ZvckJpbmRp
bmdzXSB1bmRlZmluZWQgcmVtb3ZlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IERPTVN0cmluZyBsb2NhbE5hbWUpOworICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiB0b2dnbGVB
dHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2Up
OwogICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAg
ICBib29sZWFuIGhhc0F0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJp
bmcgbG9jYWxOYW1lKTsKIAogICAgIFtET01KSVQ9UmVhZERPTV0gQXR0cj8gZ2V0QXR0cmlidXRl
Tm9kZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9k
ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBb
Q0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0
dHIgYXR0cik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0
QXR0cmlidXRlTm9kZU5TKEF0dHIgYXR0cik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKEF0dHIgYXR0cik7CisgICAgW0NFUmVh
Y3Rpb25zXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0dHIgYXR0cik7CisgICAgW0NFUmVhY3Rp
b25zXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlv
bnNdIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIGF0dHIpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhTaGFkb3dSb290SW5pdCBpbml0KTsK
KyAgICBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhTaGFkb3dSb290SW5pdCBpbml0KTsKICAgICBb
SW1wbGVtZW50ZWRBcz1zaGFkb3dSb290Rm9yQmluZGluZ3MsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gcmVhZG9ubHkgYXR0cmlidXRlIFNoYWRvd1Jvb3Q/IHNoYWRvd1Jvb3Q7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEVsZW1lbnQ/IGNsb3Nlc3QoRE9NU3RyaW5nIHNlbGVjdG9ycyk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIG1hdGNoZXMoRE9NU3RyaW5nIHNlbGVjdG9y
cyk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bWF0Y2hlcywgTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xl
YW4gd2Via2l0TWF0Y2hlc1NlbGVjdG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOyAvLyBIaXN0b3Jp
Y2FsIGFsaWFzIG9mIC5tYXRjaGVzLgorICAgIEVsZW1lbnQ/IGNsb3Nlc3QoRE9NU3RyaW5nIHNl
bGVjdG9ycyk7CisgICAgYm9vbGVhbiBtYXRjaGVzKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAg
IFtJbXBsZW1lbnRlZEFzPW1hdGNoZXNdIGJvb2xlYW4gd2Via2l0TWF0Y2hlc1NlbGVjdG9yKERP
TVN0cmluZyBzZWxlY3RvcnMpOyAvLyBIaXN0b3JpY2FsIGFsaWFzIG9mIC5tYXRjaGVzLgogCiAg
ICAgW0RPTUpJVD1SZWFkRE9NXSBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZShE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNC
eVRhZ05hbWVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7
CiAgICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShET01TdHJpbmcgbmFt
ZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBpbnNl
cnRBZGphY2VudEVsZW1lbnQoRE9NU3RyaW5nIHdoZXJlLCBFbGVtZW50IGVsZW1lbnQpOyAvLyBI
aXN0b3JpY2FsLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGluc2VydEFkamFj
ZW50VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBkYXRhKTsgLy8gSGlzdG9yaWNhbC4K
KyAgICBbQ0VSZWFjdGlvbnNdIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJp
bmcgd2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCisgICAgdW5kZWZpbmVk
IGluc2VydEFkamFjZW50VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBkYXRhKTsgLy8g
SGlzdG9yaWNhbC4KIAogICAgIAogICAgIC8vIEZJWE1FOiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcg
bm9uLXN0YW5kYXJkIGV2ZW50IGhhbmRsZXJzIHByb2JhYmx5IG1ha2UgbW9yZSBzZW5zZSBhcyBw
YXJ0IG9mIHRoZSBHbG9iYWxFdmVudEhhbmRsZXJzIG1peGluLgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiAKICAgICBb
SW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHVuZGVmaW5lZCBhZGRF
dmVudExpc3RlbmVyKFtBdG9tU3RyaW5nXSBET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lcj8g
Y2FsbGJhY2ssIG9wdGlvbmFsIChBZGRFdmVudExpc3RlbmVyT3B0aW9ucyBvciBib29sZWFuKSBv
cHRpb25zID0gZmFsc2UpOwogICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJG
b3JCaW5kaW5nc10gdW5kZWZpbmVkIHJlbW92ZUV2ZW50TGlzdGVuZXIoW0F0b21TdHJpbmddIERP
TVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBjYWxsYmFjaywgb3B0aW9uYWwgKEV2ZW50TGlz
dGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7Ci0gICAgW0ltcGxlbWVu
dGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVh
biBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRj
aEV2ZW50Rm9yQmluZGluZ3NdIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw4ICszMSw4IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9t
TWFya0Z1bmN0aW9uLAogXSBpbnRlcmZhY2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0g
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBw
b3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zlcik7Ci0gICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMp
OworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkg
bWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zlcik7CisgICAgW0NhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0
TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgdW5kZWZpbmVkIHN0YXJ0KCk7CiAgICAgdW5k
ZWZpbmVkIGNsb3NlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogXSBpbnRlcmZhY2Ug
TXV0YXRpb25PYnNlcnZlciB7CiAgICAgY29uc3RydWN0b3IoTXV0YXRpb25DYWxsYmFjayBjYWxs
YmFjayk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBvYnNlcnZlKE5vZGUg
dGFyZ2V0LCBvcHRpb25hbCBNdXRhdGlvbk9ic2VydmVySW5pdCBvcHRpb25zKTsKKyAgICB1bmRl
ZmluZWQgb2JzZXJ2ZShOb2RlIHRhcmdldCwgb3B0aW9uYWwgTXV0YXRpb25PYnNlcnZlckluaXQg
b3B0aW9ucyk7CiAgICAgdW5kZWZpbmVkIGRpc2Nvbm5lY3QoKTsKICAgICBbUmVzdWx0RmllbGQ9
cmVjb3Jkc10gc2VxdWVuY2U8TXV0YXRpb25SZWNvcmQ+IHRha2VSZWNvcmRzKCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4
ICsyOSw4IEBACiAgICAgZ2V0dGVyIEF0dHI/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAg
ICAgZ2V0dGVyIEF0dHI/IGdldE5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAg
ICAgQXR0cj8gZ2V0TmFtZWRJdGVtTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmlu
ZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/
IHNldE5hbWVkSXRlbShBdHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb24sIEltcGxlbWVudGVkQXM9c2V0TmFtZWRJdGVtXSBBdHRyPyBzZXROYW1lZEl0ZW1OUyhB
dHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVt
b3ZlTmFtZWRJdGVtKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFt
ZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIEF0dHI/
IHNldE5hbWVkSXRlbShBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRB
cz1zZXROYW1lZEl0ZW1dIEF0dHI/IHNldE5hbWVkSXRlbU5TKEF0dHIgYXR0cik7CisgICAgW0NF
UmVhY3Rpb25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7
CisgICAgW0NFUmVhY3Rpb25zXSBBdHRyIHJlbW92ZU5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFt
ZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRs
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBE
T01TdHJpbmc/IHRleHRDb250ZW50OwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIG5vcm1h
bGl6ZSgpOwogCi0gICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb25lTm9kZUZvckJp
bmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBOb2RlIGNsb25lTm9kZShvcHRp
b25hbCBib29sZWFuIGRlZXAgPSBmYWxzZSk7CisgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRl
ZEFzPWNsb25lTm9kZUZvckJpbmRpbmdzLCBOZXdPYmplY3RdIE5vZGUgY2xvbmVOb2RlKG9wdGlv
bmFsIGJvb2xlYW4gZGVlcCA9IGZhbHNlKTsKICAgICBib29sZWFuIGlzRXF1YWxOb2RlKE5vZGU/
IG90aGVyKTsKICAgICBib29sZWFuIGlzU2FtZU5vZGUoTm9kZT8gb3RoZXIpOyAvLyBIaXN0b3Jp
Y2FsIGFsaWFzIG9mID09PS4KIApAQCAtNzgsMTAgKzc4LDEwIEBACiAgICAgRE9NU3RyaW5nPyBs
b29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwogICAgIGJvb2xlYW4gaXNEZWZh
dWx0TmFtZXNwYWNlKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJKTsKIAotICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgaW5zZXJ0QmVmb3JlKFtSZXR1cm5WYWx1ZV0gTm9k
ZSBub2RlLCBOb2RlPyBjaGlsZCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gTm9kZSBhcHBlbmRDaGlsZChbUmV0dXJuVmFsdWVdIE5vZGUgbm9kZSk7Ci0gICAgW0NFUmVh
Y3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSByZXBsYWNlQ2hpbGQoTm9kZSBub2RlLCBb
UmV0dXJuVmFsdWVdIE5vZGUgY2hpbGQpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIE5vZGUgcmVtb3ZlQ2hpbGQoW1JldHVyblZhbHVlXSBOb2RlIGNoaWxkKTsKKyAgICBb
Q0VSZWFjdGlvbnNdIE5vZGUgaW5zZXJ0QmVmb3JlKFtSZXR1cm5WYWx1ZV0gTm9kZSBub2RlLCBO
b2RlPyBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIGFwcGVuZENoaWxkKFtSZXR1cm5W
YWx1ZV0gTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIE5vZGUgcmVwbGFjZUNoaWxkKE5v
ZGUgbm9kZSwgW1JldHVyblZhbHVlXSBOb2RlIGNoaWxkKTsKKyAgICBbQ0VSZWFjdGlvbnNdIE5v
ZGUgcmVtb3ZlQ2hpbGQoW1JldHVyblZhbHVlXSBOb2RlIGNoaWxkKTsKIH07CiAKIGRpY3Rpb25h
cnkgR2V0Um9vdE5vZGVPcHRpb25zIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRl
cmF0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9y
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3c7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5v
ZGVGaWx0ZXI/IGZpbHRlcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gbmV4dE5v
ZGUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IHByZXZpb3VzTm9kZSgpOworICAg
IE5vZGU/IG5leHROb2RlKCk7CisgICAgTm9kZT8gcHJldmlvdXNOb2RlKCk7CiAKICAgICB1bmRl
ZmluZWQgZGV0YWNoKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAkocmV2
aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAgaW50ZXJmYWNlIG1peGluIFBhcmVudE5vZGUg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBsYXN0RWxlbWVudENoaWxkOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNoaWxkRWxlbWVudENvdW50OwogCi0g
ICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rpb25z
LCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFwcGVuZCgoTm9kZSBv
ciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVwbGFjZUNoaWxkcmVuKChOb2RlIG9yIERPTVN0
cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdW5kZWZpbmVk
IHByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25z
LCBVbnNjb3BhYmxlXSB1bmRlZmluZWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9k
ZXMpOworICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZV0gdW5kZWZpbmVkIHJlcGxhY2VDaGls
ZHJlbigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRWxlbWVudD8gcXVlcnlTZWxlY3RvcihET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChE
T01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBFbGVtZW50PyBxdWVyeVNlbGVjdG9yKERPTVN0cmlu
ZyBzZWxlY3RvcnMpOworICAgIFtOZXdPYmplY3RdIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwo
RE9NU3RyaW5nIHNlbGVjdG9ycyk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
K0RPTVBhcnNpbmcuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZStE
T01QYXJzaW5nLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlK0RPTVBhcnNpbmcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw1ICsyNSw1IEBACiAKIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10aGUtcmFu
Z2UtaW50ZXJmYWNlCiBwYXJ0aWFsIGludGVyZmFjZSBSYW5nZSB7Ci0gICAgW0NFUmVhY3Rpb25z
LCBOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudEZyYWdtZW50IGNyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChET01TdHJpbmcgZnJhZ21lbnQpOworICAgIFtDRVJlYWN0aW9ucywg
TmV3T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChET01T
dHJpbmcgZnJhZ21lbnQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmlkbAkocmV2aXNpb24gMjc0
NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNDMgKzI4LDQzIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSBjb21tb25BbmNl
c3RvckNvbnRhaW5lcjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN0
YXJ0KE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldEVuZChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdGFydEJlZm9yZShOb2RlIG5v
ZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN0YXJ0QWZ0ZXIoTm9k
ZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRFbmRCZWZvcmUo
Tm9kZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRFbmRBZnRl
cihOb2RlIG5vZGUpOworICAgIHVuZGVmaW5lZCBzZXRTdGFydChOb2RlIG5vZGUsIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0KTsKKyAgICB1bmRlZmluZWQgc2V0RW5kKE5vZGUgbm9kZSwgdW5zaWduZWQg
bG9uZyBvZmZzZXQpOworICAgIHVuZGVmaW5lZCBzZXRTdGFydEJlZm9yZShOb2RlIG5vZGUpOwor
ICAgIHVuZGVmaW5lZCBzZXRTdGFydEFmdGVyKE5vZGUgbm9kZSk7CisgICAgdW5kZWZpbmVkIHNl
dEVuZEJlZm9yZShOb2RlIG5vZGUpOworICAgIHVuZGVmaW5lZCBzZXRFbmRBZnRlcihOb2RlIG5v
ZGUpOwogICAgIHVuZGVmaW5lZCBjb2xsYXBzZShvcHRpb25hbCBib29sZWFuIHRvU3RhcnQgPSBm
YWxzZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VsZWN0Tm9kZShOb2Rl
IG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbGVjdE5vZGVDb250
ZW50cyhOb2RlIG5vZGUpOworICAgIHVuZGVmaW5lZCBzZWxlY3ROb2RlKE5vZGUgbm9kZSk7Cisg
ICAgdW5kZWZpbmVkIHNlbGVjdE5vZGVDb250ZW50cyhOb2RlIG5vZGUpOwogCiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU1RBUlRfVE9fU1RBUlQgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFNUQVJUX1RPX0VORCA9IDE7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5EX1RPX0VO
RCA9IDI7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5EX1RPX1NUQVJUID0gMzsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNvbXBhcmVCb3VuZGFyeVBvaW50cyh1bnNpZ25lZCBz
aG9ydCBob3csIFJhbmdlIHNvdXJjZVJhbmdlKTsKKyAgICBzaG9ydCBjb21wYXJlQm91bmRhcnlQ
b2ludHModW5zaWduZWQgc2hvcnQgaG93LCBSYW5nZSBzb3VyY2VSYW5nZSk7CiAKLSAgICBbQ0VS
ZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlQ29udGVudHMoKTsK
LSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50
RnJhZ21lbnQgZXh0cmFjdENvbnRlbnRzKCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4
Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGNsb25lQ29udGVudHMoKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0Tm9kZShO
b2RlIG5vZGUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBzdXJyb3VuZENvbnRlbnRzKE5vZGUgbmV3UGFyZW50KTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVu
ZGVmaW5lZCBkZWxldGVDb250ZW50cygpOworICAgIFtDRVJlYWN0aW9ucywgTmV3T2JqZWN0XSBE
b2N1bWVudEZyYWdtZW50IGV4dHJhY3RDb250ZW50cygpOworICAgIFtDRVJlYWN0aW9ucywgTmV3
T2JqZWN0XSBEb2N1bWVudEZyYWdtZW50IGNsb25lQ29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlv
bnNdIHVuZGVmaW5lZCBpbnNlcnROb2RlKE5vZGUgbm9kZSk7CisgICAgW0NFUmVhY3Rpb25zXSB1
bmRlZmluZWQgc3Vycm91bmRDb250ZW50cyhOb2RlIG5ld1BhcmVudCk7CiAKICAgICBbTmV3T2Jq
ZWN0XSBSYW5nZSBjbG9uZVJhbmdlKCk7CiAgICAgdW5kZWZpbmVkIGRldGFjaCgpOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGlzUG9pbnRJblJhbmdlKE5vZGUgbm9kZSwgdW5z
aWduZWQgbG9uZyBvZmZzZXQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2hvcnQgY29tcGFy
ZVBvaW50KE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIGJvb2xlYW4gaXNQ
b2ludEluUmFuZ2UoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgc2hvcnQg
Y29tcGFyZVBvaW50KE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogCiAgICAgYm9v
bGVhbiBpbnRlcnNlY3RzTm9kZShOb2RlIG5vZGUpOwogCiAgICAgc3RyaW5naWZpZXI7CiAKICAg
ICAvLyBOb24tc3RhbmRhcmQ6IFdlIHNob3VsZCBldmVudHVhbGx5IGRyb3AgdGhpcyBzaW5jZSBu
byBvdGhlciBicm93c2VyIHN1cHBvcnRzIGl0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgZXhwYW5kKG9wdGlvbmFsIERPTVN0cmluZyB1bml0KTsKKyAgICB1bmRlZmluZWQgZXhw
YW5kKG9wdGlvbmFsIERPTVN0cmluZyB1bml0KTsKIAogICAgIC8vIE5vbi1zdGFuZGFyZDogV2Ug
c2hvdWxkIGxpa2VseSBkcm9wIHRoaXMgc2luY2Ugd2UgYWRkZWQgaXQgZm9yIEZpcmVmb3ggaW50
ZXJvcGVyYWJpbGl0eSwgYnV0IG5vdyBubyBvdGhlciBicm93c2VyIHN1cHBvcnRzIGl0LgotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2hvcnQgY29tcGFyZU5vZGUoTm9kZSBub2RlKTsKKyAgICBz
aG9ydCBjb21wYXJlTm9kZShOb2RlIG5vZGUpOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5P
REVfQkVGT1JFID0gMDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBOT0RFX0FGVEVSID0gMTsK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBOT0RFX0JFRk9SRV9BTkRfQUZURVIgPSAyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiBdIGludGVyZmFjZSBU
ZXh0IDogQ2hhcmFjdGVyRGF0YSB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3Rv
cihvcHRpb25hbCBET01TdHJpbmcgZGF0YSA9ICIiKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gVGV4dCBzcGxpdFRleHQodW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIFRleHQgc3BsaXRU
ZXh0KHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHdob2xlVGV4dDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rl
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAko
cmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNSArNDEsNSBAQCBkaWN0aW9uYXJ5IFRleHREZWNvZGVPcHRp
b25zIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuY29kaW5nOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZhdGFsOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGlnbm9yZUJPTTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFVTVlN0cmluZyBkZWNv
ZGUob3B0aW9uYWwgW0FsbG93U2hhcmVkXSBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBU
ZXh0RGVjb2RlT3B0aW9ucyBvcHRpb25zKTsKKyAgICBVU1ZTdHJpbmcgZGVjb2RlKG9wdGlvbmFs
IFtBbGxvd1NoYXJlZF0gQnVmZmVyU291cmNlPyBpbnB1dCwgb3B0aW9uYWwgVGV4dERlY29kZU9w
dGlvbnMgb3B0aW9ucyk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVy
U3RyZWFtRGVjb2Rlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RleHRE
ZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw2IEBACiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIGxhYmVsLCBib29sZWFuIGZh
dGFsLCBib29sZWFuIGlnbm9yZUJPTSk7CiAKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIERPTVN0
cmluZyBlbmNvZGluZygpOwotICAgIFtQcml2YXRlSWRlbnRpZmllciwgTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyBkZWNvZGUoW0FsbG93U2hhcmVkXSBCdWZmZXJTb3VyY2Ugc291cmNlKTsK
LSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZmx1
c2goKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIERPTVN0cmluZyBkZWNvZGUoW0FsbG93U2hh
cmVkXSBCdWZmZXJTb3VyY2Ugc291cmNlKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIERPTVN0
cmluZyBmbHVzaCgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwJKHJldmlz
aW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDExIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVG
aWx0ZXI/IGZpbHRlcjsKICAgICBhdHRyaWJ1dGUgTm9kZSBjdXJyZW50Tm9kZTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcGFyZW50Tm9kZSgpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gTm9kZT8gZmlyc3RDaGlsZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8g
bGFzdENoaWxkKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c1NpYmxp
bmcoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5leHRTaWJsaW5nKCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05vZGUoKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIE5vZGU/IG5leHROb2RlKCk7CisgICAgTm9kZT8gcGFyZW50Tm9kZSgpOworICAg
IE5vZGU/IGZpcnN0Q2hpbGQoKTsKKyAgICBOb2RlPyBsYXN0Q2hpbGQoKTsKKyAgICBOb2RlPyBw
cmV2aW91c1NpYmxpbmcoKTsKKyAgICBOb2RlPyBuZXh0U2libGluZygpOworICAgIE5vZGU/IHBy
ZXZpb3VzTm9kZSgpOworICAgIE5vZGU/IG5leHROb2RlKCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgKEJ1ZmZl
clNvdXJjZSBvciBCbG9iIG9yIFVTVlN0cmkKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBCbG9iIHNsaWNlKG9wdGlvbmFsIGxvbmcgbG9uZyBzdGFydCA9IDAsIG9wdGlv
bmFsIGxvbmcgbG9uZyBlbmQgPSAweDdGRkZGRkZGRkZGRkZGRkYsIG9wdGlvbmFsIERPTVN0cmlu
ZyBjb250ZW50VHlwZSA9ICIiKTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBSZWFkYWJsZVN0cmVhbSBzdHJlYW0o
KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBSZWFk
YWJsZVN0cmVhbSBzdHJlYW0oKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBQcm9taXNlPFVTVlN0cmluZz4gdGV4dCgpOwogICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRs
CShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAKIAogICAgIC8vIEZJWE1FOiBJ
biBhbGwgZm91ciBtZXRob2RzIGZvdW5kIGJlbG93LCB0aGUgYmxvYiBwYXJhbWV0ZXIgc2hvdWxk
IG5vdCBiZSBudWxsYWJsZS4KICAgICAvLyBhc3luYyByZWFkIG1ldGhvZHMKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWFkQXNBcnJheUJ1ZmZlcihCbG9iPyBibG9iKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWFkQXNCaW5hcnlTdHJpbmcoQmxvYj8g
YmxvYik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVhZEFzVGV4dChCbG9i
PyBibG9iLCBvcHRpb25hbCBET01TdHJpbmcgZW5jb2RpbmcpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHJlYWRBc0RhdGFVUkwoQmxvYj8gYmxvYik7CisgICAgdW5kZWZpbmVk
IHJlYWRBc0FycmF5QnVmZmVyKEJsb2I/IGJsb2IpOworICAgIHVuZGVmaW5lZCByZWFkQXNCaW5h
cnlTdHJpbmcoQmxvYj8gYmxvYik7CisgICAgdW5kZWZpbmVkIHJlYWRBc1RleHQoQmxvYj8gYmxv
Yiwgb3B0aW9uYWwgRE9NU3RyaW5nIGVuY29kaW5nKTsKKyAgICB1bmRlZmluZWQgcmVhZEFzRGF0
YVVSTChCbG9iPyBibG9iKTsKIAogICAgIHVuZGVmaW5lZCBhYm9ydCgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24gMjc0NzI4KQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDggKzM0LDggQEAKIF0gaW50ZXJmYWNlIEZpbGVSZWFkZXJTeW5jIHsKICAgICBj
b25zdHJ1Y3RvcigpOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1h
eVRocm93RXhjZXB0aW9uXSBBcnJheUJ1ZmZlciByZWFkQXNBcnJheUJ1ZmZlcihCbG9iIGJsb2Ip
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iIGJsb2IpOwotICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJl
YWRBc1RleHQoQmxvYiBibG9iLCBvcHRpb25hbCBET01TdHJpbmcgZW5jb2RpbmcgPSAiIik7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBE
T01TdHJpbmcgcmVhZEFzRGF0YVVSTChCbG9iIGJsb2IpOworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBBcnJheUJ1ZmZlciByZWFkQXNBcnJheUJ1ZmZlcihCbG9iIGJsb2Ip
OworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcgcmVhZEFz
QmluYXJ5U3RyaW5nKEJsb2IgYmxvYik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIERPTVN0cmluZyByZWFkQXNUZXh0KEJsb2IgYmxvYiwgb3B0aW9uYWwgRE9NU3RyaW5n
IGVuY29kaW5nID0gIiIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBE
T01TdHJpbmcgcmVhZEFzRGF0YVVSTChCbG9iIGJsb2IpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVRva2VuTGlzdC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDExIEBA
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRl
ciBET01TdHJpbmc/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgYm9vbGVhbiBjb250
YWlucyhET01TdHJpbmcgdG9rZW4pOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBhZGQoRE9NU3RyaW5nLi4uIHRva2Vucyk7Ci0gICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZShET01TdHJpbmcuLi4gdG9rZW5z
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHRvZ2dsZShE
T01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2UpOwotICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gcmVwbGFjZShET01TdHJpbmcgdG9rZW4sIERP
TVN0cmluZyBuZXdUb2tlbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHN1cHBv
cnRzKERPTVN0cmluZyB0b2tlbik7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgYWRkKERP
TVN0cmluZy4uLiB0b2tlbnMpOworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHJlbW92ZShE
T01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbQ0VSZWFjdGlvbnNdIGJvb2xlYW4gdG9nZ2xlKERP
TVN0cmluZyB0b2tlbiwgb3B0aW9uYWwgYm9vbGVhbiBmb3JjZSk7CisgICAgW0NFUmVhY3Rpb25z
XSBib29sZWFuIHJlcGxhY2UoRE9NU3RyaW5nIHRva2VuLCBET01TdHJpbmcgbmV3VG9rZW4pOwor
ICAgIGJvb2xlYW4gc3VwcG9ydHMoRE9NU3RyaW5nIHRva2VuKTsKICAgICBbQ0VSZWFjdGlvbnNd
IHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAgICAgaXRlcmFibGU8RE9N
U3RyaW5nPjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxMSBAQCB0eXBlZGVmICgK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXJdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIENhbGxUcmFjZXI9SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcl0gYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwg
TWF5VGhyb3dFeGNlcHRpb25dIFJlbmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoRE9NU3RyaW5n
IGNvbnRleHRJZCwgYW55Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVj
dF0gUmVuZGVyaW5nQ29udGV4dD8gZ2V0Q29udGV4dChET01TdHJpbmcgY29udGV4dElkLCBhbnku
Li4gYXJndW1lbnRzKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHRvRGF0
YVVSTChvcHRpb25hbCBET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1YWxpdHkpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHRvQmxvYihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmluZyB0
eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7Ci0gICAgW0NvbmRpdGlvbmFsPU9GRlNDUkVFTl9D
QU5WQVMsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9u
XSBPZmZzY3JlZW5DYW52YXMgdHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4oKTsKKyAgICBET01T
dHJpbmcgdG9EYXRhVVJMKG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVh
bGl0eSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHVuZGVmaW5lZCB0
b0Jsb2IoQmxvYkNhbGxiYWNrIGNhbGxiYWNrLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSwgb3B0
aW9uYWwgYW55IHF1YWxpdHkpOworICAgIFtDb25kaXRpb25hbD1PRkZTQ1JFRU5fQ0FOVkFTLCBD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBPZmZzY3JlZW5DYW52YXMgdHJhbnNmZXJD
b250cm9sVG9PZmZzY3JlZW4oKTsKIAotICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIENh
bGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBNZWRpYVN0cmVh
bSBjYXB0dXJlU3RyZWFtKG9wdGlvbmFsIGRvdWJsZSBmcmFtZVJlcXVlc3RSYXRlKTsKKyAgICBb
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBDYWxsV2l0aD1Eb2N1bWVudCwgTmV3T2JqZWN0XSBN
ZWRpYVN0cmVhbSBjYXB0dXJlU3RyZWFtKG9wdGlvbmFsIGRvdWJsZSBmcmFtZVJlcXVlc3RSYXRl
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmlkbAko
cmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVu
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDYgQEAKICAgICBbQ0VSZWFjdGlvbnMs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIG9wZW47CiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyByZXR1cm5WYWx1ZTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzaG93KCk7Ci0gICAg
W0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNob3dNb2RhbCgpOwor
ICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHNob3dNb2RhbCgpOwogICAgIFtDRVJlYWN0aW9u
c10gdW5kZWZpbmVkIGNsb3NlKG9wdGlvbmFsIERPTVN0cmluZyByZXR1cm5WYWx1ZSk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw1ICsyOSw1IEBACiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgd2lkdGg7CiAKLSAgICBbQ2hlY2tT
ZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVu
dCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQo
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01T
dHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0
aDsKIAotICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3Vt
ZW50IGdldFNWR0RvY3VtZW50KCk7CisgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSBEb2N1bWVu
dCBnZXRTVkdEb2N1bWVudCgpOwogCiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgd2lkdGg7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdpbmRvdzsK
IAotICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50
IGdldFNWR0RvY3VtZW50KCk7CisgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSBEb2N1bWVudCBn
ZXRTVkdEb2N1bWVudCgpOwogCiAgICAgW0VuYWJsZWRCeVNldHRpbmc9UmVmZXJyZXJQb2xpY3lB
dHRyaWJ1dGUsIEltcGxlbWVudGVkQXM9cmVmZXJyZXJQb2xpY3lGb3JCaW5kaW5ncywgQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmVycmVyUG9saWN5OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDI3
NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAKICAgICBhdHRyaWJ1dGUgRGF0ZT8gdmFsdWVBc0Rh
dGU7CiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgdmFsdWVBc051bWJlcjsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHN0ZXBVcChvcHRpb25hbCBsb25nIG4g
PSAxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdGVwRG93bihvcHRpb25h
bCBsb25nIG4gPSAxKTsKKyAgICB1bmRlZmluZWQgc3RlcFVwKG9wdGlvbmFsIGxvbmcgbiA9IDEp
OworICAgIHVuZGVmaW5lZCBzdGVwRG93bihvcHRpb25hbCBsb25nIG4gPSAxKTsKIAogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKQEAgLTgyLDEwICs4Miwx
MCBAQAogICAgIFtJbXBsZW1lbnRlZEFzPXNlbGVjdGlvbkVuZEZvckJpbmRpbmdzXSBhdHRyaWJ1
dGUgbG9uZyBzZWxlY3Rpb25FbmQ7CiAgICAgW0ltcGxlbWVudGVkQXM9c2VsZWN0aW9uRGlyZWN0
aW9uRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2VsZWN0aW9uRGlyZWN0aW9uOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UmFuZ2VUZXh0KERPTVN0cmlu
ZyByZXBsYWNlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UmFu
Z2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu
ZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rpb25Nb2RlKTsKKyAgICB1bmRl
ZmluZWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCk7CisgICAgdW5kZWZpbmVk
IHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQs
IHVuc2lnbmVkIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CiAK
LSAgICBbSW1wbGVtZW50ZWRBcz1zZXRTZWxlY3Rpb25SYW5nZUZvckJpbmRpbmdzLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNlbGVjdGlvblJhbmdlKGxvbmcgc3RhcnQsIGxvbmcg
ZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1z
ZXRTZWxlY3Rpb25SYW5nZUZvckJpbmRpbmdzXSB1bmRlZmluZWQgc2V0U2VsZWN0aW9uUmFuZ2Uo
bG9uZyBzdGFydCwgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwogCiAg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBh
bGlnbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHVzZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHR5cGVkZWYgKAog
ICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJsZWRCeVNldHRpbmc9RW5jcnlw
dGVkTWVkaWFBUEksIERpc2FibGVkQnlRdWlyaz1oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1
cHBvcnRdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253YWl0aW5nZm9ya2V5OwogICAgIFtDb25k
aXRpb25hbD1FTkNSWVBURURfTUVESUEsIEVuYWJsZWRCeVNldHRpbmc9RW5jcnlwdGVkTWVkaWFB
UEksIERpc2FibGVkQnlRdWlyaz1oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRdIFBy
b21pc2U8dW5kZWZpbmVkPiBzZXRNZWRpYUtleXMoTWVkaWFLZXlzPyBtZWRpYUtleXMpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKERPTVN0cmluZyBr
aW5kLCBvcHRpb25hbCBET01TdHJpbmcgbGFiZWwgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGxh
bmd1YWdlID0gIiIpOworICAgIFRleHRUcmFjayBhZGRUZXh0VHJhY2soRE9NU3RyaW5nIGtpbmQs
IG9wdGlvbmFsIERPTVN0cmluZyBsYWJlbCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgbGFuZ3Vh
Z2UgPSAiIik7CiAgICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlQXVkaW9UcmFja3NdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNrczsKICAgICBbSW1wbGVtZW50ZWRB
cz1lbnN1cmVUZXh0VHJhY2tzXSByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlzdCB0ZXh0
VHJhY2tzOwogICAgIFtJbXBsZW1lbnRlZEFzPWVuc3VyZVZpZGVvVHJhY2tzXSByZWFkb25seSBh
dHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDUgKzQ5LDUgQEAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRo
cm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3Vy
aXR5Rm9yTm9kZV0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAyNzQ3
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIF0gaW50ZXJmYWNlIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBbQ0VSZWFjdGlvbnNdIHNldHRlciB1bmRlZmluZWQg
KHVuc2lnbmVkIGxvbmcgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50PyBvcHRpb24pOwotICAgIFtD
RVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZGQoKEhUTUxPcHRpb25F
bGVtZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxl
bWVudCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmlu
ZWQgYWRkKChIVE1MT3B0aW9uRWxlbWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50
LCBvcHRpb25hbCAoSFRNTEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwpOwogICAgIFtD
RVJlYWN0aW9uc10gdW5kZWZpbmVkIHJlbW92ZShsb25nIGluZGV4KTsKIAogICAgIGF0dHJpYnV0
ZSBsb25nIHNlbGVjdGVkSW5kZXg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAKICAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0
ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7IC8vIEZJWE1F
OiBUaGUgc3BlYyBoYXMgdGhpcyByZXR1cm5pbmcgRWxlbWVudD8uCiAgICAgSFRNTE9wdGlvbkVs
ZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBu
YW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWRk
KChIVE1MT3B0aW9uRWxlbWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRp
b25hbCAoSFRNTEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwpOwotICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmUoKTsgLy8gQ2hpbGROb2Rl
IG92ZXJsb2FkCisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgYWRkKChIVE1MT3B0aW9uRWxl
bWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1l
bnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwpOworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVk
IHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUgb3ZlcmxvYWQKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVm
aW5lZCByZW1vdmUobG9uZyBpbmRleCk7CiAgICAgW0NFUmVhY3Rpb25zXSBzZXR0ZXIgdW5kZWZp
bmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudD8gb3B0aW9uKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw2IEBACiAgICAgSFRNTEVsZW1lbnQgY3JlYXRlQ2FwdGlv
bigpOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGRlbGV0ZUNhcHRpb24oKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gSFRNTEVsZW1lbnQgaW5zZXJ0Um93KG9wdGlvbmFsIGxvbmcg
aW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIGRlbGV0ZVJvdyhsb25nIGluZGV4KTsKKyAgICBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0
aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBkZWxl
dGVSb3cobG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw2
IEBACiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9m
Zl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEhUTUxFbGVtZW50IGluc2VydENlbGwob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsK
LSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlQ2Vs
bChsb25nIGluZGV4KTsKKyAgICBIVE1MRWxlbWVudCBpbnNlcnRDZWxsKG9wdGlvbmFsIGxvbmcg
aW5kZXggPSAtMSk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgZGVsZXRlQ2VsbChsb25n
IGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25F
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDYgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWNoYXJvZmZdIGF0dHJp
YnV0ZSBET01TdHJpbmcgY2hPZmY7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyB2QWxpZ247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhU
TUxDb2xsZWN0aW9uIHJvd3M7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBIVE1MRWxlbWVudCBp
bnNlcnRSb3cob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlUm93KGxvbmcgaW5kZXgpOworICAgIEhU
TUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBsb25nIGluZGV4ID0gLTEpOworICAgIFtDRVJl
YWN0aW9uc10gdW5kZWZpbmVkIGRlbGV0ZVJvdyhsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDggKzU1LDggQEAKICAgICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3Rpb25F
bmQ7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Rpb25EaXJlY3Rpb247CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxh
Y2VtZW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRSYW5nZVRleHQo
RE9NU3RyaW5nIHJlcGxhY2VtZW50LCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n
IGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUpOworICAgIHVuZGVmaW5lZCBz
ZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKKyAgICB1bmRlZmluZWQgc2V0UmFu
Z2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu
ZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rpb25Nb2RlKTsKIAogICAgIHVu
ZGVmaW5lZCBzZXRTZWxlY3Rpb25SYW5nZShvcHRpb25hbCBsb25nIHN0YXJ0ID0gMCwgb3B0aW9u
YWwgbG9uZyBlbmQgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxMiArMzksMTIgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3
ZWJraXRTdXBwb3J0c0Z1bGxzY3JlZW47CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW47CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB1bmRlZmluZWQgd2Via2l0RW50
ZXJGdWxsc2NyZWVuKCk7CiAgICAgdW5kZWZpbmVkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAK
ICAgICAvLyBNYWludGFpbiAiRnVsbFNjcmVlbiIgY2FwaXRhbGl6YXRpb24gc2NoZW1lIGZvciBi
YWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzYwODEKLSAgICBbSW1wbGVtZW50ZWRBcz13ZWJraXRFbnRlckZ1bGxz
Y3JlZW4sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgd2Via2l0RW50ZXJGdWxsU2NyZWVu
KCk7CisgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RW50ZXJGdWxsc2NyZWVuXSB1bmRlZmluZWQg
d2Via2l0RW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RXhpdEZ1
bGxzY3JlZW5dIHVuZGVmaW5lZCB3ZWJraXRFeGl0RnVsbFNjcmVlbigpOwogCiAgICAgW0NvbmRp
dGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L09mZnNjcmVlbkNhbnZhcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL09mZnNjcmVlbkNhbnZhcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDggQEAg
ZW51bSBPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlwZQogICAgIGF0dHJpYnV0ZSBbRW5mb3Jj
ZVJhbmdlXSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdl
XSB1bnNpZ25lZCBsb25nIGhlaWdodDsKIAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSBPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KE9m
ZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBhbnkuLi4gYXJndW1lbnRz
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlQml0bWFwIHRyYW5zZmVyVG9JbWFnZUJp
dG1hcCgpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIE9mZnNjcmVlblJlbmRlcmluZ0Nv
bnRleHQ/IGdldENvbnRleHQoT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5
cGUsIGFueS4uLiBhcmd1bWVudHMpOworICAgIEltYWdlQml0bWFwIHRyYW5zZmVyVG9JbWFnZUJp
dG1hcCgpOwogICAgIFByb21pc2U8QmxvYj4gY29udmVydFRvQmxvYihvcHRpb25hbCBJbWFnZUVu
Y29kZU9wdGlvbnMgb3B0aW9ucyk7CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVSYW5nZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDYgQEAKICAgICBFeHBvc2VkPVdpbmRv
dwogXSBpbnRlcmZhY2UgVGltZVJhbmdlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGRv
dWJsZSBzdGFydCh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVucmVzdHJpY3RlZCBkb3VibGUgZW5kKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVucmVz
dHJpY3RlZCBkb3VibGUgc3RhcnQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdW5yZXN0cmlj
dGVkIGRvdWJsZSBlbmQodW5zaWduZWQgbG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCShyZXZpc2lvbiAyNzQ3
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGludGVyZmFjZSBtaXhpbiBDYW52YXNEcmF3
SW1hZ2UgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVu
dHMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgogCiAgICAgLy8gZHJhd2lu
ZyBpbWFnZXMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkcmF3SW1hZ2UoQ2Fu
dmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgZHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRyYXdJbWFn
ZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0
cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRv
dWJsZSBkaCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZHJhd0ltYWdlKENh
bnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN4LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHN5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN3LCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHNoLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIGR3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGRoKTsKKyAgICB1bmRlZmlu
ZWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5KTsKKyAgICB1bmRlZmluZWQgZHJhd0ltYWdlKENh
bnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR4LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIGR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR3LCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGRoKTsKKyAgICB1bmRlZmluZWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHN4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN5LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHN3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHNoLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGR4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR3LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIGRoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgaW50ZXJmYWNlIG1peGluIENhbnZh
c0ZpbGxTdHJva2VTdHlsZXMgewogICAgIGF0dHJpYnV0ZSAoRE9NU3RyaW5nIG9yIENhbnZhc0dy
YWRpZW50IG9yIENhbnZhc1BhdHRlcm4pIGZpbGxTdHlsZTsgLy8gKGRlZmF1bHQgYmxhY2spCiAK
ICAgICAvLyBGSVhNRTogQWxsIHRoZSBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSBk
b3VibGVzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlTGlu
ZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQo
ZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCBy
MSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQYXR0ZXJu
KENhbnZhc0ltYWdlU291cmNlIGltYWdlLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyByZXBldGl0aW9uKTsKKyAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVu
dChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSk7CisgICAgQ2FudmFzR3Jh
ZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwg
ZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7CisgICAgQ2FudmFzUGF0dGVybj8gY3JlYXRl
UGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBET01TdHJpbmcgcmVwZXRpdGlvbik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw1ICszMSw1IEBACiAgICAgLy8gRklYTUU6IFRoZSBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93
IHNob3VsZCBiZSBhIGRvdWJsZS4KIAogICAgIC8vIG9wYXF1ZSBvYmplY3QKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZGRDb2xvclN0b3AoZmxvYXQgb2Zmc2V0LCBET01TdHJp
bmcgY29sb3IpOworICAgIHVuZGVmaW5lZCBhZGRDb2xvclN0b3AoZmxvYXQgb2Zmc2V0LCBET01T
dHJpbmcgY29sb3IpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsOSBAQCBpbnRlcmZhY2UgbWl4aW4gQ2FudmFzSW1hZ2VEYXRhIHsKICAgICAvLyBGSVhNRTog
QWxsIHRoZSBmbG9hdCBhcmd1bWVudHMgYmVsb3cgc2hvdWxkIGJlIGxvbmdzLgogCiAgICAgLy8g
cGl4ZWwgbWFuaXB1bGF0aW9uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBJbWFnZURhdGEgY3Jl
YXRlSW1hZ2VEYXRhKGZsb2F0IHN3LCBmbG9hdCBzaCk7CisgICAgSW1hZ2VEYXRhIGNyZWF0ZUlt
YWdlRGF0YShmbG9hdCBzdywgZmxvYXQgc2gpOwogICAgIEltYWdlRGF0YSBjcmVhdGVJbWFnZURh
dGEoSW1hZ2VEYXRhIGltYWdlZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBJbWFnZURh
dGEgZ2V0SW1hZ2VEYXRhKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoKTsK
KyAgICBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3cs
IGZsb2F0IHNoKTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSBpbWFnZWRh
dGEsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0YShJbWFn
ZURhdGEgaW1hZ2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQg
ZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAgaW50ZXJmYWNlIG1peGluIENhbnZhc1BhdGggewog
ICAgIHVuZGVmaW5lZCBsaW5lVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHkpOwogICAgIHVuZGVmaW5lZCBxdWFkcmF0aWNDdXJ2ZVRvKHVucmVzdHJpY3RlZCBk
b3VibGUgY3B4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNweSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOwogICAgIHVuZGVmaW5lZCBiZXppZXJDdXJ2ZVRvKHVu
cmVzdHJpY3RlZCBkb3VibGUgY3AxeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDF5LCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGNwMngsIHVucmVzdHJpY3RlZCBkb3VibGUgY3AyeSwgdW5yZXN0cmljdGVk
IGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUgeDEsIHVucmVzdHJpY3RlZCBk
b3VibGUgeTEsIHVucmVzdHJpY3RlZCBkb3VibGUgeDIsIHVucmVzdHJpY3RlZCBkb3VibGUgeTIs
IHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzKTsKLSAgICAvLyBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWSwg
dW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7CisgICAgdW5kZWZpbmVkIGFyY1RvKHVucmVz
dHJpY3RlZCBkb3VibGUgeDEsIHVucmVzdHJpY3RlZCBkb3VibGUgeTEsIHVucmVzdHJpY3RlZCBk
b3VibGUgeDIsIHVucmVzdHJpY3RlZCBkb3VibGUgeTIsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzKTsKKyAgICAvLyB1bmRlZmluZWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5y
ZXN0cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5yZXN0cmljdGVk
IGRvdWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHJhZGl1c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90YXRpb24pOwogICAgIHVuZGVmaW5l
ZCByZWN0KHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHcsIHVucmVzdHJpY3RlZCBkb3VibGUgaCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgYXJjKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1cywgdW5yZXN0cmljdGVkIGRv
dWJsZSBzdGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBi
b29sZWFuIGFudGljbG9ja3dpc2UgPSBmYWxzZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgZWxsaXBzZSh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJh
ZGl1c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90YXRpb24sIHVucmVzdHJpY3RlZCBkb3VibGUg
c3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVh
biBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOworICAgIHVuZGVmaW5lZCBhcmModW5yZXN0cmljdGVk
IGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUg
ZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKKyAgICB1
bmRlZmluZWQgZWxsaXBzZSh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJh
ZGl1c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90YXRpb24sIHVucmVzdHJpY3RlZCBkb3VibGUg
c3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVh
biBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwogCiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9SW5zcGVj
dG9yQWRkaXRpb25zXSByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgY3VycmVudFg7CiAgICAgW0Vu
YWJsZWRBdFJ1bnRpbWU9SW5zcGVjdG9yQWRkaXRpb25zXSByZWFkb25seSBhdHRyaWJ1dGUgZmxv
YXQgY3VycmVudFk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0dGVybi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDUgKzI4LDUgQEAKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBDYW52YXNQYXR0ZXJuIHsK
ICAgICAvLyBvcGFxdWUgb2JqZWN0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
c2V0VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJpeDJESW5pdCB0cmFuc2Zvcm0pOworICAgIHVu
ZGVmaW5lZCBzZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUcmFuc2Zv
cm0uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNUcmFuc2Zvcm0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw2IEBAIGludGVy
ZmFjZSBtaXhpbiBDYW52YXNUcmFuc2Zvcm0gewogCiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4
IGdldFRyYW5zZm9ybSgpOwogICAgIHVuZGVmaW5lZCBzZXRUcmFuc2Zvcm0odW5yZXN0cmljdGVk
IGZsb2F0IGEsIHVucmVzdHJpY3RlZCBmbG9hdCBiLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYywgdW5y
ZXN0cmljdGVkIGZsb2F0IGQsIHVucmVzdHJpY3RlZCBmbG9hdCBlLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgZik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0VHJhbnNmb3JtKG9w
dGlvbmFsIERPTU1hdHJpeDJESW5pdCB0cmFuc2Zvcm0pOworICAgIHVuZGVmaW5lZCBzZXRUcmFu
c2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CiAgICAgdW5kZWZpbmVk
IHJlc2V0VHJhbnNmb3JtKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lv
biAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw2IEBACiBdIGludGVy
ZmFjZSBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MQ2FudmFzRWxlbWVudCBjYW52YXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCB0cmFuc2ZlckZyb21JbWFnZUJpdG1hcChJbWFnZUJpdG1hcD8gYml0bWFwKTsKKyAg
ICB1bmRlZmluZWQgdHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA/IGJpdG1hcCk7
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5pZGwJKHJldmlzaW9u
IDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAvLyBjb25zdHJ1Y3RvcihzZXF1ZW5jZTxQ
YXRoMkQ+IHBhdGhzLCBvcHRpb25hbCBDYW52YXNGaWxsUnVsZSBmaWxsUnVsZSA9ICJub256ZXJv
Iik7CiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIGQpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgYWRkUGF0aChQYXRoMkQgcGF0aCwgb3B0aW9uYWwgRE9NTWF0cml4MkRJ
bml0IHRyYW5zZm9ybSk7CisgICAgdW5kZWZpbmVkIGFkZFBhdGgoUGF0aDJEIHBhdGgsIG9wdGlv
bmFsIERPTU1hdHJpeDJESW5pdCB0cmFuc2Zvcm0pOwogfTsKIAogUGF0aDJEIGluY2x1ZGVzIENh
bnZhc1BhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2OSwxMSArNDY5LDExIEBAIHR5cGVkZWYgKEltYWdlQml0bWFwIG9yIEltYWdlRGF0
YSBvciBIVE0KICAgICAvLyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IEFQSS4KIAogICAgIHVuZGVm
aW5lZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIHBib09mZnNldCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJj
ZSBzb3VyY2UpOworICAgIHVuZGVmaW5lZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291
cmNlIHNvdXJjZSk7CiAgICAgdW5kZWZpbmVkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgW0FsbG93U2hh
cmVkXSBBcnJheUJ1ZmZlclZpZXcgc3JjRGF0YSwgR0x1aW50IHNyY09mZnNldCk7CiAKICAgICB1
bmRlZmluZWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludHB0ciBwYm9PZmZzZXQpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2Ug
c291cmNlKTsKKyAgICB1bmRlZmluZWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSBz
b3VyY2UpOwogICAgIHVuZGVmaW5lZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFtBbGxvd1NoYXJlZF0gQXJy
YXlCdWZmZXJWaWV3IHNyY0RhdGEsIEdMdWludCBzcmNPZmZzZXQpOwogCiAgICAgdW5kZWZpbmVk
IGNvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3Jk
ZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBHTGludHB0ciBvZmZzZXQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsMTAgKzUw
OCwxMCBAQCB0eXBlZGVmIChIVE1MQ2FudmFzRWxlbWVudCkgV2ViR0xDYW52YXM7CiAgICAgdW5k
ZWZpbmVkIGNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIgc2hhZGVyKTsKIAogICAgIHVuZGVmaW5l
ZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBbQWxsb3dTaGFyZWRdIEFycmF5QnVmZmVyVmlldz8gcGl4
ZWxzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB0ZXhJbWFnZTJEKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSBzb3VyY2UpOworICAgIHVuZGVmaW5lZCB0
ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSBzb3VyY2UpOwog
CiAgICAgdW5kZWZpbmVkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgW0FsbG93U2hhcmVkXSBBcnJheUJ1ZmZl
clZpZXc/IHBpeGVscyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgdGV4U3Vi
SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlIHNvdXJj
ZSk7CisgICAgdW5kZWZpbmVkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBUZXhJbWFnZVNvdXJjZSBzb3VyY2UpOwogCiAgICAgdW5kZWZpbmVkIGNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIFtBbGxvd1No
YXJlZF0gQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwogICAgIHVuZGVmaW5lZCBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IFtBbGxvd1NoYXJlZF0gQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiAr
NDUsMTIgQEAgZW51bSBUZXh0VHJhY2tLaW5kIHsgInN1YnRpdGxlcyIsICJjYXB0aQogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0PyBjdWVzOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0PyBhY3RpdmVDdWVzOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgYWRkQ3VlKFRleHRUcmFja0N1ZSBjdWUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUgY3VlKTsKKyAgICB1
bmRlZmluZWQgYWRkQ3VlKFRleHRUcmFja0N1ZSBjdWUpOworICAgIHVuZGVmaW5lZCByZW1vdmVD
dWUoVGV4dFRyYWNrQ3VlIGN1ZSk7CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY3Vl
Y2hhbmdlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFZUVFJlZ2lvbkxpc3QgcmVnaW9uczsK
ICAgICB1bmRlZmluZWQgYWRkUmVnaW9uKFZUVFJlZ2lvbiByZWdpb24pOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVJlZ2lvbihWVFRSZWdpb24gcmVnaW9uKTsKKyAg
ICB1bmRlZmluZWQgcmVtb3ZlUmVnaW9uKFZUVFJlZ2lvbiByZWdpb24pOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTcgKzI4LDE3IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3Qs
CiAgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QgewotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dF
eGNlcHRpb25dIHNlcXVlbmNlPE5vZGU+IGdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoRE9NU3Ry
aW5nIHJvbGUsIG9wdGlvbmFsIE5vZGU/IGNvbnRhaW5lcik7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSBzZXF1ZW5jZTxOb2RlPiBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKERPTVN0cmluZyBy
b2xlLCBvcHRpb25hbCBOb2RlPyBjb250YWluZXIpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBOb2RlPyBnZXRBY3RpdmVEZXNjZW5kYW50KE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPj8gZ2V0Q2hpbGROb2RlcyhOb2RlIG5vZGUpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gQ29tcHV0ZWRQcm9wZXJ0aWVzPyBnZXRDb21wdXRlZFByb3BlcnRp
ZXMoTm9kZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNlcXVlbmNlPE5vZGU+PyBn
ZXRDb250cm9sbGVkTm9kZXMoTm9kZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNl
cXVlbmNlPE5vZGU+PyBnZXRGbG93ZWROb2RlcyhOb2RlIG5vZGUpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gTm9kZT8gZ2V0TW91c2VFdmVudE5vZGUoTm9kZSBub2RlKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHNlcXVlbmNlPE5vZGU+PyBnZXRPd25lZE5vZGVzKE5vZGUgbm9kZSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBnZXRQYXJlbnROb2RlKE5vZGUgbm9kZSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPj8gZ2V0U2VsZWN0ZWRDaGlsZE5v
ZGVzKE5vZGUgbm9kZSk7CisgICAgTm9kZT8gZ2V0QWN0aXZlRGVzY2VuZGFudChOb2RlIG5vZGUp
OworICAgIHNlcXVlbmNlPE5vZGU+PyBnZXRDaGlsZE5vZGVzKE5vZGUgbm9kZSk7CisgICAgQ29t
cHV0ZWRQcm9wZXJ0aWVzPyBnZXRDb21wdXRlZFByb3BlcnRpZXMoTm9kZSBub2RlKTsKKyAgICBz
ZXF1ZW5jZTxOb2RlPj8gZ2V0Q29udHJvbGxlZE5vZGVzKE5vZGUgbm9kZSk7CisgICAgc2VxdWVu
Y2U8Tm9kZT4/IGdldEZsb3dlZE5vZGVzKE5vZGUgbm9kZSk7CisgICAgTm9kZT8gZ2V0TW91c2VF
dmVudE5vZGUoTm9kZSBub2RlKTsKKyAgICBzZXF1ZW5jZTxOb2RlPj8gZ2V0T3duZWROb2RlcyhO
b2RlIG5vZGUpOworICAgIE5vZGU/IGdldFBhcmVudE5vZGUoTm9kZSBub2RlKTsKKyAgICBzZXF1
ZW5jZTxOb2RlPj8gZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzKE5vZGUgbm9kZSk7CiB9OwogCiBbCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERP
TU9iamVjdC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDUgKzI4
LDUgQEAKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0IHsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGJvb2xlYW4gaGFzRXZlbnRMaXN0ZW5lcnMoTm9kZSBub2RlLCBvcHRpb25h
bCBET01TdHJpbmcgdHlwZSk7CisgICAgYm9vbGVhbiBoYXNFdmVudExpc3RlbmVycyhOb2RlIG5v
ZGUsIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5p
ZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDgg
QEAKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0IHsKLSAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxSZXNvdXJjZT4gZ2V0
UmVzb3VyY2VzKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
UmVzb3VyY2VDb250ZW50IGdldFJlc291cmNlQ29udGVudChET01TdHJpbmcgaWQpOworICAgIFtD
YWxsV2l0aD1Eb2N1bWVudF0gc2VxdWVuY2U8UmVzb3VyY2U+IGdldFJlc291cmNlcygpOworICAg
IFtDYWxsV2l0aD1Eb2N1bWVudF0gUmVzb3VyY2VDb250ZW50IGdldFJlc291cmNlQ29udGVudChE
T01TdHJpbmcgaWQpOwogfTsKIAogWwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBACiAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgT0JTT0xFVEUgPSA1OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCBzdGF0dXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB1cGRhdGUoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzd2FwQ2FjaGUoKTsKKyAgICB1bmRl
ZmluZWQgdXBkYXRlKCk7CisgICAgdW5kZWZpbmVkIHN3YXBDYWNoZSgpOwogICAgIHVuZGVmaW5l
ZCBhYm9ydCgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNoZWNraW5nOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DcnlwdG8uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1ICszMiw1IEBACiAgICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogXSBpbnRlcmZh
Y2UgQ3J5cHRvIHsKICAgICBbQ29uZGl0aW9uYWw9V0VCX0NSWVBUT10gcmVhZG9ubHkgYXR0cmli
dXRlIFN1YnRsZUNyeXB0byBzdWJ0bGU7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBBcnJheUJ1
ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKFtSZXR1cm5WYWx1ZV0gQXJyYXlCdWZmZXJWaWV3IGFy
cmF5KTsKKyAgICBBcnJheUJ1ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKFtSZXR1cm5WYWx1ZV0g
QXJyYXlCdWZmZXJWaWV3IGFycmF5KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxl
Y3Rpb24uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIzICs0NCwyMyBAQAogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBSYW5nZSBnZXRSYW5nZUF0KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFJhbmdlIGdldFJh
bmdlQXQodW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdW5kZWZpbmVkIGFkZFJhbmdlKFJhbmdl
IHJhbmdlKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1MaXZlUmFuZ2VTZWxlY3Rpb24sIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlUmFuZ2UoUmFuZ2UgcmFuZ2UpOworICAgIFtF
bmFibGVkQnlTZXR0aW5nPUxpdmVSYW5nZVNlbGVjdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVJhbmdl
KFJhbmdlIHJhbmdlKTsKICAgICB1bmRlZmluZWQgcmVtb3ZlQWxsUmFuZ2VzKCk7CiAKICAgICB1
bmRlZmluZWQgZW1wdHkoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNv
bGxhcHNlKE5vZGU/IG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UG9zaXRpb24oTm9kZT8gbm9kZSwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICB1bmRlZmluZWQgY29sbGFw
c2UoTm9kZT8gbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICB1
bmRlZmluZWQgc2V0UG9zaXRpb24oTm9kZT8gbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBv
ZmZzZXQgPSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbGxhcHNl
VG9TdGFydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbGxhcHNlVG9F
bmQoKTsKKyAgICB1bmRlZmluZWQgY29sbGFwc2VUb1N0YXJ0KCk7CisgICAgdW5kZWZpbmVkIGNv
bGxhcHNlVG9FbmQoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGV4dGVu
ZChOb2RlIG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdW5k
ZWZpbmVkIGV4dGVuZChOb2RlIG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0g
MCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRCYXNlQW5kRXh0ZW50
KE5vZGU/IGJhc2VOb2RlLCB1bnNpZ25lZCBsb25nIGJhc2VPZmZzZXQsIE5vZGU/IGV4dGVudE5v
ZGUsIHVuc2lnbmVkIGxvbmcgZXh0ZW50T2Zmc2V0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBzZWxlY3RBbGxDaGlsZHJlbihOb2RlIG5vZGUpOworICAgIHVuZGVmaW5lZCBz
ZXRCYXNlQW5kRXh0ZW50KE5vZGU/IGJhc2VOb2RlLCB1bnNpZ25lZCBsb25nIGJhc2VPZmZzZXQs
IE5vZGU/IGV4dGVudE5vZGUsIHVuc2lnbmVkIGxvbmcgZXh0ZW50T2Zmc2V0KTsKKyAgICB1bmRl
ZmluZWQgc2VsZWN0QWxsQ2hpbGRyZW4oTm9kZSBub2RlKTsKIAogICAgIFtDRVJlYWN0aW9uc10g
dW5kZWZpbmVkIGRlbGV0ZUZyb21Eb2N1bWVudCgpOwogICAgIGJvb2xlYW4gY29udGFpbnNOb2Rl
KE5vZGUgbm9kZSwgb3B0aW9uYWwgYm9vbGVhbiBhbGxvd1BhcnRpYWxDb250YWlubWVudCA9IGZh
bHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NDcyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NzUsNyArNzUsNyBAQAogICAgIFtEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciwgQ3VzdG9tU2V0
dGVyXSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IG9wZW5lcjsKICAgICBbUmVwbGFjZWFibGUsIERv
Tm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/
IHBhcmVudDsKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBF
bGVtZW50PyBmcmFtZUVsZW1lbnQ7Ci0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdp
bmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIFdpbmRvd1Byb3h5PyBvcGVuKG9wdGlvbmFsIFVTVlN0
cmluZyB1cmwgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHRhcmdldCA9ICJfYmxhbmsiLCBvcHRp
b25hbCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBmZWF0dXJlcyA9ICIiKTsK
KyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBXaW5kb3dQcm94eT8gb3Bl
bihvcHRpb25hbCBVU1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQg
PSAiX2JsYW5rIiwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
ZmVhdHVyZXMgPSAiIik7CiAKICAgICAvLyB0aGUgdXNlciBhZ2VudAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBOYXZpZ2F0b3IgbmF2aWdhdG9yOwpAQCAtOTEsOCArOTEsOCBAQAogICAgIERPTVN0
cmluZz8gcHJvbXB0KG9wdGlvbmFsIERPTVN0cmluZyBtZXNzYWdlID0gIiIsIG9wdGlvbmFsIERP
TVN0cmluZyBkZWZhdWx0VmFsdWUgPSAiIik7CiAgICAgdW5kZWZpbmVkIHByaW50KCk7CiAKLSAg
ICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3Vy
aXR5LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdl
LCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5z
ZmVyID0gW10pOwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBE
b05vdENoZWNrU2VjdXJpdHksIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3Nh
Z2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFdpbmRvd1Bvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25z
KTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVj
a1NlY3VyaXR5XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0
YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Cisg
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1
cml0eV0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBXaW5kb3dQ
b3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CiAKIAogICAgIC8vIE9ic29sZXRlOiBTdGlsbCBw
YXJ0IG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvI1dpbmRvdy1wYXJ0aWFsKS4KQEAgLTEzMCw4ICsxMzAsOCBAQAogICAgIFdlYktpdFBvaW50
IHdlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBu
dWxsLCBvcHRpb25hbCBXZWJLaXRQb2ludD8gcCA9IG51bGwpOwogCiAgICAgLy8gSW50ZXJuYWwg
b3BlcmF0aW9ucywgbm90IGV4cG9zZWQgdG8gdGhlIFdlYi4KLSAgICBbTWF5VGhyb3dFeGNlcHRp
b24sIEVuYWJsZWRGb3JXb3JsZD1zaGFkb3dSb290SXNBbHdheXNPcGVuXSBOb2RlTGlzdCBjb2xs
ZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUoTm9kZSBzY29wZSwgRE9NU3RyaW5nIHNlbGVj
dG9ycyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9v
dElzQWx3YXlzT3Blbl0gRWxlbWVudD8gbWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJlZShOb2RlIHNj
b3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jv
b3RJc0Fsd2F5c09wZW5dIE5vZGVMaXN0IGNvbGxlY3RNYXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJl
ZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbRW5hYmxlZEZvcldvcmxk
PXNoYWRvd1Jvb3RJc0Fsd2F5c09wZW5dIEVsZW1lbnQ/IG1hdGNoaW5nRWxlbWVudEluRmxhdFRy
ZWUoTm9kZSBzY29wZSwgRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiB9OwogCiBbCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvSGlzdG9yeS5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAKICAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBnbyhvcHRpb25hbCBsb25nIGRlbHRhID0gMCk7CiAK
ICAgICAvLyBGSVhNRTogdGl0bGUgc2hvdWxkIG5vdCBiZSBudWxsYWJsZSBhcyBwZXIgdGhlIEhU
TUwgc3BlY2lmaWNhdGlvbi4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwdXNo
U3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIERPTVN0cmluZz8gdGl0bGUsIG9wdGlv
bmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgcmVwbGFjZVN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/
IHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOworICAgIHVuZGVmaW5lZCBw
dXNoU3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIERPTVN0cmluZz8gdGl0bGUsIG9w
dGlvbmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CisgICAgdW5kZWZpbmVkIHJlcGxhY2VTdGF0
ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgRE9NU3RyaW5nPyB0aXRsZSwgb3B0aW9uYWwg
VVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKIH07CiAKIGVudW0gU2Nyb2xsUmVzdG9yYXRpb24geyAi
YXV0byIsICJtYW51YWwiIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNp
b24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDggKzQ1LDggQEAKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0
dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlP
blNldHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0Nh
bGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKKyAgICBbRG9Ob3RD
aGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5l
ZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwogICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3ddIHVu
ZGVmaW5lZCByZWxvYWQoKTsKIAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yK0lzTG9nZ2VkSW4uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yK0lzTG9nZ2VkSW4uaWRsCShy
ZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcitJc0xvZ2dl
ZEluLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNSArMzAsNSBAQAogXSBwYXJ0aWFsIGludGVy
ZmFjZSBOYXZpZ2F0b3IgewogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRMb2dnZWRJbigpOwog
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRMb2dnZWRPdXQoKTsKLSAgICBQcm9taXNlPGJvb2w+
IGlzTG9nZ2VkSW4oKTsKKyAgICBQcm9taXNlPGJvb2xlYW4+IGlzTG9nZ2VkSW4oKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwJ
KHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2Vydmlj
ZVdvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDUgKzI4LDUgQEAKICAgICBDb25kaXRp
b25hbD1TRVJWSUNFX1dPUktFUiwKICAgICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIK
IF0gaW50ZXJmYWNlIG1peGluIE5hdmlnYXRvclNlcnZpY2VXb3JrZXIgewotICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbiwgU2VjdXJlQ29udGV4
dCwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJDb250YWluZXIg
c2VydmljZVdvcmtlcjsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgU2Vj
dXJlQ29udGV4dCwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJD
b250YWluZXIgc2VydmljZVdvcmtlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlK1VzZXJUaW1pbmcuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UrVXNlclRpbWluZy5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UrVXNlclRpbWluZy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDggQEAKIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3VzZXItdGltaW5n
LyNleHRlbnNpb25zLXBlcmZvcm1hbmNlLWludGVyZmFjZQogcGFydGlhbCBpbnRlcmZhY2UgUGVy
Zm9ybWFuY2UgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBQZXJmb3JtYW5jZU1hcmsgbWFyayhET01TdHJpbmcgbWFya05hbWUsIG9wdGlvbmFsIFBlcmZv
cm1hbmNlTWFya09wdGlvbnMgbWFya09wdGlvbnMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmpl
Y3RdIFBlcmZvcm1hbmNlTWFyayBtYXJrKERPTVN0cmluZyBtYXJrTmFtZSwgb3B0aW9uYWwgUGVy
Zm9ybWFuY2VNYXJrT3B0aW9ucyBtYXJrT3B0aW9ucyk7CiAgICAgdW5kZWZpbmVkIGNsZWFyTWFy
a3Mob3B0aW9uYWwgRE9NU3RyaW5nIG1hcmtOYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gUGVyZm9ybWFuY2VNZWFzdXJlIG1lYXN1cmUoRE9NU3Ry
aW5nIG1lYXN1cmVOYW1lLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFBlcmZvcm1hbmNlTWVhc3Vy
ZU9wdGlvbnMpIHN0YXJ0T3JNZWFzdXJlT3B0aW9ucywgb3B0aW9uYWwgRE9NU3RyaW5nIGVuZE1h
cmspOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIFBlcmZvcm1hbmNlTWVhc3VyZSBtZWFz
dXJlKERPTVN0cmluZyBtZWFzdXJlTmFtZSwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBQZXJmb3Jt
YW5jZU1lYXN1cmVPcHRpb25zKSBzdGFydE9yTWVhc3VyZU9wdGlvbnMsIG9wdGlvbmFsIERPTVN0
cmluZyBlbmRNYXJrKTsKICAgICB1bmRlZmluZWQgY2xlYXJNZWFzdXJlcyhvcHRpb25hbCBET01T
dHJpbmcgbWVhc3VyZU5hbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VPYnNlcnZlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZU9ic2VydmVyLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQAogXSBpbnRlcmZhY2UgUGVyZm9ybWFuY2VPYnNlcnZlciB7CiAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKFBlcmZvcm1hbmNlT2JzZXJ2ZXJDYWxs
YmFjayBjYWxsYmFjayk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBvYnNl
cnZlKFBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IG9wdGlvbnMpOworICAgIHVuZGVmaW5lZCBvYnNl
cnZlKFBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IG9wdGlvbnMpOwogICAgIHVuZGVmaW5lZCBkaXNj
b25uZWN0KCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBy
ZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RE9NU3RyaW5nPiBzdXBwb3J0ZWRFbnRyeVR5
cGVzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVW5kb01hbmFnZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVW5kb01hbmFnZXIuaWRsCShyZXZpc2lvbiAy
NzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjksNSArMjksNSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3Vt
ZW50LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBVbmRvTWFuYWdlciB7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWRkSXRlbShVbmRvSXRlbSBpdGVtKTsKKyAg
ICB1bmRlZmluZWQgYWRkSXRlbShVbmRvSXRlbSBpdGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDUgKzMwLDUgQEAKICAgICBDb25kaXRpb25hbD1VU0VSX01FU1NBR0VfSEFORExFUlMs
CiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFVzZXJNZXNzYWdlSGFuZGxlciB7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIG1lc3NhZ2UpOworICAgIFByb21pc2U8YW55PiBwb3N0TWVzc2FnZShTZXJp
YWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzQ3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC01MCwxNSArNTAsMTUgQEAgaW50ZXJmYWNlIG1peGluIFdpbmRvd09y
V29ya2VyR2xvYmFsU2NvcAogICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNyb3Nz
T3JpZ2luSXNvbGF0ZWQ7CiAgCiAgICAgLy8gQmFzZTY0IHV0aWxpdHkgbWV0aG9kcy4KLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBhdG9iKERPTVN0cmluZyBzdHJpbmcpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGJ0b2EoRE9NU3RyaW5nIHN0cmluZyk7Cisg
ICAgRE9NU3RyaW5nIGF0b2IoRE9NU3RyaW5nIHN0cmluZyk7CisgICAgRE9NU3RyaW5nIGJ0b2Eo
RE9NU3RyaW5nIHN0cmluZyk7CiAKICAgICAvLyBUaW1lcnMuCiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHRha2UgYSBUaW1lckhhbmRsZXIgKGEuay5hLiAoRE9NU3RyaW5nIG9yIEZ1bmN0aW9u
KSkgcmF0aGVyIHRoYW4gYSBTY2hlZHVsZWRBY3Rpb24uCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9i
amVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgc2V0VGltZW91dChTY2hlZHVsZWRBY3Rpb24g
aGFuZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55Li4uIGFyZ3VtZW50cyk7Cisg
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gbG9uZyBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlv
biBoYW5kbGVyLCBvcHRpb25hbCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsK
ICAgICB1bmRlZmluZWQgY2xlYXJUaW1lb3V0KG9wdGlvbmFsIGxvbmcgaGFuZGxlID0gMCk7CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgYSBUaW1lckhhbmRsZXIgKGEuay5hLiAoRE9N
U3RyaW5nIG9yIEZ1bmN0aW9uKSkgcmF0aGVyIHRoYW4gYSBTY2hlZHVsZWRBY3Rpb24uCi0gICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgc2V0SW50ZXJ2
YWwoU2NoZWR1bGVkQWN0aW9uIGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFu
eS4uLiBhcmd1bWVudHMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGxvbmcgc2V0SW50
ZXJ2YWwoU2NoZWR1bGVkQWN0aW9uIGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAs
IGFueS4uLiBhcmd1bWVudHMpOwogICAgIHVuZGVmaW5lZCBjbGVhckludGVydmFsKG9wdGlvbmFs
IGxvbmcgaGFuZGxlID0gMCk7CiAKICAgICAvLyBtaWNyb3Rhc2sgcXVldWluZy4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNSArMzMsNSBA
QAogICAgIGdldHRlciBET01TdHJpbmc/IGdldEl0ZW0oRE9NU3RyaW5nIGtleSk7CiAgICAgc2V0
dGVyIHVuZGVmaW5lZCBzZXRJdGVtKERPTVN0cmluZyBrZXksIERPTVN0cmluZyBkYXRhKTsKICAg
ICBkZWxldGVyIHVuZGVmaW5lZCByZW1vdmVJdGVtKERPTVN0cmluZyBrZXkpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyKCk7CisgICAgdW5kZWZpbmVkIGNsZWFyKCk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw2IEBACiAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlQXNTdHJpbmc7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2ln
bmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVu
aXRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb252ZXJ0VG9TcGVjaWZp
ZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CisgICAgdW5kZWZpbmVkIG5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJpY3RlZCBmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgIHVuZGVmaW5lZCBjb252ZXJ0VG9TcGVjaWZp
ZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw1ICszMSw1IEBACiAgICAgYm9vbGVhbiBpc1BvaW50SW5GaWxsKG9wdGlvbmFsIERPTVBvaW50
SW5pdCBwb2ludCk7CiAgICAgYm9vbGVhbiBpc1BvaW50SW5TdHJva2Uob3B0aW9uYWwgRE9NUG9p
bnRJbml0IHBvaW50KTsKICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0VG90YWxMZW5ndGgoKTsK
LSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgZ2V0UG9pbnRBdExl
bmd0aChmbG9hdCBkaXN0YW5jZSk7CisgICAgW05ld09iamVjdF0gU1ZHUG9pbnQgZ2V0UG9pbnRB
dExlbmd0aChmbG9hdCBkaXN0YW5jZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYXBoaWNzRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYXBoaWNzRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBACiAgICAgW0ltcGxlbWVudGVkQXM9Z2V0U2NyZWVuQ1RNRm9yQmluZGluZ3MsIE5ld09iamVj
dF0gU1ZHTWF0cml4IGdldFNjcmVlbkNUTSgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IGluIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBoYXMgYmVlbiBkcm9wcGVkIGJ5IEJsaW5rLgotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdNYXRyaXggZ2V0VHJhbnNmb3JtVG9F
bGVtZW50KG9wdGlvbmFsIFNWR0VsZW1lbnQ/IGVsZW1lbnQgPSBudWxsKTsKKyAgICBbTmV3T2Jq
ZWN0XSBTVkdNYXRyaXggZ2V0VHJhbnNmb3JtVG9FbGVtZW50KG9wdGlvbmFsIFNWR0VsZW1lbnQ/
IGVsZW1lbnQgPSBudWxsKTsKIH07CiAKIFNWR0dyYXBoaWNzRWxlbWVudCBpbmNsdWRlcyBTVkdU
ZXN0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNiBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNp
ZmllZFVuaXRzOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWVBc1N0cmluZzsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVk
VW5pdHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbnZlcnRUb1NwZWNp
ZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKKyAgICB1bmRlZmluZWQgbmV3VmFs
dWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0cmljdGVkIGZs
b2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgdW5kZWZpbmVkIGNvbnZlcnRUb1NwZWNp
ZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xlbmd0aExpc3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICszMSwxMiBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xlYXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR0xlbmd0aCBpbml0aWFsaXplKFNWR0xlbmd0aCBuZXdJdGVtKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIGdldHRlciBTVkdMZW5ndGggZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR0xlbmd0aCBpbnNlcnRJdGVtQmVmb3JlKFNWR0xl
bmd0aCBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFNWR0xlbmd0aCByZXBsYWNlSXRlbShTVkdMZW5ndGggbmV3SXRlbSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGggcmVtb3ZlSXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR0xlbmd0aCBh
cHBlbmRJdGVtKFNWR0xlbmd0aCBuZXdJdGVtKTsKKyAgICB1bmRlZmluZWQgY2xlYXIoKTsKKyAg
ICBTVkdMZW5ndGggaW5pdGlhbGl6ZShTVkdMZW5ndGggbmV3SXRlbSk7CisgICAgZ2V0dGVyIFNW
R0xlbmd0aCBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR0xlbmd0aCBpbnNl
cnRJdGVtQmVmb3JlKFNWR0xlbmd0aCBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBTVkdMZW5ndGggcmVwbGFjZUl0ZW0oU1ZHTGVuZ3RoIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgIFNWR0xlbmd0aCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFNWR0xlbmd0aCBhcHBlbmRJdGVtKFNWR0xlbmd0aCBuZXdJdGVtKTsKICAgICBzZXR0ZXIg
dW5kZWZpbmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBTVkdMZW5ndGggbmV3SXRlbSk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUs
MTIgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBmOwogCiAgICAgW05ld09i
amVjdF0gU1ZHTWF0cml4IG11bHRpcGx5KFNWR01hdHJpeCBzZWNvbmRNYXRyaXgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdNYXRyaXggaW52ZXJzZSgpOworICAgIFtO
ZXdPYmplY3RdIFNWR01hdHJpeCBpbnZlcnNlKCk7CiAgICAgW05ld09iamVjdF0gU1ZHTWF0cml4
IHRyYW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOwog
ICAgIFtOZXdPYmplY3RdIFNWR01hdHJpeCBzY2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVG
YWN0b3IpOwogICAgIFtOZXdPYmplY3RdIFNWR01hdHJpeCBzY2FsZU5vblVuaWZvcm0odW5yZXN0
cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9y
WSk7CiAgICAgW05ld09iamVjdF0gU1ZHTWF0cml4IHJvdGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQg
YW5nbGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdNYXRyaXggcm90
YXRlRnJvbVZlY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkp
OworICAgIFtOZXdPYmplY3RdIFNWR01hdHJpeCByb3RhdGVGcm9tVmVjdG9yKHVucmVzdHJpY3Rl
ZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CiAgICAgW05ld09iamVjdF0gU1ZHTWF0
cml4IGZsaXBYKCk7CiAgICAgW05ld09iamVjdF0gU1ZHTWF0cml4IGZsaXBZKCk7CiAgICAgW05l
d09iamVjdF0gU1ZHTWF0cml4IHNrZXdYKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDEyICszMCwxMiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xlYXIoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFNWR051bWJlciBpbml0aWFsaXplKFNWR051bWJlciBuZXdJdGVtKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIGdldHRlciBTVkdOdW1iZXIgZ2V0SXRlbSh1bnNpZ25lZCBs
b25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBpbnNlcnRJdGVt
QmVmb3JlKFNWR051bWJlciBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciByZXBsYWNlSXRlbShTVkdOdW1iZXIgbmV3SXRlbSwg
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIg
cmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR051bWJlciBhcHBlbmRJdGVtKFNWR051bWJlciBuZXdJdGVtKTsKKyAgICB1bmRlZmluZWQg
Y2xlYXIoKTsKKyAgICBTVkdOdW1iZXIgaW5pdGlhbGl6ZShTVkdOdW1iZXIgbmV3SXRlbSk7Cisg
ICAgZ2V0dGVyIFNWR051bWJlciBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNW
R051bWJlciBpbnNlcnRJdGVtQmVmb3JlKFNWR051bWJlciBuZXdJdGVtLCB1bnNpZ25lZCBsb25n
IGluZGV4KTsKKyAgICBTVkdOdW1iZXIgcmVwbGFjZUl0ZW0oU1ZHTnVtYmVyIG5ld0l0ZW0sIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR051bWJlciByZW1vdmVJdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworICAgIFNWR051bWJlciBhcHBlbmRJdGVtKFNWR051bWJlciBuZXdJdGVtKTsK
ICAgICBzZXR0ZXIgdW5kZWZpbmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBTVkdOdW1iZXIgbmV3
SXRlbSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsCShyZXZp
c2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNs
ZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIGluaXRpYWxpemUoU1ZH
UGF0aFNlZyBuZXdJdGVtKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGdldHRlciBTVkdQYXRo
U2VnIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdQYXRoU2VnIGluc2VydEl0ZW1CZWZvcmUoU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgcmVwbGFj
ZUl0ZW0oU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgYXBwZW5kSXRlbShTVkdQYXRo
U2VnIG5ld0l0ZW0pOworICAgIHVuZGVmaW5lZCBjbGVhcigpOworICAgIFNWR1BhdGhTZWcgaW5p
dGlhbGl6ZShTVkdQYXRoU2VnIG5ld0l0ZW0pOworICAgIGdldHRlciBTVkdQYXRoU2VnIGdldEl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUGF0aFNlZyBpbnNlcnRJdGVtQmVmb3Jl
KFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUGF0aFNl
ZyByZXBsYWNlSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFNWR1BhdGhTZWcgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQ
YXRoU2VnIGFwcGVuZEl0ZW0oU1ZHUGF0aFNlZyBuZXdJdGVtKTsKICAgICBzZXR0ZXIgdW5kZWZp
bmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBTVkdQYXRoU2VnIG5ld0l0ZW0pOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIg
KzI5LDEyIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gU1ZHUG9pbnQgaW5pdGlhbGl6ZShTVkdQb2ludCBuZXdJdGVtKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIGdldHRlciBTVkdQb2ludCBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgaW5zZXJ0SXRlbUJlZm9yZShT
VkdQb2ludCBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFNWR1BvaW50IHJlcGxhY2VJdGVtKFNWR1BvaW50IG5ld0l0ZW0sIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgcmVtb3ZlSXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50IGFw
cGVuZEl0ZW0oU1ZHUG9pbnQgbmV3SXRlbSk7CisgICAgdW5kZWZpbmVkIGNsZWFyKCk7CisgICAg
U1ZHUG9pbnQgaW5pdGlhbGl6ZShTVkdQb2ludCBuZXdJdGVtKTsKKyAgICBnZXR0ZXIgU1ZHUG9p
bnQgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQb2ludCBpbnNlcnRJdGVt
QmVmb3JlKFNWR1BvaW50IG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1Bv
aW50IHJlcGxhY2VJdGVtKFNWR1BvaW50IG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFNWR1BvaW50IHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9p
bnQgYXBwZW5kSXRlbShTVkdQb2ludCBuZXdJdGVtKTsKICAgICBzZXR0ZXIgdW5kZWZpbmVkICh1
bnNpZ25lZCBsb25nIGluZGV4LCBTVkdQb2ludCBuZXdJdGVtKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0cmluZ0xpc3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwx
MiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xlYXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyBpbml0aWFsaXplKERPTVN0cmluZyBuZXdJdGVtKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGdldHRlciBET01TdHJpbmcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBpbnNlcnRJdGVtQmVmb3JlKERP
TVN0cmluZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyByZXBsYWNlSXRlbShET01TdHJpbmcgbmV3SXRlbSwgdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVtb3ZlSXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBhcHBlbmRJdGVtKERPTVN0cmluZyBuZXdJdGVtKTsKKyAgICB1bmRlZmluZWQgY2xlYXIoKTsK
KyAgICBET01TdHJpbmcgaW5pdGlhbGl6ZShET01TdHJpbmcgbmV3SXRlbSk7CisgICAgZ2V0dGVy
IERPTVN0cmluZyBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBp
bnNlcnRJdGVtQmVmb3JlKERPTVN0cmluZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICBET01TdHJpbmcgcmVwbGFjZUl0ZW0oRE9NU3RyaW5nIG5ld0l0ZW0sIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworICAgIERPTVN0cmluZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIERPTVN0cmluZyBhcHBlbmRJdGVtKERPTVN0cmluZyBuZXdJdGVtKTsKICAgICBzZXR0
ZXIgdW5kZWZpbmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBET01TdHJpbmcgbmV3SXRlbSk7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5pZGwJ
KHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTEgQEAKIAogICAgIGxvbmcg
Z2V0TnVtYmVyT2ZDaGFycygpOwogICAgIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRDb21wdXRlZFRl
eHRMZW5ndGgoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9hdCBn
ZXRTdWJTdHJpbmdMZW5ndGgob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwLCBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGxlbmd0aCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBTVkdQb2ludCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0ID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3Rd
IFNWR1BvaW50IGdldEVuZFBvc2l0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0ID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR1JlY3QgZ2V0
RXh0ZW50T2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Um90YXRpb25PZkNoYXIob3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICB1bnJlc3RyaWN0ZWQgZmxvYXQg
Z2V0U3ViU3RyaW5nTGVuZ3RoKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwKTsKKyAgICBbTmV3T2JqZWN0XSBTVkdQb2lu
dCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0g
MCk7CisgICAgW05ld09iamVjdF0gU1ZHUG9pbnQgZ2V0RW5kUG9zaXRpb25PZkNoYXIob3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICBbTmV3T2JqZWN0XSBTVkdSZWN0IGdl
dEV4dGVudE9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIHVu
cmVzdHJpY3RlZCBmbG9hdCBnZXRSb3RhdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG9mZnNldCA9IDApOwogICAgIGxvbmcgZ2V0Q2hhck51bUF0UG9zaXRpb24oRE9NUG9pbnRJbml0
IHBvaW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZWxlY3RTdWJTdHJp
bmcob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIGxlbmd0aCA9IDApOworICAgIHVuZGVmaW5lZCBzZWxlY3RTdWJTdHJpbmcob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxlbmd0aCA9
IDApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCShyZXZpc2lvbiAy
NzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTEgKzM2LDExIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR01hdHJp
eCBtYXRyaXg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBhbmds
ZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE1hdHJpeChvcHRpb25h
bCBET01NYXRyaXgyREluaXQgbWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzZXRUcmFuc2xhdGUodW5yZXN0cmljdGVkIGZsb2F0IHR4LCB1bnJlc3RyaWN0ZWQgZmxv
YXQgdHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNjYWxlKHVucmVz
dHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRSb3RhdGUodW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlLCB1
bnJlc3RyaWN0ZWQgZmxvYXQgY3gsIHVucmVzdHJpY3RlZCBmbG9hdCBjeSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2tld1godW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTa2V3WSh1bnJlc3RyaWN0
ZWQgZmxvYXQgYW5nbGUpOworICAgIHVuZGVmaW5lZCBzZXRNYXRyaXgob3B0aW9uYWwgRE9NTWF0
cml4MkRJbml0IG1hdHJpeCk7CisgICAgdW5kZWZpbmVkIHNldFRyYW5zbGF0ZSh1bnJlc3RyaWN0
ZWQgZmxvYXQgdHgsIHVucmVzdHJpY3RlZCBmbG9hdCB0eSk7CisgICAgdW5kZWZpbmVkIHNldFNj
YWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5KTsKKyAgICB1
bmRlZmluZWQgc2V0Um90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSwgdW5yZXN0cmljdGVk
IGZsb2F0IGN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3kpOworICAgIHVuZGVmaW5lZCBzZXRTa2V3
WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOworICAgIHVuZGVmaW5lZCBzZXRTa2V3WSh1bnJl
c3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm1MaXN0LmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTUgQEAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBT
VkdUcmFuc2Zvcm0gaW5pdGlhbGl6ZShTVkdUcmFuc2Zvcm0gbmV3SXRlbSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBnZXR0ZXIgU1ZHVHJhbnNmb3JtIGdldEl0ZW0odW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gaW5zZXJ0SXRlbUJl
Zm9yZShTVkdUcmFuc2Zvcm0gbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gcmVwbGFjZUl0ZW0oU1ZHVHJhbnNmb3JtIG5l
d0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZH
VHJhbnNmb3JtIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gYXBwZW5kSXRlbShTVkdUcmFuc2Zvcm0gbmV3SXRlbSk7
CisgICAgdW5kZWZpbmVkIGNsZWFyKCk7CisgICAgU1ZHVHJhbnNmb3JtIGluaXRpYWxpemUoU1ZH
VHJhbnNmb3JtIG5ld0l0ZW0pOworICAgIGdldHRlciBTVkdUcmFuc2Zvcm0gZ2V0SXRlbSh1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdUcmFuc2Zvcm0gaW5zZXJ0SXRlbUJlZm9yZShTVkdU
cmFuc2Zvcm0gbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHVHJhbnNmb3Jt
IHJlcGxhY2VJdGVtKFNWR1RyYW5zZm9ybSBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICBTVkdUcmFuc2Zvcm0gcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBT
VkdUcmFuc2Zvcm0gYXBwZW5kSXRlbShTVkdUcmFuc2Zvcm0gbmV3SXRlbSk7CiAgICAgc2V0dGVy
IHVuZGVmaW5lZCAodW5zaWduZWQgbG9uZyBpbmRleCwgU1ZHVHJhbnNmb3JtIG5ld0l0ZW0pOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR1RyYW5zZm9ybSBjcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeDJESW5pdCBtYXRyaXgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CisgICAg
W05ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgob3B0
aW9uYWwgRE9NTWF0cml4MkRJbml0IG1hdHJpeCk7CisgICAgU1ZHVHJhbnNmb3JtIGNvbnNvbGlk
YXRlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyNCArNDAsMjQgQEAgZW51bSBV
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5IHsgIkNvbgogICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgSW50ZXJuYWxTZXR0aW5ncyA6IElu
dGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewogICAgIC8vIFNldHRpbmdzCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KERPTVN0cmluZyBmYW1p
bHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHNldFNlcmlmRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5
KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldEZpeGVkRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01T
dHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRDdXJz
aXZlRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRGYW50YXN5Rm9udEZhbWlseShET01TdHJp
bmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBzZXRQaWN0b2dyYXBoRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJp
bmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRGb250TG9h
ZFRpbWluZ092ZXJyaWRlKEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUgb3ZlcnJpZGUpOworICAgIHVu
ZGVmaW5lZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5n
IHNjcmlwdCk7CisgICAgdW5kZWZpbmVkIHNldFNlcmlmRm9udEZhbWlseShET01TdHJpbmcgZmFt
aWx5LCBET01TdHJpbmcgc2NyaXB0KTsKKyAgICB1bmRlZmluZWQgc2V0U2Fuc1NlcmlmRm9udEZh
bWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKKyAgICB1bmRlZmluZWQg
c2V0Rml4ZWRGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwor
ICAgIHVuZGVmaW5lZCBzZXRDdXJzaXZlRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01T
dHJpbmcgc2NyaXB0KTsKKyAgICB1bmRlZmluZWQgc2V0RmFudGFzeUZvbnRGYW1pbHkoRE9NU3Ry
aW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdW5kZWZpbmVkIHNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHVu
ZGVmaW5lZCBzZXRGb250TG9hZFRpbWluZ092ZXJyaWRlKEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUg
b3ZlcnJpZGUpOwogICAgIC8vIEZvcndhcmRzIHRvIFRleHRBdXRvc2l6aW5nV2luZG93U2l6ZU92
ZXJyaWRlSGVpZ2h0IGFuZCBUZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZVdpZHRoLgot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFRleHRBdXRvc2l6aW5nV2luZG93
U2l6ZU92ZXJyaWRlKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdD
b250cm9scyh1bnJlc3RyaWN0ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh1bnJlc3Ry
aWN0ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yVHlwZSBiZWhhdmlv
cik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldFBERkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQ
b2xpY3kgcG9saWN5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRGcmFt
ZUZsYXR0ZW5pbmcoRnJhbWVGbGF0dGVuaW5nVmFsdWUgZnJhbWVGbGF0dGVuaW5nKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9s
aWN5KFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgcG9saWN5KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oU3lzdGVtTGF5b3V0
RGlyZWN0aW9uIGRpcmVjdGlvbik7CisgICAgdW5kZWZpbmVkIHNldFRleHRBdXRvc2l6aW5nV2lu
ZG93U2l6ZU92ZXJyaWRlKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB1bmRlZmluZWQg
c2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHModW5yZXN0cmlj
dGVkIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcyk7CisgICAgdW5kZWZpbmVkIHNldE1pbmltdW1U
aW1lckludGVydmFsKHVucmVzdHJpY3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOworICAg
IHVuZGVmaW5lZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yVHlwZSBiZWhhdmlv
cik7CisgICAgdW5kZWZpbmVkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTdG9yYWdlQmxvY2tp
bmdQb2xpY3kgcG9saWN5KTsKKyAgICB1bmRlZmluZWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5
KFBERkltYWdlQ2FjaGluZ1BvbGljeSBwb2xpY3kpOworICAgIHVuZGVmaW5lZCBzZXRGcmFtZUZs
YXR0ZW5pbmcoRnJhbWVGbGF0dGVuaW5nVmFsdWUgZnJhbWVGbGF0dGVuaW5nKTsKKyAgICB1bmRl
ZmluZWQgc2V0VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeShVc2VySW50ZXJmYWNlRGlyZWN0
aW9uUG9saWN5IHBvbGljeSk7CisgICAgdW5kZWZpbmVkIHNldFN5c3RlbUxheW91dERpcmVjdGlv
bihTeXN0ZW1MYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uKTsKICAgICBhdHRyaWJ1dGUgRm9yY2Vk
QWNjZXNzaWJpbGl0eVZhbHVlIGZvcmNlZENvbG9yc0FyZUludmVydGVkQWNjZXNzaWJpbGl0eVZh
bHVlOwogICAgIGF0dHJpYnV0ZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkRGlzcGxh
eUlzTW9ub2Nocm9tZUFjY2Vzc2liaWxpdHlWYWx1ZTsKICAgICBhdHRyaWJ1dGUgRm9yY2VkQWNj
ZXNzaWJpbGl0eVZhbHVlIGZvcmNlZFByZWZlcnNDb250cmFzdEFjY2Vzc2liaWxpdHlWYWx1ZTsK
QEAgLTY1LDM0ICs2NSwzNCBAQCBlbnVtIFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgeyAi
Q29uCiAgICAgYXR0cmlidXRlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3JjZWRTdXBwb3J0
c0hpZ2hEeW5hbWljUmFuZ2VWYWx1ZTsKIAogICAgIC8vIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0V2ViR0wyRW5hYmxlZChib29s
ZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFdlYkdQ
VUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzZXRGZXRjaEFQSUtlZXBBbGl2ZUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJs
ZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0V2ViR0wyRW5hYmxlZChib29s
ZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRXZWJHUFVFbmFibGVkKGJvb2xlYW4gZW5h
YmxlZCk7CisgICAgdW5kZWZpbmVkIHNldEZldGNoQVBJS2VlcEFsaXZlRW5hYmxlZChib29sZWFu
IGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHZwOURl
Y29kZXJFbmFibGVkOwogCiAgICAgLy8gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLgotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNh
dGVnb3J5KGJvb2xlYW4gc2hvdWxkKTsKKyAgICB1bmRlZmluZWQgc2V0U2hvdWxkTWFuYWdlQXVk
aW9TZXNzaW9uQ2F0ZWdvcnkoYm9vbGVhbiBzaG91bGQpOwogCiAgICAgLy8gQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNob3VsZERp
c3BsYXlUcmFja0tpbmQoVHJhY2tLaW5kIGtpbmQsIGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBib29sZWFuIHNob3VsZERpc3BsYXlUcmFja0tpbmQoVHJhY2tLaW5k
IGtpbmQpOworICAgIHVuZGVmaW5lZCBzZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKFRyYWNrS2lu
ZCBraW5kLCBib29sZWFuIGVuYWJsZWQpOworICAgIGJvb2xlYW4gc2hvdWxkRGlzcGxheVRyYWNr
S2luZChUcmFja0tpbmQga2luZCk7CiAKICAgICAvLyBQYWdlCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2V0Q2FuU3RhcnRNZWRpYShib29sZWFuIGVuYWJsZWQpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEVkaXRhYmxlUmVnaW9uRW5hYmxlZChib29s
ZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFVzZURh
cmtBcHBlYXJhbmNlKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldENhblN0YXJ0
TWVkaWEoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0RWRpdGFibGVSZWdpb25F
bmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldFVzZURhcmtBcHBlYXJh
bmNlKGJvb2xlYW4gZW5hYmxlZCk7CiAKICAgICAvLyBTY3JvbGxWaWV3Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0QWxsb3dVbmNsYW1wZWRTY3JvbGxQb3NpdGlvbihib29s
ZWFuIGFsbG93VW5jbGFtcGVkKTsKKyAgICB1bmRlZmluZWQgc2V0QWxsb3dVbmNsYW1wZWRTY3Jv
bGxQb3NpdGlvbihib29sZWFuIGFsbG93VW5jbGFtcGVkKTsKIAogICAgIC8vIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRT
aG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKGJvb2xlYW4gc2hvdWxkRGVhY3RpdmF0ZSk7Cisg
ICAgdW5kZWZpbmVkIHNldFNob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24oYm9vbGVhbiBzaG91
bGREZWFjdGl2YXRlKTsKIAogICAgIC8vIFJlbmRlclRoZW1lL0ZvbnRDYWNoZQotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFj
Y2Vzc2liaWxpdHkoYm9vbGVhbiBzaG91bGRNb2NrKTsKKyAgICB1bmRlZmluZWQgc2V0U2hvdWxk
TW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShib29sZWFuIHNob3VsZE1vY2spOwog
CiAgICAgLy8gQXVkaW9Db250ZXh0Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
c2V0RGVmYXVsdEF1ZGlvQ29udGV4dFNhbXBsZVJhdGUoZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
dW5kZWZpbmVkIHNldERlZmF1bHRBdWRpb0NvbnRleHRTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJh
dGUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9u
IDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgwLDcgKzI4MCw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIGJvb2xlYW4g
aXNQYWludGluZ0ZyZXF1ZW50bHkoRWxlbWVudCBlbGVtZW50KTsKICAgICB1bmRlZmluZWQgaW5j
cmVtZW50RnJlcXVlbnRQYWludENvdW50ZXIoRWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQg
ZWxlbWVudCk7CisgICAgRE9NU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQg
ZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc1ByZWxvYWRlZChET01TdHJpbmcgdXJsKTsKICAgICBi
b29sZWFuIGlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShET01TdHJpbmcgdXJsKTsKICAgICBET01T
dHJpbmcgZmV0Y2hSZXNwb25zZVNvdXJjZShGZXRjaFJlc3BvbnNlIHJlc3BvbnNlKTsKQEAgLTMw
OSwyMyArMzA5LDIzIEBAIGVudW0gVHJlZVR5cGUgewogICAgIGxvbmcgZGVmZXJyZWRHcm91cFJ1
bGVzQ291bnQoU3R5bGVTaGVldCBzaGVldCk7CiAgICAgbG9uZyBkZWZlcnJlZEtleWZyYW1lc1J1
bGVzQ291bnQoU3R5bGVTaGVldCBzaGVldCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBzaGFkb3dSb290VHlwZShOb2RlIHJvb3QpOworICAgIERPTVN0cmluZyBzaGFkb3dS
b290VHlwZShOb2RlIHJvb3QpOwogICAgIERPTVN0cmluZyBzaGFkb3dQc2V1ZG9JZChFbGVtZW50
IGVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBzZXRTaGFkb3dQc2V1ZG9JZChFbGVtZW50IGVsZW1l
bnQsIERPTVN0cmluZyBpZCk7CiAgICAgTm9kZSB0cmVlU2NvcGVSb290Tm9kZShOb2RlIG5vZGUp
OwogICAgIE5vZGUgcGFyZW50VHJlZVNjb3BlKE5vZGUgbm9kZSk7CiAKICAgICAvLyBTcGF0aWFs
IE5hdmlnYXRpb24gdGVzdGluZwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9u
ZyBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpOworICAgIHVuc2lnbmVkIGxv
bmcgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKTsKIAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGluZmxpZ2h0QmVhY29uc0NvdW50OwogCiAgICAgLy8g
Q1NTIEFuaW1hdGlvbiB0ZXN0aW5nLgogICAgIGJvb2xlYW4gYW5pbWF0aW9uV2l0aElkRXhpc3Rz
KERPTVN0cmluZyBpZCk7CiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdXNwZW5kQW5pbWF0aW9u
cygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlc3VtZUFuaW1hdGlvbnMo
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gYW5pbWF0aW9uc0FyZVN1c3BlbmRl
ZCgpOworICAgIHVuZGVmaW5lZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHVuZGVmaW5lZCBy
ZXN1bWVBbmltYXRpb25zKCk7CisgICAgYm9vbGVhbiBhbmltYXRpb25zQXJlU3VzcGVuZGVkKCk7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhbmltYXRpb25zSW50ZXJ2YWw7CiAKICAg
ICAvLyBXZWIgQW5pbWF0aW9ucyB0ZXN0aW5nLgpAQCAtMzM0LDUyICszMzQsNTIgQEAgZW51bSBU
cmVlVHlwZSB7CiAgICAgZG91YmxlIHRpbWVUb05leHRBbmltYXRpb25UaWNrKFdlYkFuaW1hdGlv
biBhbmltYXRpb24pOwogCiAgICAgLy8gRm9yIGFuaW1hdGlvbnMgdGVzdGluZywgd2UgbmVlZCBh
IHdheSB0byBnZXQgYXQgcHNldWRvIGVsZW1lbnRzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RWxlbWVudD8gcHNldWRvRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBwc2V1ZG9J
ZCk7CisgICAgRWxlbWVudD8gcHNldWRvRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIERPTVN0cmlu
ZyBwc2V1ZG9JZCk7CiAKICAgICBET01TdHJpbmcgdmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQg
ZWxlbWVudCk7CiAgICAgdW5kZWZpbmVkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElu
cHV0RWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgY29sb3JWYWx1ZSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBzZXF1ZW5jZTxET01TdHJpbmc+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3Vz
SGlzdG9yeUl0ZW0oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRGb3Jt
Q29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKHNlcXVlbmNlPERPTVN0cmluZz4gdmFs
dWVzKTsKKyAgICBzZXF1ZW5jZTxET01TdHJpbmc+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3Vz
SGlzdG9yeUl0ZW0oKTsKKyAgICB1bmRlZmluZWQgc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlv
dXNIaXN0b3J5SXRlbShzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIERPTVJlY3QgYWJzb2x1dGVDYXJldEJvdW5kcygpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBpc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQoKTsKKyAgICBET01S
ZWN0IGFic29sdXRlQ2FyZXRCb3VuZHMoKTsKKyAgICBib29sZWFuIGlzQ2FyZXRCbGlua2luZ1N1
c3BlbmRlZCgpOwogCiAgICAgRE9NUmVjdCBib3VuZGluZ0JveChFbGVtZW50IGVsZW1lbnQpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc3BlY3RvckdyaWRPdmVy
bGF5Q291bnQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3RMaXN0IGluc3BlY3Rv
ckhpZ2hsaWdodFJlY3RzKCk7CisgICAgdW5zaWduZWQgbG9uZyBpbnNwZWN0b3JHcmlkT3Zlcmxh
eUNvdW50KCk7CisgICAgRE9NUmVjdExpc3QgaW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBtYXJrZXJDb3VudEZvck5vZGUo
Tm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBSYW5nZT8gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5
cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJU
eXBlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0
cmluZyBkdW1wTWFya2VyUmVjdHMoRE9NU3RyaW5nIG1hcmtlclR5cGUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
Ym9vbGVhbiBmbGFnKTsKKyAgICB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShOb2Rl
IG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICBSYW5nZT8gbWFya2VyUmFuZ2VGb3JO
b2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9kZSBub2RlLCBET01T
dHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgRE9NU3RyaW5nIGR1
bXBNYXJrZXJSZWN0cyhET01TdHJpbmcgbWFya2VyVHlwZSk7CisgICAgdW5kZWZpbmVkIHNldE1h
cmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoYm9vbGVhbiBmbGFnKTsKIAogICAgIHVuZGVm
aW5lZCBpbnZhbGlkYXRlRm9udENhY2hlKCk7CiAgICAgdW5kZWZpbmVkIHNldEZvbnRTbW9vdGhp
bmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24obG9uZyB4LCBsb25nIHkpOworICAgIHVuZGVm
aW5lZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24obG9uZyB4LCBsb25nIHkpOwogCiAgICAgLy8gTGlr
ZSBFbGVtZW50LnNjcm9sbFRvKCksIGJ1dCB3aXRob3V0IGNvbnN0YWludHMsIGZvciB0ZXN0aW5n
IHJ1YmJlci1iYW5kaW5nLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHVuY29u
c3RyYWluZWRTY3JvbGxUbyhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwg
dW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICB1bmRlZmluZWQgdW5jb25zdHJhaW5lZFNjcm9s
bFRvKEVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHkpOwogCiAgICAgLy8gU2Nyb2xscyB0aGUgZWxlbWVudCBieSB0aGUgZ2l2ZW4gZGVs
dGEsIGFwcHJveGltYXRpbmcgdGhlIGFzeW5jIHdoZWVsIGV2ZW50IGhhbmRsaW5nIGNvZGUgcGF0
aCB3aGVyZSBhdmFpbGFibGUuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2Ny
b2xsQnlTaW11bGF0aW5nV2hlZWxFdmVudChFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBk
b3VibGUgZGVsdGFYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGRlbHRhWSk7CisgICAgdW5kZWZpbmVk
IHNjcm9sbEJ5U2ltdWxhdGluZ1doZWVsRXZlbnQoRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIGRlbHRhWCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkZWx0YVkpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01SZWN0IGxheW91dFZpZXdwb3J0UmVjdCgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCB2aXN1YWxWaWV3cG9ydFJlY3QoKTsKKyAgICBET01SZWN0
IGxheW91dFZpZXdwb3J0UmVjdCgpOworICAgIERPTVJlY3QgdmlzdWFsVmlld3BvcnRSZWN0KCk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRWaWV3SXNUcmFuc3BhcmVu
dChib29sZWFuIHRybmFzcGFyZW50KTsKKyAgICB1bmRlZmluZWQgc2V0Vmlld0lzVHJhbnNwYXJl
bnQoYm9vbGVhbiB0cm5hc3BhcmVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0
cmluZyB2aWV3QmFzZUJhY2tncm91bmRDb2xvcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVl
KTsKKyAgICBET01TdHJpbmcgdmlld0Jhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICB1bmRlZmlu
ZWQgc2V0Vmlld0Jhc2VCYWNrZ3JvdW5kQ29sb3IoRE9NU3RyaW5nIGNvbG9yVmFsdWUpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UGFnaW5hdGlvbihET01TdHJpbmcg
bW9kZSwgbG9uZyBnYXAsIG9wdGlvbmFsIGxvbmcgcGFnZUxlbmd0aCA9IDApOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9v
bGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0UGFnaW5hdGlvbihET01TdHJpbmcgbW9k
ZSwgbG9uZyBnYXAsIG9wdGlvbmFsIGxvbmcgcGFnZUxlbmd0aCA9IDApOworICAgIHVuZGVmaW5l
ZCBzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBjb25maWd1cmF0aW9uRm9yVmlld3BvcnQodW5y
ZXN0cmljdGVkIGZsb2F0IGRldmljZVBpeGVsUmF0aW8sIGxvbmcgZGV2aWNlV2lkdGgsIGxvbmcg
ZGV2aWNlSGVpZ2h0LCBsb25nIGF2YWlsYWJsZVdpZHRoLCBsb25nIGF2YWlsYWJsZUhlaWdodCk7
CisgICAgRE9NU3RyaW5nIGNvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCh1bnJlc3RyaWN0ZWQgZmxv
YXQgZGV2aWNlUGl4ZWxSYXRpbywgbG9uZyBkZXZpY2VXaWR0aCwgbG9uZyBkZXZpY2VIZWlnaHQs
IGxvbmcgYXZhaWxhYmxlV2lkdGgsIGxvbmcgYXZhaWxhYmxlSGVpZ2h0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB3YXNMYXN0Q2hhbmdlVXNlckVkaXQoRWxlbWVudCB0ZXh0
RmllbGQpOworICAgIGJvb2xlYW4gd2FzTGFzdENoYW5nZVVzZXJFZGl0KEVsZW1lbnQgdGV4dEZp
ZWxkKTsKICAgICBib29sZWFuIGVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoSFRNTElucHV0RWxl
bWVudCBpbnB1dEVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBzZXRBdXRvZmlsbGVkKEhUTUxJbnB1
dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHVuZGVmaW5lZCBz
ZXRBdXRvRmlsbGVkQW5kVmlld2FibGUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIGJv
b2xlYW4gZW5hYmxlZCk7CkBAIC0zOTIsMTYgKzM5MiwxNiBAQCBlbnVtIFRyZWVUeXBlIHsKICAg
ICBFbGVtZW50IGluc2VydFRleHRQbGFjZWhvbGRlcihsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7
CiAgICAgdW5kZWZpbmVkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50IGVsZW1lbnQpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5nZT8gcmFuZ2VPZlN0cmluZyhET01TdHJpbmcg
dGV4dCwgUmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRp
b25zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVz
Rm9yVGV4dChET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywg
RE9NU3RyaW5nIG1hcmtNYXRjaGVzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVk
IGxvbmcgY291bnRGaW5kTWF0Y2hlcyhET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5n
PiBmaW5kT3B0aW9ucyk7CisgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmcoRE9NU3RyaW5nIHRleHQs
IFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7
CisgICAgdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBz
ZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwor
ICAgIHVuc2lnbmVkIGxvbmcgY291bnRGaW5kTWF0Y2hlcyhET01TdHJpbmcgdGV4dCwgc2VxdWVu
Y2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBhdXRvZmlsbEZpZWxkTmFtZShFbGVtZW50IGZvcm1Db250cm9sRWxlbWVudCk7Cisg
ICAgRE9NU3RyaW5nIGF1dG9maWxsRmllbGROYW1lKEVsZW1lbnQgZm9ybUNvbnRyb2xFbGVtZW50
KTsKICAgICBib29sZWFuIGlzU3BlbGxjaGVja0Rpc2FibGVkRXhjZXB0VGV4dFJlcGxhY2VtZW50
KEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGludmFsaWRhdGVDb250cm9sVGludHMoKTsKKyAgICB1bmRlZmluZWQgaW52
YWxpZGF0ZUNvbnRyb2xUaW50cygpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBs
b25nIHcsIGxvbmcgaCk7CisgICAgdW5kZWZpbmVkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVu
dCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgpOwogCiAgICAgUmFuZ2U/
IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcg
cmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgdW5zaWduZWQg
bG9uZyBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CkBAIC00
MDksMTMgKzQwOSwxMyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBET01TdHJpbmcgcmFuZ2VBc1Rl
eHQoUmFuZ2UgcmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRz
VGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlKTsKICAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5n
ZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3Ro
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZUZvckRpY3Rpb25hcnlMb29r
dXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKKyAgICBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9u
YXJ5TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxvbmcgeSk7CiAgICAgUmFuZ2U/IHJhbmdlT2ZT
dHJpbmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFuZ2UsIERPTVN0cmluZyB0ZXh0LCBsb25nIHRhcmdl
dE9mZnNldCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXREZWxlZ2F0
ZXNTY3JvbGxpbmcoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0RGVsZWdhdGVz
U2Nyb2xsaW5nKGJvb2xlYW4gZW5hYmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
c2lnbmVkIGxvbmcgbG9uZyBsYXN0U3BlbGxDaGVja1JlcXVlc3RTZXF1ZW5jZSgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBsb25nIGxhc3RTcGVsbENoZWNrUHJvY2Vz
c2VkU2VxdWVuY2UoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdFNwZWxsQ2hlY2tSZXF1
ZXN0U2VxdWVuY2UoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdFNwZWxsQ2hlY2tQcm9j
ZXNzZWRTZXF1ZW5jZSgpOwogICAgIHVuZGVmaW5lZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
KTsKIAogICAgIHNlcXVlbmNlPERPTVN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwpA
QCAtNDI0LDEzICs0MjQsMTMgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgc2VxdWVuY2U8RE9NU3Ry
aW5nPiB1c2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKTsKICAgICB1bmRlZmluZWQg
c2V0VXNlclByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWMoRE9NU3RyaW5nIGNoYXJhY3Rlcmlz
dGljKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyB3aGVlbEV2ZW50
SGFuZGxlckNvdW50KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIHRv
dWNoRXZlbnRIYW5kbGVyQ291bnQoKTsKKyAgICB1bnNpZ25lZCBsb25nIHdoZWVsRXZlbnRIYW5k
bGVyQ291bnQoKTsKKyAgICB1bnNpZ25lZCBsb25nIHRvdWNoRXZlbnRIYW5kbGVyQ291bnQoKTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdExpc3QgdG91Y2hFdmVudFJlY3RzRm9y
RXZlbnQoRE9NU3RyaW5nIGV2ZW50TmFtZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01S
ZWN0TGlzdCBwYXNzaXZlVG91Y2hFdmVudExpc3RlbmVyUmVjdHMoKTsKKyAgICBET01SZWN0TGlz
dCB0b3VjaEV2ZW50UmVjdHNGb3JFdmVudChET01TdHJpbmcgZXZlbnROYW1lKTsKKyAgICBET01S
ZWN0TGlzdCBwYXNzaXZlVG91Y2hFdmVudExpc3RlbmVyUmVjdHMoKTsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gTm9kZUxpc3Q/IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQgZG9jdW1lbnQsIGxv
bmcgeCwgbG9uZyB5LAorICAgIE5vZGVMaXN0PyBub2Rlc0Zyb21SZWN0KERvY3VtZW50IGRvY3Vt
ZW50LCBsb25nIHgsIGxvbmcgeSwKICAgICAgICAgdW5zaWduZWQgbG9uZyB0b3BQYWRkaW5nLCB1
bnNpZ25lZCBsb25nIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLCB1
bnNpZ25lZCBsb25nIGxlZnRQYWRkaW5nLAogICAgICAgICBib29sZWFuIGlnbm9yZUNsaXBwaW5n
LCBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCwgYm9vbGVhbiBhbGxvd0NoaWxkRnJhbWVDb250
ZW50KTsKIApAQCAtNDYwLDcgKzQ2MCw3IEBAIGVudW0gVHJlZVR5cGUgewogCiAgICAgdW5zaWdu
ZWQgbG9uZyBudW1iZXJPZlNjcm9sbGFibGVBcmVhcygpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBib29sZWFuIGlzUGFnZUJveFZpc2libGUobG9uZyBwYWdlTnVtYmVyKTsKKyAgICBib29s
ZWFuIGlzUGFnZUJveFZpc2libGUobG9uZyBwYWdlTnVtYmVyKTsKIAogICAgIHVuc2lnbmVkIGxv
bmcgaW1hZ2VGcmFtZUluZGV4KEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgdW5zaWdu
ZWQgbG9uZyBpbWFnZUZyYW1lQ291bnQoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKQEAgLTQ4
MCw4ICs0ODAsOCBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSW50
ZXJuYWxTZXR0aW5ncyBzZXR0aW5nczsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyB3b3JrZXJUaHJlYWRDb3VudDsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5pbWF0aW9uc1BhdXNlZDsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGRvdWJsZSBzdmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCBl
bGVtZW50KTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhcmVTVkdBbmltYXRpb25z
UGF1c2VkOworICAgIGRvdWJsZSBzdmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCBl
bGVtZW50KTsKIAogICAgIGJvb2xlYW4gdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAKQEAgLTQ5NywzNyArNDk3LDM3IEBAIGVudW0gVHJl
ZVR5cGUgewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfUk9P
VF9MQVlFUl9QUk9QRVJUSUVTID0gMjU2OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVS
X1RSRUVfSU5DTFVERVNfRVZFTlRfUkVHSU9OID0gNTEyOwogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IExBWUVSX1RSRUVfSU5DTFVERVNfREVFUF9DT0xPUiA9IDEwMjQ7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50IGRvY3VtZW50LCBv
cHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIERPTVN0cmluZyBsYXllclRy
ZWVBc1RleHQoRG9jdW1lbnQgZG9jdW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdz
ID0gMCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXll
cklERm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBs
YXllcklERm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG9wdGlvbmFsIE5vZGU/IG5vZGUg
PSBudWxsKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gc2Nyb2xsYmFyVXNpbmdE
YXJrQXBwZWFyYW5jZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKG9wdGlvbmFsIE5v
ZGU/IG5vZGUgPSBudWxsKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyB2ZXJ0
aWNhbFNjcm9sbGJhclN0YXRlKG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKKyAgICBET01T
dHJpbmcgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsK
KyAgICBib29sZWFuIHNjcm9sbGJhclVzaW5nRGFya0FwcGVhcmFuY2Uob3B0aW9uYWwgTm9kZT8g
bm9kZSA9IG51bGwpOworICAgIERPTVN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUob3B0
aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOworICAgIERPTVN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJh
clN0YXRlKG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1RyZWVBc1RleHQoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpOyAvLyBG
SVhNRTogcmVuYW1lIHRvIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpLgotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NUmVjdExpc3Qgbm9uRmFzdFNjcm9sbGFibGVSZWN0cygpOworICAg
IERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICBET01TdHJpbmcgc2Ny
b2xsaW5nVHJlZUFzVGV4dCgpOworICAgIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucygpOyAvLyBGSVhNRTogcmVuYW1lIHRvIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygp
LgorICAgIERPTVJlY3RMaXN0IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoKTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgIERPTVN0
cmluZyByZXBhaW50UmVjdHNBc1RleHQoKTsKIAogICAgIC8vIFRoZXNlIHRocm93IGlmIHRoZSBl
bGVtZW50IGRvZXMgbm90IGhhdmUgYSBjb21wb3NpdGluZyBsYXllci4KLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRFbGVtZW50VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyhFbGVt
ZW50IGVsZW1lbnQsIGJvb2xlYW4gdXNlc0Rpc3BsYXlMaXN0RHJhd2luZyk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RWxlbWVudFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB0cmFja1JlcGxheSk7CisgICAgdW5kZWZpbmVkIHNl
dEVsZW1lbnRVc2VzRGlzcGxheUxpc3REcmF3aW5nKEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB1
c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKKyAgICB1bmRlZmluZWQgc2V0RWxlbWVudFRyYWNrc0Rp
c3BsYXlMaXN0UmVwbGF5KEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB0cmFja1JlcGxheSk7CiAK
ICAgICAvLyBGbGFncyBmb3IgZGlzcGxheUxpc3RGb3JFbGVtZW50LgogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IERJU1BMQVlfTElTVF9JTkNMVURFU19QTEFURk9STV9PUEVSQVRJT05TID0gMTsK
ICAgICAvLyBSZXR1cm5zIHRoZSByZWNvcmRlZCBkaXNwbGF5IGxpc3QuCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVu
dCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01TdHJpbmcgZGlz
cGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hv
cnQgZmxhZ3MgPSAwKTsKICAgICAvLyBSZXR1cm5zIHRoZSBkaXNwbGF5IGxpc3QgdGhhdCB3YXMg
YWN0dWFsbHkgcGFpbnRlZC4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZXBs
YXlEaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBmbGFncyA9IDApOworICAgIERPTVN0cmluZyByZXBsYXlEaXNwbGF5TGlzdEZvckVs
ZW1lbnQoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDAp
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZ2FyYmFnZUNvbGxlY3REb2N1
bWVudFJlc291cmNlcygpOworICAgIHVuZGVmaW5lZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVz
b3VyY2VzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBpbnNlcnRBdXRo
b3JDU1MoRE9NU3RyaW5nIGNzcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
aW5zZXJ0VXNlckNTUyhET01TdHJpbmcgY3NzKTsKKyAgICB1bmRlZmluZWQgaW5zZXJ0QXV0aG9y
Q1NTKERPTVN0cmluZyBjc3MpOworICAgIHVuZGVmaW5lZCBpbnNlcnRVc2VyQ1NTKERPTVN0cmlu
ZyBjc3MpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNVbmRlck1lbW9yeVBy
ZXNzdXJlOwogICAgIHVuZGVmaW5lZCBiZWdpblNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CkBA
IC01NDIsMjYgKzU0MiwyNiBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWwgPSBS
RVNJWkVfT0JTRVJWRVJdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoRG9j
dW1lbnQgZG9jdW1lbnQpOwogICAgIFdpbmRvd1Byb3h5PyBvcGVuRHVtbXlJbnNwZWN0b3JGcm9u
dGVuZChET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgY2xvc2VEdW1teUluc3BlY3RvckZy
b250ZW5kKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0SW5zcGVjdG9y
SXNVbmRlclRlc3QoYm9vbGVhbiBpc1VuZGVyVGVzdCk7CisgICAgdW5kZWZpbmVkIHNldEluc3Bl
Y3RvcklzVW5kZXJUZXN0KGJvb2xlYW4gaXNVbmRlclRlc3QpOwogCiAgICAgRE9NU3RyaW5nIGNv
dW50ZXJWYWx1ZShFbGVtZW50IGVsZW1lbnQpOwogICAgIGxvbmcgcGFnZU51bWJlcihFbGVtZW50
IGVsZW1lbnQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBwYWdlV2lkdGggPSA4MDAsIG9w
dGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBwYWdlSGVpZ2h0ID0gNjAwKTsKICAgICBzZXF1ZW5j
ZTxET01TdHJpbmc+IHNob3J0Y3V0SWNvblVSTHMoKTsKICAgICBsb25nIG51bWJlck9mUGFnZXMo
b3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscyA9IDgwMCwgb3B0
aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMgPSA2MDApOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHBhZ2VQcm9wZXJ0eShET01TdHJpbmcgcHJv
cGVydHlOYW1lLCBsb25nIHBhZ2VOdW1iZXIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9N
U3RyaW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGxvbmcgcGFnZUluZGV4LCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCwgbG9uZyBtYXJnaW5Ub3AsIGxvbmcgbWFyZ2luUmlnaHQsIGxvbmcg
bWFyZ2luQm90dG9tLCBsb25nIG1hcmdpbkxlZnQpOworICAgIERPTVN0cmluZyBwYWdlUHJvcGVy
dHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwgbG9uZyBwYWdlTnVtYmVyKTsKKyAgICBET01TdHJp
bmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMobG9uZyBwYWdlSW5kZXgsIGxvbmcgd2lkdGgs
IGxvbmcgaGVpZ2h0LCBsb25nIG1hcmdpblRvcCwgbG9uZyBtYXJnaW5SaWdodCwgbG9uZyBtYXJn
aW5Cb3R0b20sIGxvbmcgbWFyZ2luTGVmdCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBzZXRQYWdlU2NhbGVGYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9y
LCBsb25nIHgsIGxvbmcgeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBmbG9hdCBwYWdlU2Nh
bGVGYWN0b3IoKTsKKyAgICB1bmRlZmluZWQgc2V0UGFnZVNjYWxlRmFjdG9yKHVucmVzdHJpY3Rl
ZCBmbG9hdCBzY2FsZUZhY3RvciwgbG9uZyB4LCBsb25nIHkpOworICAgIGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcigpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UGFnZVpv
b21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFRleHRab29tRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB6
b29tRmFjdG9yKTsKKyAgICB1bmRlZmluZWQgc2V0UGFnZVpvb21GYWN0b3IodW5yZXN0cmljdGVk
IGZsb2F0IHpvb21GYWN0b3IpOworICAgIHVuZGVmaW5lZCBzZXRUZXh0Wm9vbUZhY3Rvcih1bnJl
c3RyaWN0ZWQgZmxvYXQgem9vbUZhY3Rvcik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBzZXRVc2VGaXhlZExheW91dChib29sZWFuIHVzZUZpeGVkTGF5b3V0KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRGaXhlZExheW91dFNpemUobG9uZyB3aWR0
aCwgbG9uZyBoZWlnaHQpOworICAgIHVuZGVmaW5lZCBzZXRVc2VGaXhlZExheW91dChib29sZWFu
IHVzZUZpeGVkTGF5b3V0KTsKKyAgICB1bmRlZmluZWQgc2V0Rml4ZWRMYXlvdXRTaXplKGxvbmcg
d2lkdGgsIGxvbmcgaGVpZ2h0KTsKICAgICB1bmRlZmluZWQgc2V0UHJpbnRpbmcobG9uZyB3aWR0
aCwgbG9uZyBoZWlnaHQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0
Vmlld0V4cG9zZWRSZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
eSwgdW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0KTsK
KyAgICB1bmRlZmluZWQgc2V0Vmlld0V4cG9zZWRSZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0
ZWQgZmxvYXQgaGVpZ2h0KTsKIAogICAgIHVuZGVmaW5lZCBzZXRIZWFkZXJIZWlnaHQodW5yZXN0
cmljdGVkIGZsb2F0IGhlaWdodCk7CiAgICAgdW5kZWZpbmVkIHNldEZvb3RlckhlaWdodCh1bnJl
c3RyaWN0ZWQgZmxvYXQgaGVpZ2h0KTsKQEAgLTU5NiwzNSArNTk2LDM1IEBAIGVudW0gVHJlZVR5
cGUgewogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGJvdGggcmVzZXQgdGhlIHRyYWNrZWQgcmVw
YWludCByZWN0cy4gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgZm9sbG93aW5n
IG9yZGVyOgogICAgIC8vICBzdGFydFRyYWNraW5nUmVwYWludHMsIHJlcGFpbnRSZWN0c0FzVGV4
dCwgc3RvcFRyYWNraW5nUmVwYWludHMuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgc3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgc3RvcFRyYWNraW5nUmVwYWludHMoKTsKKyAgICB1bmRlZmluZWQgc3RhcnRUcmFja2lu
Z1JlcGFpbnRzKCk7CisgICAgdW5kZWZpbmVkIHN0b3BUcmFja2luZ1JlcGFpbnRzKCk7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVz
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxheWVyRmx1c2hDb3Vu
dCgpOworICAgIHVuZGVmaW5lZCBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCk7CisgICAgdW5z
aWduZWQgbG9uZyBsYXllckZsdXNoQ291bnQoKTsKIAogICAgIC8vIFF1ZXJ5IGlmIGEgdGltZXIg
aXMgY3VycmVudGx5IHRocm90dGxlZCwgdG8gZGVidWcgdGltZXIgdGhyb3R0bGluZy4KLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNUaW1lclRocm90dGxlZChsb25nIHRpbWVySGFu
ZGxlKTsKKyAgICBib29sZWFuIGlzVGltZXJUaHJvdHRsZWQobG9uZyB0aW1lckhhbmRsZSk7CiAK
ICAgICBET01TdHJpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGluZ1JlYXNvbnMoKTsK
ICAgICBib29sZWFuIGFyZVRpbWVyc1Rocm90dGxlZCgpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2V0TG93UG93ZXJNb2RlRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE91dHNpZGVWaWV3cG9ydFRocm90
dGxpbmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldExvd1Bvd2Vy
TW9kZUVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0T3V0c2lkZVZp
ZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZUludGVydmFsOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHNjcmlwdGVkQW5pbWF0aW9uc0FyZVN1c3BlbmRlZDsKIAog
ICAgIC8vIE92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBXZWJQYWdlOjpldmVudFRocm90dGxpbmdE
ZWxheSgpLCB3aGljaCBvbmx5IGFmZmVjdHMgaU9TLgogICAgIGF0dHJpYnV0ZSBFdmVudFRocm90
dGxpbmdCZWhhdmlvcj8gZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdTdHlsZVJlY2FsY3MoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgp
OworICAgIHVuZGVmaW5lZCBzdGFydFRyYWNraW5nU3R5bGVSZWNhbGNzKCk7CisgICAgdW5zaWdu
ZWQgbG9uZyBzdHlsZVJlY2FsY0NvdW50KCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGFzdFN0eWxlVXBkYXRlU2l6ZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0ZXMoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY29tcG9zaXRpbmdVcGRhdGVDb3VudCgpOworICAg
IHVuZGVmaW5lZCBzdGFydFRyYWNraW5nQ29tcG9zaXRpbmdVcGRhdGVzKCk7CisgICAgdW5zaWdu
ZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBzdGFydFRyYWNraW5nUmVuZGVyaW5nVXBkYXRlcygpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyByZW5kZXJpbmdVcGRhdGVDb3VudCgpOworICAg
IHVuZGVmaW5lZCBzdGFydFRyYWNraW5nUmVuZGVyaW5nVXBkYXRlcygpOworICAgIHVuc2lnbmVk
IGxvbmcgcmVuZGVyaW5nVXBkYXRlQ291bnQoKTsKIAogICAgIGF0dHJpYnV0ZSBDb21wb3NpdGlu
Z1BvbGljeT8gY29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZTsKIApAQCAtNjMzLDEyICs2MzMsMTIg
QEAgZW51bSBUcmVlVHlwZSB7CiAgICAgLy8gfG5vZGV8IHNob3VsZCBiZSBEb2N1bWVudCwgSFRN
TElGcmFtZUVsZW1lbnQsIG9yIHVuc3BlY2lmaWVkLgogICAgIC8vIElmIHxub2RlfCBpcyBhbiBI
VE1MSUZyYW1lRWxlbWVudCwgaXQgYXNzdW1lcyBub2RlLmNvbnRlbnREb2N1bWVudCBpcwogICAg
IC8vIHNwZWNpZmllZCB3aXRob3V0IHNlY3VyaXR5IGNoZWNrcy4gVW5zcGVjaWZpZWQgb3IgbnVs
bCBtZWFucyB0aGlzIGRvY3VtZW50LgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0FuZFJ1blBvc3RMYXlvdXRUYXNr
cyhvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7CisgICAgdW5kZWZpbmVkIHVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0FuZFJ1blBvc3RMYXlvdXRUYXNrcyhvcHRpb25hbCBO
b2RlPyBub2RlID0gbnVsbCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsYXlvdXRDb3VudDsKIAogICAgIC8vIFJldHVybnMgYSBzdHJpbmcgd2l0aCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgbW91c2UgY3Vyc29yIHVzZWQgYXQgdGhlIHNwZWNpZmllZCBjbGllbnQgbG9j
YXRpb24uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0Q3VycmVudEN1cnNv
ckluZm8oKTsKKyAgICBET01TdHJpbmcgZ2V0Q3VycmVudEN1cnNvckluZm8oKTsKIAogICAgIERP
TVN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oRWxlbWVudCBlbGVtZW50KTsKIApAQCAtNjYy
LDcgKzY2Miw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbD1WSURFT10gc2Vx
dWVuY2U8RE9NU3RyaW5nPiBtZWRpYVJlc3BvbnNlU291cmNlcyhIVE1MTWVkaWFFbGVtZW50IG1l
ZGlhKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHNlcXVlbmNlPERPTVN0cmluZz4gbWVkaWFS
ZXNwb25zZUNvbnRlbnRSYW5nZXMoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSk7CiAgICAgW0NvbmRp
dGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbihIVE1MTWVk
aWFFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNl
cHRpb25dIGJvb2xlYW4gbWVkaWFFbGVtZW50SGFzQ2hhcmFjdGVyaXN0aWMoSFRNTE1lZGlhRWxl
bWVudCBlbGVtZW50LCBET01TdHJpbmcgY2hhcmFjdGVyaXN0aWMpOworICAgIFtDb25kaXRpb25h
bD1WSURFT10gYm9vbGVhbiBtZWRpYUVsZW1lbnRIYXNDaGFyYWN0ZXJpc3RpYyhIVE1MTWVkaWFF
bGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBjaGFyYWN0ZXJpc3RpYyk7CiAgICAgW0NvbmRpdGlv
bmFsPVZJREVPXSB1bmRlZmluZWQgYmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoSFRNTE1lZGlhRWxl
bWVudCBtZWRpYSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgZW5kU2ltdWxh
dGVkSERDUEVycm9yKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEpOwogCkBAIC02NzAsOSArNjcwLDkg
QEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01TdHJpbmcgZWxl
bWVudEJ1ZmZlcmluZ1BvbGljeShIVE1MTWVkaWFFbGVtZW50IG1lZGlhKTsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIGRvdWJsZSBwcml2YXRlUGxheWVyVm9sdW1lKEhUTUxNZWRpYUVsZW1lbnQg
bWVkaWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gYm9vbGVhbiBwcml2YXRlUGxheWVyTXV0
ZWQoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE92ZXJyaWRlUHJlZmVycmVkRHluYW1pY1Jhbmdl
TW9kZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhLCBET01TdHJpbmcgbW9kZSk7CisgICAgW0NvbmRp
dGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0T3ZlcnJpZGVQcmVmZXJyZWREeW5hbWljUmFuZ2VN
b2RlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEsIERPTVN0cmluZyBtb2RlKTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUo
b3B0aW9uYWwgYm9vbGVhbj8gaXNQbGF5aW5nID0gbnVsbCk7CisgICAgdW5kZWZpbmVkIHNldElz
UGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUob3B0aW9uYWwgYm9vbGVhbj8gaXNQbGF5aW5nID0g
bnVsbCk7CiAKICAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQV0gdW5kZWZp
bmVkIGluaXRpYWxpemVNb2NrQ0RNKCk7CiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJ
QV0gTW9ja0NETUZhY3RvcnkgcmVnaXN0ZXJNb2NrQ0RNKCk7CkBAIC02ODIsMTIgKzY4MiwxMiBA
QCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIERPTVN0cmluZyBnZXRJbWFnZVNvdXJjZVVSTChFbGVt
ZW50IGVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7Ci0gICAgW0NvbmRpdGlv
bmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldENhcHRpb25zU3R5bGVT
aGVldE92ZXJyaWRlKERPTVN0cmluZyBvdmVycmlkZSk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVP
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3Vh
Z2VPdmVycmlkZShET01TdHJpbmcgbGFuZ3VhZ2UpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRDYXB0aW9uRGlzcGxheU1vZGUoRE9NU3Ry
aW5nIG1vZGUpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gRE9NU3RyaW5nIGNhcHRpb25zU3R5
bGVTaGVldE92ZXJyaWRlKCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0
Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoRE9NU3RyaW5nIG92ZXJyaWRlKTsKKyAgICBbQ29u
ZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRQcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3Zl
cnJpZGUoRE9NU3RyaW5nIGxhbmd1YWdlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVm
aW5lZCBzZXRDYXB0aW9uRGlzcGxheU1vZGUoRE9NU3RyaW5nIG1vZGUpOwogICAgIFtDb25kaXRp
b25hbD1WSURFT10gVGV4dFRyYWNrQ3VlR2VuZXJpYyBjcmVhdGVHZW5lcmljQ3VlKGRvdWJsZSBz
dGFydFRpbWUsIGRvdWJsZSBlbmRUaW1lLCBET01TdHJpbmcgdGV4dCk7Ci0gICAgW0NvbmRpdGlv
bmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHRleHRUcmFja0JDUDQ3TGFu
Z3VhZ2UoVGV4dFRyYWNrIHRyYWNrKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmlu
ZyB0ZXh0VHJhY2tCQ1A0N0xhbmd1YWdlKFRleHRUcmFjayB0cmFjayk7CiAKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIFRpbWVSYW5nZXMgY3JlYXRlVGltZVJhbmdlcyhGbG9hdDMyQXJyYXkgc3Rh
cnRUaW1lcywgRmxvYXQzMkFycmF5CiAgICAgIGVuZFRpbWVzKTsKQEAgLTY5NSwxMiArNjk1LDEy
IEBAIGVudW0gVHJlZVR5cGUgewogCiAgICAgYm9vbGVhbiBpc1NlbGVjdFBvcHVwVmlzaWJsZShI
VE1MU2VsZWN0RWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9v
bGVhbiBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCBlbGVt
ZW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyB1bmF2YWlsYWJsZVBsdWdp
blJlcGxhY2VtZW50VGV4dChFbGVtZW50IGVsZW1lbnQpOworICAgIGJvb2xlYW4gaXNQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQgZWxlbWVudCk7CisgICAgRE9N
U3RyaW5nIHVuYXZhaWxhYmxlUGx1Z2luUmVwbGFjZW1lbnRUZXh0KEVsZW1lbnQgZWxlbWVudCk7
CiAgICAgYm9vbGVhbiBpc1BsdWdpblNuYXBzaG90dGVkKEVsZW1lbnQgZWxlbWVudCk7CiAgICAg
Ym9vbGVhbiBwbHVnaW5Jc0JlbG93U2l6ZVRocmVzaG9sZChFbGVtZW50IGVsZW1lbnQpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0IHNlbGVjdGlvbkJvdW5kcygpOworICAgIERP
TVJlY3Qgc2VsZWN0aW9uQm91bmRzKCk7CiAgICAgdW5kZWZpbmVkIHNldFNlbGVjdGlvbldpdGhv
dXRWYWxpZGF0aW9uKE5vZGUgYmFzZU5vZGUsIHVuc2lnbmVkIGxvbmcgYmFzZU9mZnNldCwgTm9k
ZT8gZXh0ZW50Tm9kZSwgdW5zaWduZWQgbG9uZyBleHRlbnRPZmZzZXQpOwogCiAgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NPVVJDRV0gdW5kZWZpbmVkIGluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2Uo
KTsKQEAgLTcxMCwxOSArNzEwLDE5IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25h
bD1NRURJQV9TT1VSQ0VdIGRvdWJsZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9y
VHJhY2tJRChTb3VyY2VCdWZmZXIgYnVmZmVyLCBET01TdHJpbmcgdHJhY2tJRCk7CiAgICAgW0Nv
bmRpdGlvbmFsPU1FRElBX1NPVVJDRV0gdW5kZWZpbmVkIHNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRChTb3VyY2VCdWZmZXIgYnVmZmVyLCBET01TdHJpbmcgdHJhY2tJRCwgdW5zaWduZWQg
bG9uZyBtYXhRdWV1ZURlcHRoKTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJp
bmcgaW50ZXJydXB0aW9uVHlwZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQg
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oRE9NU3RyaW5nIGludGVycnVwdGlvblR5cGUp
OwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGVuZE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbihET01TdHJpbmcgZmxhZ3MpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZp
bmVkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPXSB1bmRlZmluZWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQob3B0
aW9uYWwgYm9vbGVhbiBzdXNwZW5kZWRVbmRlckxvY2sgPSBmYWxzZSk7CiAgICAgW0NvbmRpdGlv
bmFsPVZJREVPXSB1bmRlZmluZWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQob3B0aW9u
YWwgYm9vbGVhbiBzdXNwZW5kZWRVbmRlckxvY2sgPSBmYWxzZSk7Ci0gICAgW0NvbmRpdGlvbmFs
PVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE1lZGlhU2Vzc2lvblJlc3Ry
aWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAg
ICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWVkaWFT
ZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOworICAgIFtDb25kaXRpb25h
bD1WSURFT10gdW5kZWZpbmVkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcg
bWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9VklE
RU9dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlw
ZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0TWVkaWFFbGVtZW50UmVz
dHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9u
cyk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdW5kZWZpbmVkIHNldEF1ZGlvQ29udGV4
dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4
dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChET01TdHJp
bmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50ID0gMCk7Cisg
ICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5k
KERPTVN0cmluZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQg
PSAwKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB1bmRlZmlu
ZWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxl
ZCk7Ci0gICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KERPTVN0cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOworICAgIFtDb25k
aXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHVuZGVmaW5lZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcg
ZGV2aWNlU3RhdGUpOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRd
IHVuZGVmaW5lZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwog
ICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRDdXN0b21Qcml2YXRl
UmVjb3JkZXJDcmVhdG9yKCk7CiAKQEAgLTc0MSwxNCArNzQxLDE0IEBAIGVudW0gVHJlZVR5cGUg
ewogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHNpbXVsYXRlU3lzdGVtV2FrZSgp
OwogICAgIFtDb25kaXRpb25hbD1WSURFT10gYm9vbGVhbiBlbGVtZW50SXNCbG9ja2luZ0Rpc3Bs
YXlTbGVlcChIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBNb2NrUGFnZU92ZXJsYXkgaW5zdGFsbE1vY2tQYWdlT3ZlcmxheShQYWdlT3ZlcmxheVR5
cGUgdHlwZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcGFnZU92ZXJsYXlM
YXllclRyZWVBc1RleHQob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBN
b2NrUGFnZU92ZXJsYXkgaW5zdGFsbE1vY2tQYWdlT3ZlcmxheShQYWdlT3ZlcmxheVR5cGUgdHlw
ZSk7CisgICAgRE9NU3RyaW5nIHBhZ2VPdmVybGF5TGF5ZXJUcmVlQXNUZXh0KG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAKICAgICB1bmRlZmluZWQgc2V0UGFnZU11dGVkKERP
TVN0cmluZyBtdXRlZFN0YXRlKTsKICAgICBET01TdHJpbmcgcGFnZU1lZGlhU3RhdGUoKTsKIAog
ICAgIHVuZGVmaW5lZCBzZXRQYWdlRGVmZXJzTG9hZGluZyhib29sZWFuIGRlZmVyc0xvYWRpbmcp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBwYWdlRGVmZXJzTG9hZGluZygpOwor
ICAgIGJvb2xlYW4gcGFnZURlZmVyc0xvYWRpbmcoKTsKIAogICAgIEZpbGU/IGNyZWF0ZUZpbGUo
RE9NU3RyaW5nIHVybCk7CiAgICAgdW5kZWZpbmVkIHF1ZXVlTWljcm9UYXNrKGxvbmcgdGVzdE51
bWJlcik7CkBAIC03NTYsMTEgKzc1NiwxMSBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIFtDb25k
aXRpb25hbD1DT05URU5UX0ZJTFRFUklOR10gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIAotICAgIFtDb25kaXRp
b25hbD1DU1NfU0NST0xMX1NOQVAsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xs
U25hcE9mZnNldHMoRWxlbWVudCBlbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9M
TF9TTkFQLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1Njcm9sbFNuYXBJblByb2dyZXNz
KEVsZW1lbnQgZWxlbWVudCk7CisgICAgW0NvbmRpdGlvbmFsPUNTU19TQ1JPTExfU05BUF0gRE9N
U3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQgZWxlbWVudCk7CisgICAgW0NvbmRpdGlv
bmFsPUNTU19TQ1JPTExfU05BUF0gYm9vbGVhbiBpc1Njcm9sbFNuYXBJblByb2dyZXNzKEVsZW1l
bnQgZWxlbWVudCk7CiAgICAgW0NvbmRpdGlvbmFsPUNTU19TQ1JPTExfU05BUF0gdW5kZWZpbmVk
IHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcGF0aFN0cmluZ1dp
dGhTaHJpbmtXcmFwcGVkUmVjdHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91
YmxlIHJhZGl1cyk7CisgICAgRE9NU3RyaW5nIHBhdGhTdHJpbmdXaXRoU2hyaW5rV3JhcHBlZFJl
Y3RzKHNlcXVlbmNlPGRvdWJsZT4gcmVjdENvbXBvbmVudHMsIGRvdWJsZSByYWRpdXMpOwogCiAg
ICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01TdHJpbmcgZ2V0Q3VycmVudE1lZGlhQ29udHJvbHNT
dGF0dXNGb3JFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7CiAKQEAgLTc3NCw3ICs3
NzQsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBET01TdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvclVSTChET01VUkwgdXJsKTsKICAgICB1bmRlZmluZWQgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxvdyk7
CisgICAgdW5kZWZpbmVkIHNldENhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2xlYW4gYWxs
b3cpOwogCiAgICAgRE9NU3RyaW5nIGNvbXBvc2VkVHJlZUFzVGV4dChOb2RlIHBhcmVudCk7CiAK
QEAgLTg4Nyw5ICs4ODcsOSBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBib29sZWFuIHVzaW5nR1N0
cmVhbWVyKCk7CiAKICAgICB1bmRlZmluZWQgcG9zdFRhc2soVm9pZENhbGxiYWNrIGNhbGxiYWNr
KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBxdWV1ZVRhc2soRE9NU3RyaW5nIHNvdXJjZSwgVm9pZENhbGxiYWNrIGNh
bGxiYWNrKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdW5kZWZpbmVk
IHF1ZXVlVGFzayhET01TdHJpbmcgc291cmNlLCBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwogICAg
IFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIHF1ZXVlVGFza1RvUXVldWVNaWNyb3Rhc2so
RE9NU3RyaW5nIHNvdXJjZSwgVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIGJvb2xlYW4gaGFzU2FtZUV2ZW50TG9vcEFzKFdpbmRvd1Byb3h5IHdpbmRvd1By
b3h5KTsKKyAgICBib29sZWFuIGhhc1NhbWVFdmVudExvb3BBcyhXaW5kb3dQcm94eSB3aW5kb3dQ
cm94eSk7CiAKICAgICBET01TdHJpbmcgd2luZG93TG9jYXRpb25Ib3N0KERPTVdpbmRvdyB3aW5k
b3cpOwogCkBAIC04OTcsMTMgKzg5NywxMyBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIHVuZGVm
aW5lZCBzZXRNYXhDYW52YXNQaXhlbE1lbW9yeSh1bnNpZ25lZCBsb25nIHNpemUpOwogCi0gICAg
W0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRl
IE5vd1BsYXlpbmdTdGF0ZSBub3dQbGF5aW5nU3RhdGU7CisgICAgW0NvbmRpdGlvbmFsPVZJREVP
XSByZWFkb25seSBhdHRyaWJ1dGUgTm93UGxheWluZ1N0YXRlIG5vd1BsYXlpbmdTdGF0ZTsKIAog
ICAgIFtDb25kaXRpb25hbD1WSURFT10gSFRNTE1lZGlhRWxlbWVudCBiZXN0TWVkaWFFbGVtZW50
Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3Nl
IHB1cnBvc2UpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gTWVkaWFTZXNzaW9uU3RhdGUgbWVk
aWFTZXNzaW9uU3RhdGUoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtDb25kaXRp
b25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhVXNhZ2VTdGF0ZSBtZWRpYVVzYWdl
U3RhdGUoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8s
IE1heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGVsZW1lbnRTaG91bGREaXNwbGF5UG9zdGVySW1h
Z2UoSFRNTFZpZGVvRWxlbWVudCBlbGVtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1l
ZGlhVXNhZ2VTdGF0ZSBtZWRpYVVzYWdlU3RhdGUoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsK
KyAgICBbQ29uZGl0aW9uYWw9VklERU9dIGJvb2xlYW4gZWxlbWVudFNob3VsZERpc3BsYXlQb3N0
ZXJJbWFnZShIVE1MVmlkZW9FbGVtZW50IGVsZW1lbnQpOwogCiAgICAgRE9NU3RyaW5nIG9uZ29p
bmdMb2Fkc0Rlc2NyaXB0aW9ucygpOwogICAgIHVuZGVmaW5lZCBzZXRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2xlYW4gdmFsdWUpOwpAQCAtOTc4LDE3ICs5NzgsMTcg
QEAgZW51bSBUcmVlVHlwZSB7CiAgICAgCiAgICAgW0NvbmRpdGlvbmFsPUFQUF9ISUdITElHSFRT
XSB1bnNpZ25lZCBsb25nIG51bWJlck9mQXBwSGlnaGxpZ2h0cygpOwogCi0gICAgW0NvbmRpdGlv
bmFsPVdFQlhSLCBNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSVGVz
dCB4clRlc3Q7CisgICAgW0NvbmRpdGlvbmFsPVdFQlhSXSByZWFkb25seSBhdHRyaWJ1dGUgV2Vi
WFJUZXN0IHhyVGVzdDsKIAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFdIHVuc2ln
bmVkIGxvbmcgbWVkaWFLZXlzSW50ZXJuYWxJbnN0YW5jZU9iamVjdFJlZkNvdW50KE1lZGlhS2V5
cyBtZWRpYUtleXMpOwogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFdIHVuc2lnbmVk
IGxvbmcgbWVkaWFLZXlTZXNzaW9uSW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3Vu
dChNZWRpYUtleVNlc3Npb24gc2Vzc2lvbik7CiAKICAgICB1bmRlZmluZWQgc2V0Q29udGVudFNp
emVDYXRlZ29yeShDb250ZW50U2l6ZUNhdGVnb3J5IGNhdGVnb3J5KTsKIAotICAgIFtDb25kaXRp
b25hbD1BVFRBQ0hNRU5UX0VMRU1FTlQsIE1heVRocm93RXhjZXB0aW9uXSBBdHRhY2htZW50VGh1
bWJuYWlsSW5mbyBhdHRhY2htZW50VGh1bWJuYWlsSW5mbyhIVE1MQXR0YWNobWVudEVsZW1lbnQg
ZWxlbWVudCk7CisgICAgW0NvbmRpdGlvbmFsPUFUVEFDSE1FTlRfRUxFTUVOVF0gQXR0YWNobWVu
dFRodW1ibmFpbEluZm8gYXR0YWNobWVudFRodW1ibmFpbEluZm8oSFRNTEF0dGFjaG1lbnRFbGVt
ZW50IGVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04sIE1heVRocm93
RXhjZXB0aW9uXSBkb3VibGUgY3VycmVudE1lZGlhU2Vzc2lvblBvc2l0aW9uKE1lZGlhU2Vzc2lv
biBzZXNzaW9uKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiBzZXNz
aW9uLCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzIGFjdGlvbkRldGFpbHMpOworICAgIFtDb25k
aXRpb25hbD1NRURJQV9TRVNTSU9OXSBkb3VibGUgY3VycmVudE1lZGlhU2Vzc2lvblBvc2l0aW9u
KE1lZGlhU2Vzc2lvbiBzZXNzaW9uKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0g
dW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uIHNlc3Npb24sIE1l
ZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9uRGV0YWlscyk7CiAgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NFU1NJT05dIFByb21pc2U8SW1hZ2VEYXRhPiBsb2FkQXJ0d29ya0ltYWdlKERPTVN0
cmluZyB1cmwpOwogICAgIAogICAgIERPTVN0cmluZyB0cmVlT3JkZXIoTm9kZSBhLCBOb2RlIGIs
IG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAiVHJlZSIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyNzQ3
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBTZXJ2aWNlV29ya2VySW50ZXJuYWxzIHsKICAgICB1bmRlZmlu
ZWQgc2V0T25saW5lKGJvb2xlYW4gaXNPbmxpbmUpOwotICAgIFByb21pc2U8UmVzcG9uc2U+IHdh
aXRGb3JGZXRjaEV2ZW50VG9GaW5pc2goRmV0Y2hFdmVudCBldmVudCk7CisgICAgUHJvbWlzZTxG
ZXRjaFJlc3BvbnNlPiB3YWl0Rm9yRmV0Y2hFdmVudFRvRmluaXNoKEZldGNoRXZlbnQgZXZlbnQp
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBGZXRjaEV2ZW50IGNyZWF0
ZUJlaW5nRGlzcGF0Y2hlZEZldGNoRXZlbnQoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gRmV0Y2hSZXNwb25zZSBjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlSZXNwb25z
ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDggKzM5LDggQEAKIF0gaW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
IDogV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBuYW1lOwogCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2Zlcik7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9z
dE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVu
ZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zl
cik7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFu
eSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICB1
bmRlZmluZWQgY2xvc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2
aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAKICAgICB1bmRlZmluZWQgdGVybWluYXRlKCk7
CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsK
LSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVzc2FnZU9wdGlvbnMgb3B0
aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdl
KGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsKKyAgICBbQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFs
IFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9ubWVzc2FnZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXb3JrZXJHbG9iYWxTY29wZSBzZWxmOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXb3JrZXJMb2NhdGlvbiBsb2NhdGlvbjsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgV29ya2VyTmF2aWdhdG9yIG5hdmlnYXRvcjsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBpbXBvcnRTY3JpcHRzKFVTVlN0cmluZy4uLiB1cmxzKTsKKyAgICB1bmRl
ZmluZWQgaW1wb3J0U2NyaXB0cyhVU1ZTdHJpbmcuLi4gdXJscyk7CiAKICAgICAvLyBGSVhNRTog
VGhlIHNwZWMgJ29uZXJyb3InIHNob3VsZCBiZSBvZiB0eXBlICdPbkVycm9yRXZlbnRIYW5kbGVy
Jy4KICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZXJyb3I7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmlkbAkocmV2aXNp
b24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVF
dmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDUgKzMyLDUgQEAKIF0gaW50ZXJmYWNlIEV4
dGVuZGFibGVFdmVudCA6IEV2ZW50IHsKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwg
b3B0aW9uYWwgRXh0ZW5kYWJsZUV2ZW50SW5pdCBldmVudEluaXREaWN0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHdhaXRVbnRpbChQcm9taXNlPGFueT4gZik7CisgICAg
dW5kZWZpbmVkIHdhaXRVbnRpbChQcm9taXNlPGFueT4gZik7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbAkocmV2aXNpb24gMjc0NzI4
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyByZXNlcnZlZENsaWVudElkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
dGFyZ2V0Q2xpZW50SWQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXNw
b25kV2l0aChQcm9taXNlPEZldGNoUmVzcG9uc2U+IHIpOworICAgIHVuZGVmaW5lZCByZXNwb25k
V2l0aChQcm9taXNlPEZldGNoUmVzcG9uc2U+IHIpOwogfTsKIAogZGljdGlvbmFyeSBGZXRjaEV2
ZW50SW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAkocmV2aXNpb24gMjc0NzI4KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBACiBdIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyIDog
RXZlbnRUYXJnZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2NyaXB0VVJM
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGU7Ci0gICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zlcik7Ci0gICAgW0Nh
bGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVz
c2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwor
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVz
c2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zlcik7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9i
amVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVz
c2FnZU9wdGlvbnMgb3B0aW9ucyk7CiAKICAgICAvLyBldmVudAogICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgaWQ7CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmpl
Y3Q+IHRyYW5zZmVyKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVz
c2FnZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZp
bmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsK
KyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1l
c3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKIH07CiAKIGVudW0g
RnJhbWVUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmlkbAkocmV2aXNpb24gMjc0NzI4KQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtlckNs
aWVudHMgewogICAgIC8vIFRoZSBvYmplY3RzIHJldHVybmVkIHdpbGwgYmUgbmV3IGluc3RhbmNl
cyBldmVyeSB0aW1lCiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gUHJvbWlzZTxhbnk+IGdldChET01TdHJpbmcgaWQpOwotICAgIFtOZXdPYmplY3QsIENh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8c2VxdWVuY2U8Q2xpZW50Pj4g
bWF0Y2hBbGwob3B0aW9uYWwgQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwotICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8V2luZG93Q2xp
ZW50Pz4gb3BlbldpbmRvdyhVU1ZTdHJpbmcgdXJsKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPHNlcXVlbmNlPFNlcnZpY2VXb3JrZXJD
bGllbnQ+PiBtYXRjaEFsbChvcHRpb25hbCBDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7Cisg
ICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Pz4gb3BlbldpbmRvdyhVU1ZTdHJpbmcgdXJsKTsKICAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPHVu
ZGVmaW5lZD4gY2xhaW0oKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5pZGwJKHJl
dmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNiBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlOwog
ICAgIFtJbXBsZW1lbnRlZEFzPWlzRm9jdXNlZF0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
Zm9jdXNlZDsKIAotICAgIFtOZXdPYmplY3RdIFByb21pc2U8V2luZG93Q2xpZW50PiBmb2N1cygp
OwotICAgIFtOZXdPYmplY3RdIFByb21pc2U8V2luZG93Q2xpZW50PiBuYXZpZ2F0ZShVU1ZTdHJp
bmcgdXJsKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9taXNlPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQ+IGZvY3VzKCk7CisgICAgW05ld09iamVjdF0gUHJvbWlzZTxTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50PiBuYXZpZ2F0ZShVU1ZTdHJpbmcgdXJsKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCShyZXZpc2lv
biAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDYgQEAKICAgICBJc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2JhbD0oV29ya2xldCxQ
YWludFdvcmtsZXQpLAogXSBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBXb3Jr
bGV0R2xvYmFsU2NvcGUgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbixDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIHVuZGVmaW5lZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1lLCBvYmplY3QgcGFp
bnRDb25zdHJ1Y3Rvcik7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHJl
Z2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIG9iamVjdCBwYWludENvbnN0cnVjdG9yKTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlv
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NSArMjMsNSBAQAogXSBpbnRlcmZhY2UgRE9NUGFyc2VyIHsKICAgICBbQ2FsbFdpdGg9RG9jdW1l
bnRdIGNvbnN0cnVjdG9yKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0g
RG9jdW1lbnQgcGFyc2VGcm9tU3RyaW5nKERPTVN0cmluZyBzdHJpbmcsIERPTVN0cmluZyBjb250
ZW50VHlwZSk7CisgICAgW05ld09iamVjdF0gRG9jdW1lbnQgcGFyc2VGcm9tU3RyaW5nKERPTVN0
cmluZyBzdHJpbmcsIERPTVN0cmluZyBjb250ZW50VHlwZSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMyArNjEs
MTMgQEAgZW51bSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CiAKICAgICAvLyByZXF1ZXN0Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgb3BlbihCeXRlU3RyaW5nIG1ldGhvZCwgVVNW
U3RyaW5nIHVybCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgb3BlbihCeXRl
U3RyaW5nIG1ldGhvZCwgVVNWU3RyaW5nIHVybCwgYm9vbGVhbiBhc3luYywgb3B0aW9uYWwgVVNW
U3RyaW5nPyB1c2VyID0gbnVsbCwgb3B0aW9uYWwgVVNWU3RyaW5nPyBwYXNzd29yZCA9IG51bGwp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFJlcXVlc3RIZWFkZXIoQnl0
ZVN0cmluZyBoZWFkZXIsIEJ5dGVTdHJpbmcgdmFsdWUpOworICAgIHVuZGVmaW5lZCBvcGVuKEJ5
dGVTdHJpbmcgbWV0aG9kLCBVU1ZTdHJpbmcgdXJsKTsKKyAgICB1bmRlZmluZWQgb3BlbihCeXRl
U3RyaW5nIG1ldGhvZCwgVVNWU3RyaW5nIHVybCwgYm9vbGVhbiBhc3luYywgb3B0aW9uYWwgVVNW
U3RyaW5nPyB1c2VyID0gbnVsbCwgb3B0aW9uYWwgVVNWU3RyaW5nPyBwYXNzd29yZCA9IG51bGwp
OworICAgIHVuZGVmaW5lZCBzZXRSZXF1ZXN0SGVhZGVyKEJ5dGVTdHJpbmcgaGVhZGVyLCBCeXRl
U3RyaW5nIHZhbHVlKTsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0aW1lb3V0OwogICAg
IGF0dHJpYnV0ZSBib29sZWFuIHdpdGhDcmVkZW50aWFsczsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgWE1MSHR0cFJlcXVlc3RVcGxvYWQgdXBsb2FkOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNlbmQob3B0aW9uYWwgKERvY3VtZW50IG9yIEJvZHlJbml0KT8gYm9keSA9IG51
bGwpOworICAgIHVuZGVmaW5lZCBzZW5kKG9wdGlvbmFsIChEb2N1bWVudCBvciBCb2R5SW5pdCk/
IGJvZHkgPSBudWxsKTsKICAgICB1bmRlZmluZWQgYWJvcnQoKTsKIAogICAgIC8vIHJlc3BvbnNl
CkBAIC03Niw3ICs3Niw3IEBAIGVudW0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nIHN0YXR1c1RleHQ7CiAgICAgQnl0ZVN0cmlu
Zz8gZ2V0UmVzcG9uc2VIZWFkZXIoQnl0ZVN0cmluZyBuYW1lKTsKICAgICBCeXRlU3RyaW5nIGdl
dEFsbFJlc3BvbnNlSGVhZGVycygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IG92ZXJyaWRlTWltZVR5cGUoRE9NU3RyaW5nIG1pbWUpOworICAgIHVuZGVmaW5lZCBvdmVycmlk
ZU1pbWVUeXBlKERPTVN0cmluZyBtaW1lKTsKICAgICBhdHRyaWJ1dGUgWE1MSHR0cFJlcXVlc3RS
ZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlOwogICAgIFtDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdl
dHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSByZXNwb25zZTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgVVNWU3RyaW5nIHJlc3BvbnNlVGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEV2YWx1YXRvckJhc2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEV2YWx1YXRvckJhc2UuaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhFdmFsdWF0b3JCYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUs
OSBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3hwYXRoZXZhbHVhdG9yYmFz
ZQogaW50ZXJmYWNlIG1peGluIFhQYXRoRXZhbHVhdG9yQmFzZSB7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uLCBOZXdPYmplY3RdIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKERPTVN0
cmluZyBleHByZXNzaW9uLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsKKyAg
ICBbTmV3T2JqZWN0XSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihET01TdHJpbmcg
ZXhwcmVzc2lvbiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7CiAgICAgWFBh
dGhOU1Jlc29sdmVyIGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSBub2RlUmVzb2x2ZXIpOwogICAgIC8v
IFhQYXRoUmVzdWx0LkFOWV9UWVBFID0gMAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gWFBhdGhS
ZXN1bHQgZXZhbHVhdGUoRE9NU3RyaW5nIGV4cHJlc3Npb24sIE5vZGUgY29udGV4dE5vZGUsIG9w
dGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0
IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOworICAgIFhQYXRoUmVz
dWx0IGV2YWx1YXRlKERPTVN0cmluZyBleHByZXNzaW9uLCBOb2RlIGNvbnRleHROb2RlLCBvcHRp
b25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0
eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNSArMjMsNSBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgRXhwb3Nl
ZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFhQYXRoRXhwcmVzc2lvbiB7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShOb2RlIGNvbnRleHROb2RlLCBvcHRpb25hbCB1
bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0g
bnVsbCk7CisgICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUoTm9kZSBjb250ZXh0Tm9kZSwgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3Vs
dCA9IG51bGwpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAkocmV2aXNp
b24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGludmFsaWRJdGVyYXRvclN0YXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHNuYXBzaG90TGVuZ3RoOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIGl0ZXJh
dGVOZXh0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIHNuYXBzaG90SXRlbSh1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICBOb2RlIGl0ZXJhdGVOZXh0KCk7CisgICAgTm9kZSBzbmFw
c2hvdEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423830</attachid>
            <date>2021-03-21 09:51:06 -0700</date>
            <delta_ts>2021-03-22 16:14:22 -0700</delta_ts>
            <desc>Just the code changes (no IDL or test result changes)</desc>
            <filename>non-test-or-idl-changes.diff</filename>
            <type>text/plain</type>
            <size>50838</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzNiBAQAorMjAyMS0wMy0yMSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIHRoZSBu
ZWVkIHRvIHNwZWNpZnkgW01heVRocm93RXhjZXB0aW9uXQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0aGUgbmVlZCB0byBzcGVjaWZ5IFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYnkgZGVkdWNpbmcgaXQgZnJvbSB0aGUgYm91bmQgCisgICAgICAg
IHNpZ25hdHVyZSdzIHJldHVybiB2YWx1ZS4gQW55IGZ1bmN0aW9uIHJldHVybmluZyBhbiBFeGNl
cHRpb25PciBpcyBvbmUgdGhhdCB0aHJvd3MuCisKKyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhp
cyB3YXMgYWxyZWFkeSBoYW5kbGVkIGJ5IHRvSlM8PiguLi4sIGltcGwuZnVuYygpKSwgd2hpY2gg
aGFkCisgICAgICAgIG92ZXJsb2FkcyBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgdmFsdWUgd2FzIGFu
IEV4Y2VwdGlvbk9yLiBUaGUgY2FzZXMgdGhpcyBkaWRuJ3QKKyAgICAgICAgd29yayBmb3Igd2Vy
ZSBmdW50aW9ucyB0aGF0IHJldHVybmVkIHZvaWQsIGFzIHRvSlM8PiguLi4sIGltcGwuZnVuYygp
KSB3b3VsZCBub3QKKyAgICAgICAgY29tcGlsZS4gVG8gd29yayBhcm91bmQgdGhpcywgdG9KUzw+
KCkgY2FuIG5vdyB0YWtlIGEgbGFtYmRhIGFzIGl0J3MgdmFsdWUsIGFuZAorICAgICAgICBjYW4g
ZGV0ZXJtaW5lIHZpYSB0aGUgbGFtYmRhJ3MgcmV0dXJuIHR5cGUgaWYgaXQgbmVlZHMgdG8gdGhy
b3cuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgYW4gSURMIG9wZXJhdGlvbiBsaWtlOgorCisgICAg
ICAgICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBmdW5jKCk7CisKKyAgICAgICAg
dXNlZCB0byBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJvZHkgdGhhdCBsb29rZWQgbGlrZSB0aGUgZm9s
bG93aW5nIDoKKworICAgICAgICAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZ1bmMo
KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyAg
ICAgICAgCisgICAgICAgIAorICAgICAgICB3aWxsIG5vdyBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJv
ZHkgdGhhdCBsb29rcyBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmZ1bmMoKTsgfSkpKTsKKworICAgICAgICB3aGljaCBjbG9zZWx5IG1pcnJvcnMgYSBub24t
dW5kZWZpbmVkIHJldHVybiBvcGVyYXRpb24uIFRoaXMgd3JhcHBlZCBsYW1iZGEgZm9ybQorICAg
ICAgICBpcyBvbmx5IHVzZWQgZm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHVuZGVmaW5lZCBvciBw
cm9taXNlcywgYXMgdGhvc2UgYXJlIHRoZSBvbmx5CisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGNh
biByZXR1cm4gdm9pZCwgYnV0IGl0IHdvdWxkIGJlIGNvcnJlY3QgdG8gdXNlIHRoZW0gZm9yIGFs
bCB0eXBlcywKKyAgICAgICAgaWYgbm90IGEgYml0IG1vcmUgbm9pc3kgYW5kIHBlcmhhcHMgYSB0
aW55IGNvbXBpbGUgdGltZSBjb3N0LgorCisgICAgICAgIE5PVEU6IFRoZSB1c2Ugb2YgYC0+IGRl
Y2x0eXBlKGF1dG8pYCBleHBsaWNpdCByZXR1cm4gdHlwZSBvbiB0aGUgbGFtYmRhIGlzIHJlcXVp
cmVkCisgICAgICAgIHRvIHBlcmZlY3RseSBmb3J3YXJkIHJlZmVyZW5jZSB0eXBlcywgc3VjaCBh
cyB0aG9zZSB1c2VkIGJ5IG93bmVkIHByb21pc2VzLiBPdGhlcndpc2UsCisgICAgICAgIGEgY29w
eSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHN1cHBv
cnRpbmcgYWxsIG9wZXJhdGlvbnMsIHRoaXMgYWxzbyByZW1vdmVzIHRoZSByZXF1aXJlbWVudCB0
byBhbm5vdGF0ZQorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBnZXR0ZXJzL3NldHRlcnMuIFRo
aXMgbW9zdGx5IGp1c3QgbWVhbnMgYWx3YXlzIGRlZmluaW5nIGEgdGhyb3cgc2NvcGUsCisgICAg
ICAgIGJ1dCBmb3IgbmFtZWQgZ2V0dGVycyBpdCBhbHNvIG1lYW50IGFkZGluZyBhIG5ldyBoZWxw
ZXIsIGB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3JgCisgICAgICAgIHdo
aWNoIGNvbnN0cnVjdG9ycyB0aGUgaXRlbSBhY2Nlc3NvciBmdW5jdG9yIGZvciB0aGUgYGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5YCAKKyAgICAgICAgYWxnb3JpdGhtIHJhdGhlciB0aGFuIGhh
cmQgY29kaW5nIGl0IGluIHRoZSBnZW5lcmF0b3IuCisKKyAgICAgICAgRHVlIHRvIGluY3JlYXNl
ZCB1c2Ugb2YgdG9KUywgdGhlIGNvZGUgZ2VuZXJhdG9yIGlzIG5vdyBjaGVja2luZyBtb3JlIHJl
dHVybiB0eXBlcworICAgICAgICAodmlhIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSkgc28g
dGhlIGNvZGUgZ2VuZXJhdG9yIHdhcyBhYmxlIHRvIGZpbmQgYSBmZXcgaW52YWxpZAorICAgICAg
ICByZXR1cm4gdHlwZXMgKGUuZy4gdXNlIG9mIFByb21pc2U8Ym9vbD4gcmF0aGVyIHRoYW4gUHJv
bWlzZTxib29sZWFuPiwgZXRjLikgYW5kIHRoZXNlCisgICAgICAgIGhhdmUgYmVlbiBmaXhlZCBh
bmQgd2lsbCBiZSBhbiBlcnJvciBnb2luZyBmb3J3YXJkLiBXb3VsZCBiZSBhIG5pY2UgaW1wcm92
ZW1lbnQgdG8KKyAgICAgICAgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGRvIHR5cGUgY2hlY2tpbmcg
dXAgZnJvbnQsIHJhdGhlciB0aGFuIGFzIGEgc2lkZSBlZmZlY3Qgb2YKKyAgICAgICAgY29kZSBn
ZW5lcmF0aW9uLCBidXQgd2Ugd2lsbCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyIGRheS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IpOgorICAgICAg
ICBBZGRlZC4gTW92ZXMgdGhlIGdldHRlckZ1bmN0b3IgbGFtYmRhIGNyZWF0aW9uIGZyb20gdGhl
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEKKyAgICAgICAgc3Vicm91dGluZSBpbiBDb2RlR2Vu
ZXJhdG9ySlMucG0sIGJ1dCB1c2VzIGRlZHVjdGlvbiBhbmQgY29uc3RleHByIHRvIGRldGVybWlu
ZQorICAgICAgICBpZiB0aGUgZ2V0dGVyIHRocm93cy4KKworICAgICAgICAoV2ViQ29yZTo6YWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICBSZW5hbWUgRnVuY3RvciB0byBJdGVt
QWNjZXNzb3IgdG8gbWFrZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQgdGhlIHR5cGUgZG9lcy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAg
ICAgIFJlcGxhY2UgU0ZJTkFFLWJhc2VkIG92ZXJsb2FkaW5nIG9mIHRvSlMvdG9KU05ld2x5Q3Jl
YXRlZCB3aXRoIGNvbnN0ZXhwciBiYXNlZAorICAgICAgICBjb25kaXRpb25hbHMgYW5kIGFkZCB0
aGUgYWJpbGl0eSB0byBwYXNzIGluIGEgZnVuY3RvciByYXRoZXIgdGhhbiB2YWx1ZS4gSWYgYQor
ICAgICAgICBmdW5jdG9yIGlzIHVzZWQsIGFkZGl0aW9uYWwgY29kZSBwYXRocyBmb3Igdm9pZCBh
bmQgRXhwZWN0aW9uT3I8dm9pZD4gYXJlIGFkZGVkCisgICAgICAgIHdoaWNoIGV4cGxpY2l0bHkg
cmV0dXJuIGpzVW5kZWZpbmVkKCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnREYXRlLmNwcDoKKyAgICAgICAgUmVtb3ZlIGluY29ycmVjdCBjb21tZW50IGFib3V0IEV4ZWNT
dGF0ZXMgdGhhdCBoYXNuJ3QgYXBwbGllZCBmb3IgYSB3aGlsZS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oOgorICAgICAgICBGaXggY29tbWVudCwgcmVw
bGFjaW5nIEV4ZWNTdGF0ZSB3aXRoIEpTR2xvYmFsT2JqZWN0LiBUaGlzIGhhcyBiZWVuIHdyb25n
IGZvcgorICAgICAgICBhIHdoaWxlLCBhbmQgdGhpcyBpcyBqdXN0IGEgZHJpdmUgYnkgZml4Lgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICBVc2UgYW4gZXhwbGljaXQgZWxzZSBhcyBwYXJ0IG9mIHRoZSBjb25zdGV4cHIg
ZXhwcmVzc2lvbiB0byBlbnN1cmUgdGhlIGZ1bmN0b3IKKyAgICAgICAgaXMgbm90IGNhbGxlZCwg
ZXZlbiBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEZWZlcnJlZFByb21pc2Up
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6
CisgICAgICAgIFJlbW92ZSB1bnVzZWQgY3JlYXRlRGVmZXJyZWRQcm9taXNlIGZ1bmN0aW9uLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChBZGRNYXBMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEFk
ZFNldExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZWVkZWQpOgorICAgICAgICBGaXggcmV0
dXJuIHR5cGUgb2YgbWFwcGVkIGNsZWFyIG9wZXJhdGlvbiB0byBiZSBgYW55YCByYXRoZXIgdGhh
biBgdW5kZWZpbmVkYAorICAgICAgICB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNo
IHJldHVybnMgYSBKU1ZhbHVlIChlLmcuIGBhbnlgKS4gVGhpcyBpcyBub3cKKyAgICAgICAgcmVx
dWlyZWQgYXMgd2UgYWN0dWFsbHkgbG9vayBhdCB0aGUgcmV0dXJuIHR5cGUgdmlhIGRlZHVjdGlv
biBhbmQgbmVlZCBpdCBtYXRjaC4KKyAKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1i
ZGEpOgorICAgICAgICBSZXBsYWNlIG1vc3Qgb2YgdGhlIGltcGxlbWVudGF0aW9uIHdpdGggYSBj
YWxsIHRvIHRoZSBuZXcgYHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcmAK
KyAgICAgICAgaGVscGVyIHdoaWNoIHJldHVybnMgYSBsYW1iZGEgd2l0aCB0aGUgY29ycmVjdCBi
ZWhhdmlvciBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB0eXBlIG9mIHRoZSBpbm5lcgorICAgICAg
ICBsYW1iZGEgcGFzc2VkLgorIAorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAg
KEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpb24pOgorICAgICAgICBNYXRjaCBt
b3N0IG90aGVyIHBhcnRzIG9mIHRoZSBnZW5lcmF0b3IgYW5kIGFsd2F5cyBjcmVhdGUgYSB0aHJv
dyBzY29wZS4KKworICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAg
ICAgUmVtb3ZlIGV4cGxpY2l0IGNhbGwgdG8gcHJvcGFnYXRlRXhjZXB0aW9uIG5vdyB0aGF0IHRv
SlMoKSB3aWxsIGhhbmRsZSB0aGF0IGZvciB1cy4KKworICAgICAgICAoR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2spOgorICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2FsbCB0byBwcm9wYWdhdGVFeGNl
cHRpb24gbm93IHRoYXQgdG9KUygpIHdpbGwgaGFuZGxlIHRoYXQgZm9yIHVzLgorCisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAgICAgICAgU2ltcGxpZnkg
YnkgdXNpbmcgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkgaGVs
cGVyIGZvciB0aGUgInJldHVybkFyZ3VtZW50TmFtZSIKKyAgICAgICAgY2FzZSBhbmQgcmVseWlu
ZyBvbiB0b0pTIGhhbmRsaW5nIHRoZSBvdGhlciBjYXNlcy4KKworICAgICAgICAoTmF0aXZlVG9K
U1ZhbHVlTWF5VGhyb3cpOgorICAgICAgICBBZGQgb3BlcmF0aW9uIHRvIHRoZSBsaXN0IG9mIHRo
aW5ncyB0aGF0IG1pZ2h0IGFsd2F5cyB0aHJvdy4KKworICAgICAgICAoTmF0aXZlVG9KU1ZhbHVl
KToKKyAgICAgICAgVXNlIHRoZSBsYW1iZGEgd3JhcHBlZCB2ZXJzaW9uIG9mIHRvSlMgZm9yIHVu
ZGVmaW5lZCBhbmQgcHJvbWlzZSB0eXBlcywgd2hpY2ggbWlnaHQgYm90aAorICAgICAgICByZXR1
cm4gdm9pZCBhbmQgdGh1cyByZXF1aXJlIGl0LiBUbyBrZWVwIG1vc3QgY29kZSB1bmNoYW5nZWQs
IGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSBjb21waWxlcgorICAgICAgICB3b3JrLCB3ZSBvbmx5IHVz
ZSB0aGUgd3JhcHBlZCB2ZXJzaW9uIHdoZW4gaXQgbWlnaHQgYmUgbmVjZXNzYXJ5LiBJZiBpdCB0
dXJucyBvdXQgdG8gYmUKKyAgICAgICAgY2hlZXAgZW5vdWdoLCBpdCBtaWdodCBtYWtlIHNlbnNl
IHRvIGFsd2F5cyB1c2UgdGhpcyBmb3JtIGZvciBzaW1wbGljaXR5LgorCisgICAgICAgIChOZWVk
c0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgUmVtb3ZlIE1heVRo
cm93RXhjZXB0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVG
b3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVO
U0ZvckJpbmRpbmdzKToKKyAgICAgICAgQWRkIGJpbmRpbmdzIHNwZWNpZmljIHZlcnNpb25zIG9m
IGByZW1vdmVBdHRyaWJ1dGVgIGFuZCBgcmVtb3ZlQXR0cmlidXRlTlNgIHdoaWNoCisgICAgICAg
IGhhdmUgYSB2b2lkIHJldHVybiB0eXBlIChyYXRoZXIgdGhhbiB0aGUgYm9vbCB1c2VkIGJ5IHRo
ZSBtYWluIGltcGxlbWVudGF0aW9uKQorICAgICAgICBhcyBpdCBpcyBub3cgYSByZXF1aXJlbWVu
dCB0aGF0IHRoYXQgdGhlIGJvdW5kIGZ1bmN0aW9ucyBzaWduYXR1cmUgbWF0Y2ggdGhlIElETC4K
KworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaWRsOgorICAgICAgICBVc2UgdGhl
IGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlcXVlc3RgLCBub3QgYFJlcXVlc3RgLgor
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaWRsOgorICAgICAgICBV
c2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBET01DYWNoZWAsIG5vdCBgQ2FjaGVgLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQrU3RvcmFnZUFjY2Vzcy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IrSXNMb2dnZWRJbi5pZGw6CisgICAgICAgIFVzZSB0aGUgY29ycmVjdCBJREwgdHlwZSwgYGJv
b2xlYW5gLCBub3QgYGJvb2xgLgorCisgICAgICAgICogZG9tL0Fib3J0U2lnbmFsLmlkbDoKKyAg
ICAgICAgVXBkYXRlIHdoZW5TaWduYWxBYm9ydGVkIHRvIG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYGJvb2xlYW5gLAorICAgICAgICBub3QgYHVuZGVm
aW5lZGAuCisKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgor
ICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlc3BvbnNlYCwg
bm90IGBSZXNwb25zZWAuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWVzLCBg
U2VydmljZVdvcmtlckNsaWVudGAsIG5vdCBgQ2xpZW50YCwgYW5kIGBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50YCwgbm90IGBXaW5kb3dDbGllbnRgLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJl
Y3QgaW50ZXJmYWNlIG5hbWVzLCBgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudGAsIG5vdCBgV2lu
ZG93Q2xpZW50YC4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29uLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvdytDYWNoZXMuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGw6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGw6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNm
b3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIr
VHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25F
dmVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVz
dFVwZGF0ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5p
ZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vSUlSRmlsdGVyTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0Um93TGlzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5p
ZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2Vi
R0xMYXllci5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAg
ICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsOgorICAgICAgICAqIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6
CisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAg
ICAgICAgKiBjc3MvRE9NQ1NTTmFtZXNwYWNlK0NTU1Byb3BlcnRpZXNhbmRWYWx1ZXMuaWRsOgor
ICAgICAgICAqIGNzcy9ET01NYXRyaXguaWRsOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFk
T25seS5pZGw6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmlk
bDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxp
c3QuaWRsOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmlkbDoKKyAgICAgICAgKiBkb20v
Q2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbDoK
KyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsOgorICAgICAgICAqIGRvbS9ET01Q
b2ludFJlYWRPbmx5LmlkbDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudCtIVE1MLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsOgorICAgICAgICAq
IGRvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAgICAgICAgKiBkb20vTXV0
YXRpb25PYnNlcnZlci5pZGw6CisgICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5pZGw6CisgICAg
ICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaWRsOgorICAg
ICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vUmFuZ2UrRE9NUGFyc2lu
Zy5pZGw6CisgICAgICAgICogZG9tL1JhbmdlLmlkbDoKKyAgICAgICAgKiBkb20vVGV4dC5pZGw6
CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVGV4dERlY29k
ZXJTdHJlYW1EZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaWRs
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsOgorICAgICAgICAqIGh0bWwv
RE9NVG9rZW5MaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxFbWJlZEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
OgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmlkbDoKKyAgICAgICAgKiBodG1sL1RpbWVSYW5nZXMuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0
YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhdGgyRC5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdERPTU9iamVjdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVz
b3VyY2VzT2JqZWN0LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGw6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOgorICAgICAgICAqIHBhZ2Uv
RE9NU2VsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogcGFnZS9IaXN0b3J5LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOgorICAgICAgICAqIHBhZ2UvUGVy
Zm9ybWFuY2UrVXNlclRpbWluZy5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9ic2Vy
dmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1VuZG9NYW5hZ2VyLmlkbDoKKyAgICAgICAgKiBwYWdl
L1VzZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5pZGw6
CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NW
R0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0LmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdQb2ludExp
c3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmlk
bDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5pZGw6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGw6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB4bWwvRE9NUGFyc2VyLmlkbDoKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1YXRv
ckJhc2UuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24uaWRsOgorICAgICAgICAq
IHhtbC9YUGF0aFJlc3VsdC5pZGw6CisgICAgICAgIFJlbW92ZSB1c2Ugb2YgW01heVRocm93RXhj
ZXB0aW9uXS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8qOgorICAgICAg
ICBSZW1vdmUgdXNlcyBvZiBbTWF5VGhyb3dFeGNlcHRpb25dIGluIHRoZSB0ZXN0cyBhbmQgdXBk
YXRlIGFsbCB0aGUgdGVzdCByZXN1bHRzLgorCiAyMDIxLTAzLTE5ICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW5rIGFnYWluc3QgdGhlIEFOR0xFIFNoYXJlZCBM
aWJyYXJ5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDEzICs3OCw0NiBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIE5PVEU6IE5hbWVkIGdldHRlcnMgYXJlIGxpdHRs
ZSBvZGQuIFRvIGF2b2lkIGRvaW5nIGR1cGxpY2F0ZSBsb29rdXBzIChvbmNlIHdoZW4gY2hlY2tp
bmcgaWYKKy8vICAgICAgIHRoZSBwcm9wZXJ0eSBuYW1lIGlzIGEgJ3N1cHBvcnRlZCBwcm9wZXJ0
eSBuYW1lJyBhbmQgb25jZSB0byBnZXQgdGhlIHZhbHVlKSB3ZSBzaWduYWwKKy8vICAgICAgIHRo
YXQgYSBwcm9wZXJ0eSBpcyBzdXBwb3J0ZWQgYnkgd2hldGhlciBvciBub3QgaXQgaXMgJ251bGwn
ICh3aGVyZSB3aGF0IG51bGwgbWVhbnMgaXMKKy8vICAgICAgIGRlcGVuZGFudCBvbiB0aGUgSURM
IHR5cGUpLiBUaGlzIGlzIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgbm8gbmFtZWQgZ2V0
dGVyIHdpbGwKKy8vICAgICAgIGV2ZXIgYWN0dWFsbHkgd2FudCB0byByZXR1cm4gbnVsbCBhcyBh
biBhY3R1YWwgcmV0dXJuIHZhbHVlLCB3aGljaCBzZWVtcyBsaWtlIGFuIG9rCisvLyAgICAgICBh
c3N1bXB0aW9uIHRvIG1ha2UgKHNob3VsZCBpdCB0dXJuIG91dCB0aGlzIGRvZXNuJ3QgaG9sZCBp
biB0aGUgZnV0dXJlLCB3ZSBoYXZlIGxvdHMKKy8vICAgICAgIG9mIG9wdGlvbnM7IGRvIHR3byBs
b29rdXBzLCBhZGQgYW4gZXh0cmEgbGF5ZXIgb2YgT3B0aW9uYWwsIGV0Yy4pLgordGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZSwgdHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgSW5uZXJJdGVtQWNj
ZXNzb3I+CitzdGF0aWMgZGVjbHR5cGUoYXV0bykgdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNj
ZXNzb3JGdW5jdG9yKElubmVySXRlbUFjY2Vzc29yJiYgaW5uZXJJdGVtQWNjZXNzb3IpCit7Cisg
ICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9yPHN0ZDo6aW52b2tlX3Jlc3VsdF90PElubmVy
SXRlbUFjY2Vzc29yLCBKU0NsYXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWU+PikgeworICAgICAgICB1
c2luZyBSZXR1cm5UeXBlID0gRXhjZXB0aW9uT3I8dHlwZW5hbWUgSURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlPjsKKworICAgICAgICByZXR1cm4gW2lubmVySXRlbUFjY2Vzc29yID0gc3RkOjpm
b3J3YXJkPElubmVySXRlbUFjY2Vzc29yPihpbm5lckl0ZW1BY2Nlc3NvcildIChKU0NsYXNzJiB0
aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPFJl
dHVyblR5cGU+IHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5uZXJJdGVtQWNjZXNzb3Io
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUgeyByZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpIH07CisgICAgICAgICAgICBpZiAoIUlETFR5cGU6OmlzTnVsbFZhbHVl
KHJlc3VsdC5yZXR1cm5WYWx1ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJuVHlw
ZSB7IElETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCkpIH07CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9
OworICAgIH0gZWxzZSB7CisgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSB0eXBlbmFtZSBJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGU7CisKKyAgICAgICAgcmV0dXJuIFtpbm5lckl0ZW1BY2Nl
c3NvciA9IHN0ZDo6Zm9yd2FyZDxJbm5lckl0ZW1BY2Nlc3Nvcj4oaW5uZXJJdGVtQWNjZXNzb3Ip
XSAoSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAt
PiBPcHRpb25hbDxSZXR1cm5UeXBlPiB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlubmVy
SXRlbUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBpZiAo
IUlETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJl
dHVyblR5cGUgeyBJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfTsKKyAgICB9Cit9CisK
IC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBh
bGdvcml0aG0nIGF1Z21lbnRlZCB0byByZXBsYWNlIHRoZQogLy8gJ3N1cHBvcnRlZCBwcm9wZXJ0
eSBuYW1lJyBjaGVjayB3aXRoIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGltcGxlbWVudGF0aW9uIHZh
bHVlIHJldHVybmVkCiAvLyBmb3IgdGhlIHByb3BlcnR5IG5hbWUsIHZpYSBwYXNzZWQgaW4gZnVu
Y3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgdHdvIGxvb2tpbmcgdXAgdGhlCiAvLyB0aGUg
cHJvcGVydHkgbmFtZSB0d2ljZTsgb25jZSBmb3IgJ25hbWVkIHByb3BlcnR5IHZpc2liaWxpdHkg
YWxnb3JpdGhtJyBjaGVjaywgYW5kIHRoZW4KIC8vIGFnYWluIHdoZW4gdGhlIHZhbHVlIGlzIG5l
ZWRlZC4KLXRlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgb3ZlcnJpZGVCdWlsdGlucywg
Y2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KLXN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRnVuY3Rv
ciYmIGl0ZW1BY2Nlc3NvcikgLT4gZGVjbHR5cGUoaXRlbUFjY2Vzc29yKHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSkpCit0ZW1wbGF0ZTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIG92ZXJyaWRlQnVp
bHRpbnMsIGNsYXNzIEpTQ2xhc3MsIGNsYXNzIEl0ZW1BY2Nlc3Nvcj4KK3N0YXRpYyBhdXRvIGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSXRlbUFjY2Vzc29yJiYgaXRlbUFjY2Vzc29yKSAtPiBkZWNsdHlwZShpdGVtQWNjZXNz
b3IodGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkKIHsKICAgICAvLyBOT1RFOiBXaGlsZSBpdCBp
cyBub3Qgc3BlY2lmaWVkLCBhIFN5bWJvbCBjYW4gbmV2ZXIgYmUgYSAnc3VwcG9ydGVkIHByb3Bl
cnR5CiAgICAgLy8gbmFtZScgc28gd2UgY2hlY2sgdGhhdCBmaXJzdC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCYXNlLmgJKHJldmlzaW9uIDI3NDcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtOTQsMTIgKzk0LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVSYmKTsKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBVJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIFUmJik7Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25P
cjxVPiwgSlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBhdXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUm
JikgLT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPjsK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYm
KSAtPiBzdGQ6OmVuYWJsZV9pZl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1ZT47Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJikg
LT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPjsKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Nj
b3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNW
YWx1ZT47Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpT
Qzo6VGhyb3dTY29wZSYsIFUmJikgLT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxV
PiwgSlNDOjpKU1ZhbHVlPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2Nv
cGUmLCBVJiYgdmFsdWVPckZ1bmN0b3IpOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUds
b2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZU9yRnVuY3Rvcik7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpU
aHJvd1Njb3BlJiwgVSYmIHZhbHVlT3JGdW5jdG9yKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
Ym9vbCBuZWVkc1N0YXRlID0gSlNDb252ZXJ0ZXI8VD46Om5lZWRzU3RhdGUsIGJvb2wgbmVlZHNH
bG9iYWxPYmplY3QgPSBKU0NvbnZlcnRlcjxUPjo6bmVlZHNHbG9iYWxPYmplY3Q+CiBzdHJ1Y3Qg
SlNDb252ZXJ0ZXJPdmVybG9hZGVyOwpAQCAtMTU4LDUyICsxNTYsOTcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIAogICAgIHJldHVybiBKU0NvbnZlcnRlcjxUPjo6
Y29udmVydE5ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHN0
ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVu
YWJsZV9pZl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1ZT4KK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUs
IFUmJiB2YWx1ZU9yRnVuY3RvcikKIHsKLSAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0
aW9uKCkpKSB7Ci0gICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0KLQotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKLX0KKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
aW52b2NhYmxlX3Y8VT4pIHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJldHVyblR5cGUgPSBzdGQ6
Omludm9rZV9yZXN1bHRfdDxVPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmLCBVJiYgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IUlzRXhj
ZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1ZT4KLXsKLSAgICByZXR1cm4gdG9KUzxUPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIFUmJiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZf
dDxJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+Ci17Ci0gICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc0V4Y2VwdGlvbigpKSkgewotICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjx2
b2lkLCBGdW5jdG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIHZhbHVlT3JGdW5jdG9yKCk7
CisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2Ug
aWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGNlcHRpb25Pcjx2b2lkPiwgRnVuY3RvclJl
dHVyblR5cGU+KSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHZhbHVlT3JGdW5jdG9yKCk7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSkgeworICAg
ICAgICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdG9KUzxUPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZU9yRnVuY3RvcigpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8VT4pIHsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWSh2YWx1ZU9yRnVuY3Rvci5oYXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAg
ICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgdmFsdWVPckZ1bmN0b3IucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdG9KUzxUPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZU9yRnVuY3Rvci5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlT3JGdW5jdG9yKSk7CisgICAgfQorfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYgdmFsdWVP
ckZ1bmN0b3IpCit7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2ludm9jYWJsZV92PFU+KSB7
CisgICAgICAgIHVzaW5nIEZ1bmN0b3JSZXR1cm5UeXBlID0gc3RkOjppbnZva2VfcmVzdWx0X3Q8
VT47CisKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjx2b2lkLCBGdW5jdG9y
UmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIHZhbHVlT3JGdW5jdG9yKCk7CisgICAgICAgICAg
ICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWVfdjxFeGNlcHRpb25Pcjx2b2lkPiwgRnVuY3RvclJldHVyblR5cGU+KSB7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHZhbHVlT3JGdW5jdG9yKCk7CisgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAg
IHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdG9KUzxUPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9yKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoSXNFeGNlcHRpb25PcjxVPikgeworICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKHZhbHVlT3JGdW5jdG9yLmhhc0V4Y2VwdGlvbigpKSkgeworICAgICAg
ICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCB2YWx1ZU9yRnVuY3Rvci5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0b0pTPFQ+
KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdmFsdWVPckZ1bmN0b3IucmVsZWFz
ZVJldHVyblZhbHVlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0b0pT
PFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZh
bHVlT3JGdW5jdG9yKSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYgdmFsdWVPckZ1bmN0b3IpCit7Cisg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2ludm9jYWJsZV92PFU+KSB7CisgICAgICAgIHVzaW5n
IEZ1bmN0b3JSZXR1cm5UeXBlID0gc3RkOjppbnZva2VfcmVzdWx0X3Q8VT47CisKKyAgICAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjx2b2lkLCBGdW5jdG9yUmV0dXJuVHlwZT4pIHsK
KyAgICAgICAgICAgIHZhbHVlT3JGdW5jdG9yKCk7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpq
c1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVf
djxFeGNlcHRpb25Pcjx2b2lkPiwgRnVuY3RvclJldHVyblR5cGU+KSB7CisgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHZhbHVlT3JGdW5jdG9yKCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFko
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUV4Y2Vw
dGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9yKCkpOworCisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9yPFU+KSB7CisgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkodmFsdWVPckZ1bmN0b3IuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAg
ICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIHZhbHVlT3JGdW5jdG9yLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRvSlNOZXds
eUNyZWF0ZWQ8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2YWx1ZU9yRnVu
Y3Rvci5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQ8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWVPckZ1bmN0b3IpKTsKICAgICB9Ci0KLSAgICByZXR1
cm4gdG9KUzxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZhbHVlLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmLCBVJiYg
dmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IUlzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1
ZT4KLXsKLSAgICByZXR1cm4gdG9KUzxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9p
Zl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1ZT4KLXsKLSAgICBpZiAoVU5MSUtFTFko
dmFsdWUuaGFzRXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVk
PFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVy
blZhbHVlKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
YXV0byB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYs
IFUmJiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpK
U1ZhbHVlPgotewotICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkPFQ+KGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Ci19Ci0KLQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRDb252ZXJ0ZXIgewogICAgIHVzaW5nIFJl
dHVyblR5cGUgPSB0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5cGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwCShyZXZpc2lv
biAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnREYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotLy8gRklYTUU6IFRoaXMgc2hvdWxkIGdldCBwYXNz
ZWQgYSBnbG9iYWwgb2JqZWN0IHJhdGhlciB0aGFuIGdldHRpbmcgaXQgb3V0IG9mIHRoZSBFeGVj
U3RhdGUuCiBKU1ZhbHVlIGpzRGF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgZG91YmxlIHZhbHVlKQogewogICAgIHJldHVybiBEYXRlSW5zdGFuY2U6OmNyZWF0ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCksIGxleGljYWxHbG9iYWxPYmplY3QuZGF0ZVN0cnVjdHVyZSgp
LCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRT
ZXF1ZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRTZXF1ZW5jZXMuaAkocmV2aXNpb24gMjc0NzI4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0U2VxdWVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgc3RydWN0IEdlbmVyaWNTZXF1ZW5jZUNvbnZlcnRlciB7CiAvLyBTcGVjaWFs
aXphdGlvbiBmb3IgbnVtZXJpYyB0eXBlcwogLy8gRklYTUU6IFRoaXMgaXMgb25seSBpbXBsZW1l
bnRlZCBmb3IgdGhlIElETEZsb2F0aW5nUG9pbnRUeXBlcyBhbmQgSURMTG9uZy4gVG8gYWRkCiAv
LyBzdXBwb3J0IGZvciBtb3JlIG51bWVyaWMgdHlwZXMsIGFkZCBhbiBvdmVybG9hZCBvZiBDb252
ZXJ0ZXI8SURMVHlwZT46OmNvbnZlcnQgdGhhdAotLy8gdGFrZXMgYW4gRXhlY1N0YXRlLCBUaHJv
d1Njb3BlLCBkb3VibGUgYXMgaXRzIGFyZ3VtZW50cy4KKy8vIHRha2VzIGEgSlNHbG9iYWxPYmpl
Y3QsIFRocm93U2NvcGUgYW5kIGRvdWJsZSBhcyBpdHMgYXJndW1lbnRzLgogdGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4KIHN0cnVjdCBOdW1lcmljU2VxdWVuY2VDb252ZXJ0ZXIgewogICAgIHVz
aW5nIEdlbmVyaWNDb252ZXJ0ZXIgPSBHZW5lcmljU2VxdWVuY2VDb252ZXJ0ZXI8SURMVHlwZT47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRp
b25IYW5kbGluZy5oCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5
LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpbnZva2VGdQogICAgICAgICBp
ZiAoVU5MSUtFTFkocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCByZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZ1bmN0b3IoKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3RvcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJl
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwx
MyArMjExLDYgQEAgdm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KEpTQwogICAg
IERlZmVycmVkUHJvbWlzZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgcHJvbWlzZSktPnJlamVjdDxJ
RExBbnk+KGVycm9yKTsKIH0KIAotUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQ
cm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTVdpbmRvdyYgZG9tV2luZG93KQotewot
ICAgIGF1dG8qIHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZShkb21XaW5kb3cudm0oKSwgZG9t
V2luZG93LnByb21pc2VTdHJ1Y3R1cmUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocHJvbWlzZSk7
Ci0gICAgcmV0dXJuIERlZmVycmVkUHJvbWlzZTo6Y3JlYXRlKGRvbVdpbmRvdywgKnByb21pc2Up
OwotfQotCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBl
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIFJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3JDYXVzZSBjYXVz
ZSkKIHsKICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJl
ZC5oCShyZXZpc2lvbiAyNzQ3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2VEZWZlcnJlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsOSArMjk1LDYgQEAgcHVi
bGljOgogICAgIH0KIH07CiAKLQotUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQ
cm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTVdpbmRvdyYpOwotCiB2b2lkIGZ1bGZp
bGxQcm9taXNlV2l0aEpTT04oUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJik7
CiB2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYsIEFycmF5QnVmZmVyKik7CiB2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNyArMzE4LDcgQEAgc3ViIEFkZE1h
cExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZQogICAgIHVubGVzcyAoZ3JlcCB7ICRfLT5u
YW1lIGVxICJjbGVhciIgfSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSwgQHskaW50ZXJmYWNl
LT5vcGVyYXRpb25zfSwgQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSkgewogICAgICAgICBteSAk
Y2xlYXJPcGVyYXRpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwogICAgICAgICAkY2xlYXJPcGVy
YXRpb24tPm5hbWUoImNsZWFyIik7Ci0gICAgICAgICRjbGVhck9wZXJhdGlvbi0+dHlwZShJRExQ
YXJzZXI6Om1ha2VTaW1wbGVUeXBlKCJ1bmRlZmluZWQiKSk7CisgICAgICAgICRjbGVhck9wZXJh
dGlvbi0+dHlwZShJRExQYXJzZXI6Om1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CiAgICAgICAgIElE
TFBhcnNlcjo6Y29weUV4dGVuZGVkQXR0cmlidXRlcygkY2xlYXJPcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcywgJGludGVyZmFjZS0+bWFwTGlrZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAg
ICAgICAgJGNsZWFyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxl
fSA9IDE7CiAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSwgJGNsZWFyT3Bl
cmF0aW9uKTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBzdWIgQWRkU2V0TGlrZUF0dHJpYnV0ZXNBbmRP
cGVyYXRpb25JZk5lCiAgICAgdW5sZXNzIChncmVwIHsgJF8tPm5hbWUgZXEgImNsZWFyIiB9IChA
eyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9LCBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCBAeyRp
bnRlcmZhY2UtPmNvbnN0YW50c30pKSB7CiAgICAgICAgIG15ICRjbGVhck9wZXJhdGlvbiA9IElE
TE9wZXJhdGlvbi0+bmV3KCk7CiAgICAgICAgICRjbGVhck9wZXJhdGlvbi0+bmFtZSgiY2xlYXIi
KTsKLSAgICAgICAgJGNsZWFyT3BlcmF0aW9uLT50eXBlKElETFBhcnNlcjo6bWFrZVNpbXBsZVR5
cGUoInVuZGVmaW5lZCIpKTsKKyAgICAgICAgJGNsZWFyT3BlcmF0aW9uLT50eXBlKElETFBhcnNl
cjo6bWFrZVNpbXBsZVR5cGUoImFueSIpKTsKICAgICAgICAgSURMUGFyc2VyOjpjb3B5RXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRjbGVhck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaW50ZXJm
YWNlLT5zZXRMaWtlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOwogICAgICAgICAkY2xlYXJPcGVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9ID0gMTsKICAgICAgICAgcHVz
aChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCAkY2xlYXJPcGVyYXRpb24pOwpAQCAtODQ0LDM5
ICs4NDQsMTQgQEAgc3ViIEdlbmVyYXRlTmFtZWRHZXR0ZXIKIAogc3ViIEdlbmVyYXRlTmFtZWRH
ZXR0ZXJMYW1iZGEKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFtZWRH
ZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgJElETFR5cGUpID0gQF87
CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkR2V0
dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICRJRExUeXBlKSA9IEBfOwog
ICAgIAotICAgICMgTk9URTogTmFtZWQgZ2V0dGVycyBhcmUgbGl0dGxlIG9kZC4gVG8gYXZvaWQg
ZG9pbmcgZHVwbGljYXRlIGxvb2t1cHMgKG9uY2Ugd2hlbiBjaGVja2luZyBpZgotICAgICMgICAg
ICAgdGhlIHByb3BlcnR5IG5hbWUgaXMgYSAnc3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGFuZCBv
bmNlIHRvIGdldCB0aGUgdmFsdWUpIHdlIHNpZ25hbAotICAgICMgICAgICAgdGhhdCBhIHByb3Bl
cnR5IGlzIHN1cHBvcnRlZCBieSB3aGV0aGVyIG9yIG5vdCBpdCBpcyAnbnVsbCcgKHdoZXJlIHdo
YXQgbnVsbCBtZWFucyBpcwotICAgICMgICAgICAgZGVwZW5kYW50IG9uIHRoZSBJREwgdHlwZSku
IFRoaXMgaXMgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBubyBuYW1lZCBnZXR0ZXIgd2ls
bAotICAgICMgICAgICAgZXZlciBhY3R1YWxseSB3YW50IHRvIHJldHVybiBudWxsIGFzIGFuIGFj
dHVhbCByZXR1cm4gdmFsdWUsIHdoaWNoIHNlZW1zIGxpa2UgYW4gb2sKLSAgICAjICAgICAgIGFz
c3VtcHRpb24gdG8gbWFrZSAoc2hvdWxkIGl0IHR1cm4gb3V0IHRoaXMgZG9lc24ndCBob2xkIGlu
IHRoZSBmdXR1cmUsIHdlIGhhdmUgbG90cwotICAgICMgICAgICAgb2Ygb3B0aW9uczsgZG8gdHdv
IGxvb2t1cHMsIGFkZCBhbiBleHRyYSBsYXllciBvZiBPcHRpb25hbCwgZXRjLikuCi0gICAgCi0g
ICAgbXkgJHJlc3VsdFR5cGUgPSAidHlwZW5hbWUgJHtJRExUeXBlfTo6SW1wbGVtZW50YXRpb25U
eXBlIjsKLSAgICAkcmVzdWx0VHlwZSA9ICJFeGNlcHRpb25PcjwiIC4gJHJlc3VsdFR5cGUgLiAi
PiIgaWYgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJv
d0V4Y2VwdGlvbn07Ci0gICAgbXkgJHJldHVyblR5cGUgPSAiT3B0aW9uYWw8IiAuICRyZXN1bHRU
eXBlIC4gIj4iOwotCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gZ2V0dGVyRnVu
Y3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gJHtyZXR1
cm5UeXBlfSB7XG4iKTsKLQogICAgIG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNp
bmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJXVEY6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIg
ICAgICAgICIpOwogICAgIHB1c2goQGFyZ3VtZW50cywgInByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1
dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkuJHtuYW1lZEdldHRlckZ1bmN0aW9uTmFt
ZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOwotICAgIAotICAgIGlmICgk
bmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0
aW9ufSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpXG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICAgICAgcmV0dXJuICR7cmVzdWx0VHlwZX0geyByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpIH07
XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoISR7SURMVHlw
ZX06OmlzTnVsbFZhbHVlKHJlc3VsdC5yZXR1cm5WYWx1ZSgpKSlcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gJHtyZXN1bHRUeXBlfSB7ICR7SURM
VHlwZX06OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkpIH07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0O1xuIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBpZiAoISR7SURMVHlwZX06OmlzTnVsbFZhbHVlKHJlc3VsdCkpXG4iKTsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuICR7cmVzdWx0
VHlwZX0geyAke0lETFR5cGV9OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9O1xu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDtcbiIpOwotICAgIH0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfTtcbiIpOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxl
TmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8JHtJRExUeXBlfSwgJHtjbGFzc05hbWV9
PihbXSAoJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSAtPiBkZWNsdHlwZShhdXRvKSB7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS4ke25hbWVkR2V0dGVyRnVuY3Rpb25OYW1l
fSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIH0pO1xuIik7CiB9CiAKICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dl
YmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1nZXRvd25wcm9wZXJ0eQpAQCAtODkwLDE0ICs4
NjUsMTEgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTtc
biIpOwogICAgIAogICAgIG15ICRuYW1lZEdldHRlck9wZXJhdGlvbiA9IEdldE5hbWVkR2V0dGVy
T3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogICAgIG15ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uID0g
R2V0SW5kZXhlZEdldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKICAgICAKLSAgICBpZiAoKCRu
YW1lZEdldHRlck9wZXJhdGlvbiAmJiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgfHwgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9u
ICYmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJv
d0V4Y2VwdGlvbn0pKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpO1xuIik7Ci0gICAgfQotICAgIAogICAgICMgTk9URTogVGhlIGFsb2dpdGhtIGZvciBb
W0dldE93blByb3BlcnR5XV0gY29udGFpbnMgb25seSB0aGUgZm9sbG93aW5nIHN0ZXA6CiAgICAg
IyAxLiBSZXR1cm4gTGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wZXJ0eShPLCBQLCBmYWxz
ZSkuCiAgICAgCkBAIC05MTgsNyArODkwLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90CiAgICAgICAgIG15ICgkbmF0aXZlVG9KU0NvbnZlcnNpb24sICRhdHRyaWJ1dGVTdHJpbmcp
ID0gR2VuZXJhdGVJbmRleGVkR2V0dGVyKCRpbnRlcmZhY2UsICRpbmRleGVkR2V0dGVyT3BlcmF0
aW9uLCAiaW5kZXgudmFsdWUoKSIpOwogICAgICAgICAKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICAgICAgYXV0byB2YWx1ZSA9ICR7bmF0aXZlVG9KU0NvbnZlcnNpb259O1xu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIikgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJpbmd9
LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAg
cmV0dXJuIHRydWU7XG4iKTsKQEAgLTk0Niw3ICs5MTgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3QKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB1
c2luZyBHZXR0ZXJJRExUeXBlID0gJHtJRExUeXBlfTtcbiIpOwogICAgICAgICAKLSAgICAgICAg
R2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYSgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRuYW1l
ZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAiR2V0dGVySURMVHlw
ZSIpOworICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKCRvdXRwdXRBcnJheSwgJGlu
dGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJG
dW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAgICAgIAogICAgICAgICBteSAkb3Zl
cnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUo
JGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vIjsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkge1xuIik7CkBAIC05
NTYsNyArOTI4LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgIG15
ICgkbmF0aXZlVG9KU0NvbnZlcnNpb24sICRhdHRyaWJ1dGVTdHJpbmcpID0gR2VuZXJhdGVOYW1l
ZEdldHRlcigkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICJXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkiKTsKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgYXV0byB2YWx1ZSA9ICR7bmF0aXZlVG9KU0NvbnZlcnNpb259O1xuIik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7XG4iKSBpZiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIp
OwogICAgICAgICAKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsICR7YXR0cmlidXRlU3RyaW5nfSwgdmFsdWUpO1xuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTEw
MDAsMTYgKzk3MiwxMyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAg
ICAgCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICBpZiAoJG5hbWVkR2V0dGVyT3Bl
cmF0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0gfHwgKCRp
bmRleGVkR2V0dGVyT3BlcmF0aW9uICYmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0pKSB7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpO1xu
Iik7Ci0gICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CisKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwotICAgIAotICAgIGlmICgoJG5hbWVkR2V0dGVy
T3BlcmF0aW9uICYmICRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWF5VGhyb3dFeGNlcHRpb259KSB8fCAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gJiYgJGluZGV4
ZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9u
fSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0gICAgfQotICAgIAorCisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIik7CisKICAgICAjIE5PVEU6IFRoZSBhbG9naXRobSBmb3IgW1tHZXRPd25Qcm9wZXJ0
eV1dIGNvbnRhaW5zIG9ubHkgdGhlIGZvbGxvd2luZyBzdGVwOgogICAgICMgMS4gUmV0dXJuIExl
Z2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoTywgUCwgZmFsc2UpLgogICAgIApAQCAt
MTAzMCw3ICs5OTksNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAg
ICAgICAgIG15ICgkbmF0aXZlVG9KU0NvbnZlcnNpb24sICRhdHRyaWJ1dGVTdHJpbmcpID0gR2Vu
ZXJhdGVJbmRleGVkR2V0dGVyKCRpbnRlcmZhY2UsICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLCAi
aW5kZXgiKTsKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
ICAgIGF1dG8gdmFsdWUgPSAke25hdGl2ZVRvSlNDb252ZXJzaW9ufTtcbiIpOwotICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTtcbiIpIGlmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xu
Iik7CiAgICAgICAgIAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsICR7YXR0cmlidXRlU3RyaW5nfSwgdmFsdWUpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0cnVlO1xu
Iik7CkBAIC0xMDYwLDcgKzEwMjksNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4CiAgICAgICAgIAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdXNpbmcg
R2V0dGVySURMVHlwZSA9ICR7SURMVHlwZX07XG4iKTsKICAgICAgICAgCi0gICAgICAgIEdlbmVy
YXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFtZWRHZXR0
ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5cGUiKTsK
KyAgICAgICAgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYSgkb3V0cHV0QXJyYXksICRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rp
b25OYW1lLCAiR2V0dGVySURMVHlwZSIpOwogICAgICAgICAKICAgICAgICAgbXkgJG92ZXJyaWRl
QnVpbHRpbiA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRl
cmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6WWVzIiA6ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHtcbiIpOwpAQCAtMTA3MCw3
ICsxMDM5LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgICAg
ICBteSAoJG5hdGl2ZVRvSlNDb252ZXJzaW9uLCAkYXR0cmlidXRlU3RyaW5nKSA9IEdlbmVyYXRl
TmFtZWRHZXR0ZXIoJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAiV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpIik7CiAKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBhdXRvIHZhbHVlID0gJHtuYXRpdmVUb0pTQ29udmVyc2lvbn07XG4iKTsKLSAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTtcbiIpIGlmICRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CiAg
ICAgICAgIAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJpbmd9LCB2YWx1ZSk7XG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwpAQCAtNTIyNSw5
ICs1MTk0LDggQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpbwogICAg
IG15ICRoYXNDdXN0b21HZXR0ZXIgPSBIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZSk7CiAgICAg
bXkgJGlzRXZlbnRIYW5kbGVyID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5k
bGVyIjsKICAgICBteSAkaXNDb25zdHJ1Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVj
dG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKLSAgICBteSAkbmF0aXZlVG9KU1ZhbHVlTWF5VGhy
b3cgPSBOYXRpdmVUb0pTVmFsdWVNYXlUaHJvdygkYXR0cmlidXRlKTsKIAotICAgIG15ICRuZWVk
VGhyb3dTY29wZSA9ICRuZWVkU2VjdXJpdHlDaGVjayB8fCAoISRoYXNDdXN0b21HZXR0ZXIgJiYg
ISRpc0V2ZW50SGFuZGxlciAmJiAhJGlzQ29uc3RydWN0b3IgJiYgJG5hdGl2ZVRvSlNWYWx1ZU1h
eVRocm93KTsKKyAgICBteSAkbmVlZFRocm93U2NvcGUgPSAkbmVlZFNlY3VyaXR5Q2hlY2sgfHwg
KCEkaGFzQ3VzdG9tR2V0dGVyICYmICEkaXNFdmVudEhhbmRsZXIgJiYgISRpc0NvbnN0cnVjdG9y
KTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgSlNWYWx1ZSAke2F0
dHJpYnV0ZUdldHRlckJvZHlOYW1lfSgiIC4gam9pbigiLCAiLCBAc2lnbmF0dXJlQXJndW1lbnRz
KSAuICIpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKQEAgLTU3OTAsNyAr
NTc1OCw2IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRpb24KICAgICAgICAgICAgIHB1
c2goQGFyZ3VtZW50cywgJHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBteSAkZnVuY3Rpb25T
dHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAi
KSI7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmIE5lZWRzRXhw
bGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRvcGVyYXRpb24pOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgiIC4gTmF0aXZlVG9KU1Zh
bHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcs
ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiKSAuICIpO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKQEAgLTYwODUsMTUgKzYwNTIsNiBAQCBzdWIgV2ls
bENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQYXJhbWV0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1
YiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbAotewotICAgIG15ICgkb3BlcmF0
aW9uKSA9IEBfOwotCi0gICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKLQotICAgIHJldHVybiAkb3BlcmF0aW9uLT50
eXBlICYmICgkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ1bmRlZmluZWQiIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpIHx8IEdldE9wZXJhdGlvblJl
dHVybmVkQXJndW1lbnROYW1lKCRvcGVyYXRpb24pKTsKLX0KLQogc3ViIEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFj
ZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkaW5kZW50KSA9IEBfOwpAQCAtNjIxNSwx
MCArNjE3Myw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgcHVzaChAYXJn
dW1lbnRzLCAiV1RGTW92ZShwcm9taXNlKSIpIGlmICRvcGVyYXRpb24tPnR5cGUgJiYgJGNvZGVH
ZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJG9wZXJhdGlvbi0+dHlwZSkgJiYgISRvcGVyYXRpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1Byb21pc2VQcm94eX07CiAKLSAgICBteSAkZnVuY3Rpb25T
dHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsK
LSAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJv
cGFnYXRlRXhjZXB0aW9uQ2FsbCgkb3BlcmF0aW9uKTsKLQotICAgIHJldHVybiAkZnVuY3Rpb25T
dHJpbmc7CisgICAgcmV0dXJuICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVu
dHMpIC4gIikiOwogfQogCiBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SGVhZGVyCkBAIC02NjY2LDE1
ICs2NjIxLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwKICAgICBt
eSAkaGFzV3JpdGVCYXJyaWVyc0ZvckFyZ3VtZW50cyA9IEdlbmVyYXRlV3JpdGVCYXJyaWVyc0Zv
ckFyZ3VtZW50cygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbmRlbnQsICRkcnlSdW4pOwog
ICAgIG15ICRyZXR1cm5Bcmd1bWVudE5hbWUgPSBHZXRPcGVyYXRpb25SZXR1cm5lZEFyZ3VtZW50
TmFtZSgkb3BlcmF0aW9uKTsKICAgICBpZiAoJHJldHVybkFyZ3VtZW50TmFtZSkgewotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAidGhyb3dTY29wZS5yZWxlYXNlKCk7XG4i
KSBpZiAoJGhhc1Rocm93U2NvcGUpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRl
bnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
JGluZGVudCAuICJpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuICRmdW5jdGlvblN0
cmluZzsgfSk7XG4iKTsKICAgICAgICAgR2VuZXJhdGVXcml0ZUJhcnJpZXJzRm9yQXJndW1lbnRz
KCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGluZGVudCk7CiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCRyZXR1cm5Bcmd1bWVu
dE5hbWUudmFsdWUoKSk7XG4iKTsKLSAgICB9IGVsc2lmICgkb3BlcmF0aW9uLT50eXBlLT5uYW1l
IGVxICJ1bmRlZmluZWQiIHx8ICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0
aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVBy
b3h5fSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInRocm93U2Nv
cGUucmVsZWFzZSgpO1xuIikgaWYgKCRoYXNUaHJvd1Njb3BlKTsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiIpOwotICAgICAgICBHZW5l
cmF0ZVdyaXRlQmFycmllcnNGb3JBcmd1bWVudHMoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAk
aW5kZW50KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJG9wZXJhdGlvbi0+aXNTdGF0aWMgPyAiKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpIiA6ICIqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwogICAgICAgICBpZiAoJGhhc1dyaXRlQmFycmllcnNGb3JB
cmd1bWVudHMpIHsKQEAgLTY2ODIsMTAgKzY2MzEsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbkZ1bmN0aW9uQ2FsbAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50
IC4gIlJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4i
KSBpZiAkaGFzVGhyb3dTY29wZTsKICAgICAgICAgICAgIEdlbmVyYXRlV3JpdGVCYXJyaWVyc0Zv
ckFyZ3VtZW50cygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbmRlbnQpOwogICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiByZXN1bHQ7XG4iKTsKLSAg
ICAgICAgfSBlbHNpZiAoJGhhc1Rocm93U2NvcGUpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgJGluZGVudCAuICJSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRp
bnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgLiAiKSk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
JGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2lu
Z1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJGdsb2Jh
bE9iamVjdFJlZmVyZW5jZSkgLiAiKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkaW5kZW50IC4gIlJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVy
ZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKSAuICIpKTtcbiIp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzE5NSw3ICs3MTQyLDcgQEAgc3ViIElzVmFsaWRD
b250ZXh0Rm9yTmF0aXZlVG9KU1ZhbHVlCiBzdWIgTmF0aXZlVG9KU1ZhbHVlTWF5VGhyb3cKIHsK
ICAgICBteSAoJGNvbnRleHQpID0gQF87Ci0gICAgbXkgJG1heVRocm93RXhjZXB0aW9uID0gcmVm
KCRjb250ZXh0KSBlcSAiSURMQXR0cmlidXRlIiB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgIG15ICRtYXlUaHJvd0V4Y2VwdGlvbiA9IHJl
ZigkY29udGV4dCkgZXEgIklETEF0dHJpYnV0ZSIgfHwgcmVmKCRjb250ZXh0KSBlcSAiSURMT3Bl
cmF0aW9uIjsKIH0KIAogc3ViIE5hdGl2ZVRvSlNWYWx1ZQpAQCAtNzIyNSwxMiArNzE3MiwxOSBA
QCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAKICAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGlu
dGVyZmFjZSwgJHR5cGUpOwogCisgICAgIyBGSVhNRTogTm90IGFsbCBwcm9taXNlIHR5cGVzIHJl
cXVpcmUgdGhlIGZ1bmN0b3Igd3JhcHBpbmcgKHNvbWUgYXR0cmlidXRlIGdldHRlcnMgYWN0dWFs
bHkgcmV0dXJuIGEgdmFsdWUpCisgICAgIyBidXQgd3JhcHBpbmcgaXMgYSBuby1vcCwgc28gZml4
aW5nIHRoaXMgd291bGQgcHVyZWx5IGJlIGEgc3R5bGlzdGljIC8gY29tcGlsZSB0aW1lIGZpeC4K
KyAgICBteSAkbmVlZHNGdW5jdG9yV3JhcHBpbmcgPSAkdHlwZS0+bmFtZSBlcSAidW5kZWZpbmVk
IiB8fCAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSk7CisKICAgICBteSBAY29u
dmVyc2lvbkFyZ3VtZW50cyA9ICgpOwogICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICRs
ZXhpY2FsR2xvYmFsT2JqZWN0UmVmZXJlbmNlKSBpZiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0
TmVlZHNTdGF0ZSgkdHlwZSkgfHwgJG1heVRocm93RXhjZXB0aW9uOwogICAgIHB1c2goQGNvbnZl
cnNpb25Bcmd1bWVudHMsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpIGlmIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc0dsb2JhbE9iamVjdCgkdHlwZSk7CiAgICAgcHVzaChAY29udmVyc2lv
bkFyZ3VtZW50cywgInRocm93U2NvcGUiKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247Ci0gICAgcHVz
aChAY29udmVyc2lvbkFyZ3VtZW50cywgJHZhbHVlKTsKLQorICAgIGlmICgkbmVlZHNGdW5jdG9y
V3JhcHBpbmcpIHsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIlsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuICR2YWx1ZTsgfSIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICIkdmFsdWUiKTsKKyAgICB9CiAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdPYmplY3R9
ID8gInRvSlNOZXdseUNyZWF0ZWQiIDogInRvSlMiOwogCiAgICAgcmV0dXJuICIke2Z1bmN0aW9u
TmFtZX08JHtJRExUeXBlfT4oIiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4g
IikiOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsOSAr
MzgwLDYgQEAKICAgICAgICAgIk1hc3F1ZXJhZGVzQXNVbmRlZmluZWQiOiB7CiAgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAi
TWF5VGhyb3dFeGNlcHRpb24iOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJh
dHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKICAgICAgICAgIk5ld0ltcHVyZVBy
b3BlcnR5RmlyZXNXYXRjaHBvaW50cyI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlz
aW9uIDI3NDcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSw2ICsyMDksOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHJlbW92ZUF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKTsKKyAgICAvLyBCaW5kaW5n
cyB2YXJpYW50cyBvZiB0aGUgYWJvdmUgdHdvIGZ1bmN0aW9ucyB0aGF0IGhhdmUgdGhlIGNvcnJl
Y3QgcmV0dXJuIHR5cGUuCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlQXR0cmlidXRlRm9yQmluZGlu
Z3MoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgeyByZW1vdmVBdHRyaWJ1dGUocXVh
bGlmaWVkTmFtZSk7IH0KKyAgICBpbmxpbmUgdm9pZCByZW1vdmVBdHRyaWJ1dGVOU0ZvckJpbmRp
bmdzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9j
YWxOYW1lKSB7IHJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsgfQog
CiAgICAgUmVmPEF0dHI+IGRldGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423898</attachid>
            <date>2021-03-22 09:24:40 -0700</date>
            <delta_ts>2021-03-22 16:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20210322092438.patch</filename>
            <type>text/plain</type>
            <size>667447</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzNiBAQAorMjAyMS0wMy0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIHRoZSBu
ZWVkIHRvIHNwZWNpZnkgW01heVRocm93RXhjZXB0aW9uXQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0aGUgbmVlZCB0byBzcGVjaWZ5IFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYnkgZGVkdWNpbmcgaXQgZnJvbSB0aGUgYm91bmQgCisgICAgICAg
IHNpZ25hdHVyZSdzIHJldHVybiB2YWx1ZS4gQW55IGZ1bmN0aW9uIHJldHVybmluZyBhbiBFeGNl
cHRpb25PciBpcyBvbmUgdGhhdCB0aHJvd3MuCisKKyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhp
cyB3YXMgYWxyZWFkeSBoYW5kbGVkIGJ5IHRvSlM8PiguLi4sIGltcGwuZnVuYygpKSwgd2hpY2gg
aGFkCisgICAgICAgIG92ZXJsb2FkcyBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgdmFsdWUgd2FzIGFu
IEV4Y2VwdGlvbk9yLiBUaGUgY2FzZXMgdGhpcyBkaWRuJ3QKKyAgICAgICAgd29yayBmb3Igd2Vy
ZSBmdW50aW9ucyB0aGF0IHJldHVybmVkIHZvaWQsIGFzIHRvSlM8PiguLi4sIGltcGwuZnVuYygp
KSB3b3VsZCBub3QKKyAgICAgICAgY29tcGlsZS4gVG8gd29yayBhcm91bmQgdGhpcywgdG9KUzw+
KCkgY2FuIG5vdyB0YWtlIGEgbGFtYmRhIGFzIGl0J3MgdmFsdWUsIGFuZAorICAgICAgICBjYW4g
ZGV0ZXJtaW5lIHZpYSB0aGUgbGFtYmRhJ3MgcmV0dXJuIHR5cGUgaWYgaXQgbmVlZHMgdG8gdGhy
b3cuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgYW4gSURMIG9wZXJhdGlvbiBsaWtlOgorCisgICAg
ICAgICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBmdW5jKCk7CisKKyAgICAgICAg
dXNlZCB0byBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJvZHkgdGhhdCBsb29rZWQgbGlrZSB0aGUgZm9s
bG93aW5nIDoKKworICAgICAgICAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZ1bmMo
KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyAg
ICAgICAgCisgICAgICAgIAorICAgICAgICB3aWxsIG5vdyBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJv
ZHkgdGhhdCBsb29rcyBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmZ1bmMoKTsgfSkpKTsKKworICAgICAgICB3aGljaCBjbG9zZWx5IG1pcnJvcnMgYSBub24t
dW5kZWZpbmVkIHJldHVybiBvcGVyYXRpb24uIFRoaXMgd3JhcHBlZCBsYW1iZGEgZm9ybQorICAg
ICAgICBpcyBvbmx5IHVzZWQgZm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHVuZGVmaW5lZCBvciBw
cm9taXNlcywgYXMgdGhvc2UgYXJlIHRoZSBvbmx5CisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGNh
biByZXR1cm4gdm9pZCwgYnV0IGl0IHdvdWxkIGJlIGNvcnJlY3QgdG8gdXNlIHRoZW0gZm9yIGFs
bCB0eXBlcywKKyAgICAgICAgaWYgbm90IGEgYml0IG1vcmUgbm9pc3kgYW5kIHBlcmhhcHMgYSB0
aW55IGNvbXBpbGUgdGltZSBjb3N0LgorCisgICAgICAgIE5PVEU6IFRoZSB1c2Ugb2YgYC0+IGRl
Y2x0eXBlKGF1dG8pYCBleHBsaWNpdCByZXR1cm4gdHlwZSBvbiB0aGUgbGFtYmRhIGlzIHJlcXVp
cmVkCisgICAgICAgIHRvIHBlcmZlY3RseSBmb3J3YXJkIHJlZmVyZW5jZSB0eXBlcywgc3VjaCBh
cyB0aG9zZSB1c2VkIGJ5IG93bmVkIHByb21pc2VzLiBPdGhlcndpc2UsCisgICAgICAgIGEgY29w
eSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHN1cHBv
cnRpbmcgYWxsIG9wZXJhdGlvbnMsIHRoaXMgYWxzbyByZW1vdmVzIHRoZSByZXF1aXJlbWVudCB0
byBhbm5vdGF0ZQorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBnZXR0ZXJzL3NldHRlcnMuIFRo
aXMgbW9zdGx5IGp1c3QgbWVhbnMgYWx3YXlzIGRlZmluaW5nIGEgdGhyb3cgc2NvcGUsCisgICAg
ICAgIGJ1dCBmb3IgbmFtZWQgZ2V0dGVycyBpdCBhbHNvIG1lYW50IGFkZGluZyBhIG5ldyBoZWxw
ZXIsIGB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3JgCisgICAgICAgIHdo
aWNoIGNvbnN0cnVjdG9ycyB0aGUgaXRlbSBhY2Nlc3NvciBmdW5jdG9yIGZvciB0aGUgYGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5YCAKKyAgICAgICAgYWxnb3JpdGhtIHJhdGhlciB0aGFuIGhh
cmQgY29kaW5nIGl0IGluIHRoZSBnZW5lcmF0b3IuCisKKyAgICAgICAgRHVlIHRvIGluY3JlYXNl
ZCB1c2Ugb2YgdG9KUywgdGhlIGNvZGUgZ2VuZXJhdG9yIGlzIG5vdyBjaGVja2luZyBtb3JlIHJl
dHVybiB0eXBlcworICAgICAgICAodmlhIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSkgc28g
dGhlIGNvZGUgZ2VuZXJhdG9yIHdhcyBhYmxlIHRvIGZpbmQgYSBmZXcgaW52YWxpZAorICAgICAg
ICByZXR1cm4gdHlwZXMgKGUuZy4gdXNlIG9mIFByb21pc2U8Ym9vbD4gcmF0aGVyIHRoYW4gUHJv
bWlzZTxib29sZWFuPiwgZXRjLikgYW5kIHRoZXNlCisgICAgICAgIGhhdmUgYmVlbiBmaXhlZCBh
bmQgd2lsbCBiZSBhbiBlcnJvciBnb2luZyBmb3J3YXJkLiBXb3VsZCBiZSBhIG5pY2UgaW1wcm92
ZW1lbnQgdG8KKyAgICAgICAgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGRvIHR5cGUgY2hlY2tpbmcg
dXAgZnJvbnQsIHJhdGhlciB0aGFuIGFzIGEgc2lkZSBlZmZlY3Qgb2YKKyAgICAgICAgY29kZSBn
ZW5lcmF0aW9uLCBidXQgd2Ugd2lsbCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyIGRheS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IpOgorICAgICAg
ICBBZGRlZC4gTW92ZXMgdGhlIGdldHRlckZ1bmN0b3IgbGFtYmRhIGNyZWF0aW9uIGZyb20gdGhl
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEKKyAgICAgICAgc3Vicm91dGluZSBpbiBDb2RlR2Vu
ZXJhdG9ySlMucG0sIGJ1dCB1c2VzIGRlZHVjdGlvbiBhbmQgY29uc3RleHByIHRvIGRldGVybWlu
ZQorICAgICAgICBpZiB0aGUgZ2V0dGVyIHRocm93cy4KKworICAgICAgICAoV2ViQ29yZTo6YWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICBSZW5hbWUgRnVuY3RvciB0byBJdGVt
QWNjZXNzb3IgdG8gbWFrZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQgdGhlIHR5cGUgZG9lcy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAg
ICAgIFJlcGxhY2UgU0ZJTkFFLWJhc2VkIG92ZXJsb2FkaW5nIG9mIHRvSlMvdG9KU05ld2x5Q3Jl
YXRlZCB3aXRoIGNvbnN0ZXhwciBiYXNlZAorICAgICAgICBjb25kaXRpb25hbHMgYW5kIGFkZCB0
aGUgYWJpbGl0eSB0byBwYXNzIGluIGEgZnVuY3RvciByYXRoZXIgdGhhbiB2YWx1ZS4gSWYgYQor
ICAgICAgICBmdW5jdG9yIGlzIHVzZWQsIGFkZGl0aW9uYWwgY29kZSBwYXRocyBmb3Igdm9pZCBh
bmQgRXhwZWN0aW9uT3I8dm9pZD4gYXJlIGFkZGVkCisgICAgICAgIHdoaWNoIGV4cGxpY2l0bHkg
cmV0dXJuIGpzVW5kZWZpbmVkKCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnREYXRlLmNwcDoKKyAgICAgICAgUmVtb3ZlIGluY29ycmVjdCBjb21tZW50IGFib3V0IEV4ZWNT
dGF0ZXMgdGhhdCBoYXNuJ3QgYXBwbGllZCBmb3IgYSB3aGlsZS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oOgorICAgICAgICBGaXggY29tbWVudCwgcmVw
bGFjaW5nIEV4ZWNTdGF0ZSB3aXRoIEpTR2xvYmFsT2JqZWN0LiBUaGlzIGhhcyBiZWVuIHdyb25n
IGZvcgorICAgICAgICBhIHdoaWxlLCBhbmQgdGhpcyBpcyBqdXN0IGEgZHJpdmUgYnkgZml4Lgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICBVc2UgYW4gZXhwbGljaXQgZWxzZSBhcyBwYXJ0IG9mIHRoZSBjb25zdGV4cHIg
ZXhwcmVzc2lvbiB0byBlbnN1cmUgdGhlIGZ1bmN0b3IKKyAgICAgICAgaXMgbm90IGNhbGxlZCwg
ZXZlbiBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEZWZlcnJlZFByb21pc2Up
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6
CisgICAgICAgIFJlbW92ZSB1bnVzZWQgY3JlYXRlRGVmZXJyZWRQcm9taXNlIGZ1bmN0aW9uLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChBZGRNYXBMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEFk
ZFNldExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZWVkZWQpOgorICAgICAgICBGaXggcmV0
dXJuIHR5cGUgb2YgbWFwcGVkIGNsZWFyIG9wZXJhdGlvbiB0byBiZSBgYW55YCByYXRoZXIgdGhh
biBgdW5kZWZpbmVkYAorICAgICAgICB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNo
IHJldHVybnMgYSBKU1ZhbHVlIChlLmcuIGBhbnlgKS4gVGhpcyBpcyBub3cKKyAgICAgICAgcmVx
dWlyZWQgYXMgd2UgYWN0dWFsbHkgbG9vayBhdCB0aGUgcmV0dXJuIHR5cGUgdmlhIGRlZHVjdGlv
biBhbmQgbmVlZCBpdCBtYXRjaC4KKyAKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1i
ZGEpOgorICAgICAgICBSZXBsYWNlIG1vc3Qgb2YgdGhlIGltcGxlbWVudGF0aW9uIHdpdGggYSBj
YWxsIHRvIHRoZSBuZXcgYHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcmAK
KyAgICAgICAgaGVscGVyIHdoaWNoIHJldHVybnMgYSBsYW1iZGEgd2l0aCB0aGUgY29ycmVjdCBi
ZWhhdmlvciBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB0eXBlIG9mIHRoZSBpbm5lcgorICAgICAg
ICBsYW1iZGEgcGFzc2VkLgorIAorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAg
KEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpb24pOgorICAgICAgICBNYXRjaCBt
b3N0IG90aGVyIHBhcnRzIG9mIHRoZSBnZW5lcmF0b3IgYW5kIGFsd2F5cyBjcmVhdGUgYSB0aHJv
dyBzY29wZS4KKworICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAg
ICAgUmVtb3ZlIGV4cGxpY2l0IGNhbGwgdG8gcHJvcGFnYXRlRXhjZXB0aW9uIG5vdyB0aGF0IHRv
SlMoKSB3aWxsIGhhbmRsZSB0aGF0IGZvciB1cy4KKworICAgICAgICAoR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2spOgorICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2FsbCB0byBwcm9wYWdhdGVFeGNl
cHRpb24gbm93IHRoYXQgdG9KUygpIHdpbGwgaGFuZGxlIHRoYXQgZm9yIHVzLgorCisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAgICAgICAgU2ltcGxpZnkg
YnkgdXNpbmcgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkgaGVs
cGVyIGZvciB0aGUgInJldHVybkFyZ3VtZW50TmFtZSIKKyAgICAgICAgY2FzZSBhbmQgcmVseWlu
ZyBvbiB0b0pTIGhhbmRsaW5nIHRoZSBvdGhlciBjYXNlcy4KKworICAgICAgICAoTmF0aXZlVG9K
U1ZhbHVlTWF5VGhyb3cpOgorICAgICAgICBBZGQgb3BlcmF0aW9uIHRvIHRoZSBsaXN0IG9mIHRo
aW5ncyB0aGF0IG1pZ2h0IGFsd2F5cyB0aHJvdy4KKworICAgICAgICAoTmF0aXZlVG9KU1ZhbHVl
KToKKyAgICAgICAgVXNlIHRoZSBsYW1iZGEgd3JhcHBlZCB2ZXJzaW9uIG9mIHRvSlMgZm9yIHVu
ZGVmaW5lZCBhbmQgcHJvbWlzZSB0eXBlcywgd2hpY2ggbWlnaHQgYm90aAorICAgICAgICByZXR1
cm4gdm9pZCBhbmQgdGh1cyByZXF1aXJlIGl0LiBUbyBrZWVwIG1vc3QgY29kZSB1bmNoYW5nZWQs
IGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSBjb21waWxlcgorICAgICAgICB3b3JrLCB3ZSBvbmx5IHVz
ZSB0aGUgd3JhcHBlZCB2ZXJzaW9uIHdoZW4gaXQgbWlnaHQgYmUgbmVjZXNzYXJ5LiBJZiBpdCB0
dXJucyBvdXQgdG8gYmUKKyAgICAgICAgY2hlZXAgZW5vdWdoLCBpdCBtaWdodCBtYWtlIHNlbnNl
IHRvIGFsd2F5cyB1c2UgdGhpcyBmb3JtIGZvciBzaW1wbGljaXR5LgorCisgICAgICAgIChOZWVk
c0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgUmVtb3ZlIE1heVRo
cm93RXhjZXB0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVG
b3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVO
U0ZvckJpbmRpbmdzKToKKyAgICAgICAgQWRkIGJpbmRpbmdzIHNwZWNpZmljIHZlcnNpb25zIG9m
IGByZW1vdmVBdHRyaWJ1dGVgIGFuZCBgcmVtb3ZlQXR0cmlidXRlTlNgIHdoaWNoCisgICAgICAg
IGhhdmUgYSB2b2lkIHJldHVybiB0eXBlIChyYXRoZXIgdGhhbiB0aGUgYm9vbCB1c2VkIGJ5IHRo
ZSBtYWluIGltcGxlbWVudGF0aW9uKQorICAgICAgICBhcyBpdCBpcyBub3cgYSByZXF1aXJlbWVu
dCB0aGF0IHRoYXQgdGhlIGJvdW5kIGZ1bmN0aW9ucyBzaWduYXR1cmUgbWF0Y2ggdGhlIElETC4K
KworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaWRsOgorICAgICAgICBVc2UgdGhl
IGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlcXVlc3RgLCBub3QgYFJlcXVlc3RgLgor
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaWRsOgorICAgICAgICBV
c2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBET01DYWNoZWAsIG5vdCBgQ2FjaGVgLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQrU3RvcmFnZUFjY2Vzcy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IrSXNMb2dnZWRJbi5pZGw6CisgICAgICAgIFVzZSB0aGUgY29ycmVjdCBJREwgdHlwZSwgYGJv
b2xlYW5gLCBub3QgYGJvb2xgLgorCisgICAgICAgICogZG9tL0Fib3J0U2lnbmFsLmlkbDoKKyAg
ICAgICAgVXBkYXRlIHdoZW5TaWduYWxBYm9ydGVkIHRvIG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYGJvb2xlYW5gLAorICAgICAgICBub3QgYHVuZGVm
aW5lZGAuCisKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgor
ICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlc3BvbnNlYCwg
bm90IGBSZXNwb25zZWAuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWVzLCBg
U2VydmljZVdvcmtlckNsaWVudGAsIG5vdCBgQ2xpZW50YCwgYW5kIGBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50YCwgbm90IGBXaW5kb3dDbGllbnRgLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJl
Y3QgaW50ZXJmYWNlIG5hbWVzLCBgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudGAsIG5vdCBgV2lu
ZG93Q2xpZW50YC4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29uLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvdytDYWNoZXMuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGw6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGw6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNm
b3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIr
VHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25F
dmVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVz
dFVwZGF0ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5p
ZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vSUlSRmlsdGVyTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0Um93TGlzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5p
ZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2Vi
R0xMYXllci5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAg
ICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsOgorICAgICAgICAqIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5pZGw6
CisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmlkbDoKKyAg
ICAgICAgKiBjc3MvRE9NQ1NTTmFtZXNwYWNlK0NTU1Byb3BlcnRpZXNhbmRWYWx1ZXMuaWRsOgor
ICAgICAgICAqIGNzcy9ET01NYXRyaXguaWRsOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFk
T25seS5pZGw6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmlk
bDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxp
c3QuaWRsOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmlkbDoKKyAgICAgICAgKiBkb20v
Q2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbDoK
KyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsOgorICAgICAgICAqIGRvbS9ET01Q
b2ludFJlYWRPbmx5LmlkbDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudCtIVE1MLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsOgorICAgICAgICAq
IGRvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAgICAgICAgKiBkb20vTXV0
YXRpb25PYnNlcnZlci5pZGw6CisgICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5pZGw6CisgICAg
ICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaWRsOgorICAg
ICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vUmFuZ2UrRE9NUGFyc2lu
Zy5pZGw6CisgICAgICAgICogZG9tL1JhbmdlLmlkbDoKKyAgICAgICAgKiBkb20vVGV4dC5pZGw6
CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVGV4dERlY29k
ZXJTdHJlYW1EZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6CisgICAg
ICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaWRs
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsOgorICAgICAgICAqIGh0bWwv
RE9NVG9rZW5MaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxFbWJlZEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
OgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmlkbDoKKyAgICAgICAgKiBodG1sL1RpbWVSYW5nZXMuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0
YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhdGgyRC5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdERPTU9iamVjdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVz
b3VyY2VzT2JqZWN0LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGw6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOgorICAgICAgICAqIHBhZ2Uv
RE9NU2VsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogcGFnZS9IaXN0b3J5LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOgorICAgICAgICAqIHBhZ2UvUGVy
Zm9ybWFuY2UrVXNlclRpbWluZy5pZGw6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9ic2Vy
dmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1VuZG9NYW5hZ2VyLmlkbDoKKyAgICAgICAgKiBwYWdl
L1VzZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dPcldvcmtlckds
b2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5pZGw6
CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NW
R0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0LmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdQb2ludExp
c3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmlk
bDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5pZGw6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGw6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB4bWwvRE9NUGFyc2VyLmlkbDoKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV2YWx1YXRv
ckJhc2UuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24uaWRsOgorICAgICAgICAq
IHhtbC9YUGF0aFJlc3VsdC5pZGw6CisgICAgICAgIFJlbW92ZSB1c2Ugb2YgW01heVRocm93RXhj
ZXB0aW9uXS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8qOgorICAgICAg
ICBSZW1vdmUgdXNlcyBvZiBbTWF5VGhyb3dFeGNlcHRpb25dIGluIHRoZSB0ZXN0cyBhbmQgdXBk
YXRlIGFsbCB0aGUgdGVzdCByZXN1bHRzLgorCiAyMDIxLTAzLTE5ICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW5rIGFnYWluc3QgdGhlIEFOR0xFIFNoYXJlZCBM
aWJyYXJ5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNlc3Npb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDIzICs0MSwyMyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRVU19QSU5fSU5DT1JS
RUNUID0gNjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFUVVNfUElOX0xPQ0tPVVQgPSA3
OwogCi0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIGJv
b2xlYW4gc3VwcG9ydHNWZXJzaW9uKHVuc2lnbmVkIGxvbmcgdmVyc2lvbik7Ci0gICAgW0NhbGxX
aXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBh
eW1lbnRzKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3Rh
dGljIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3Ry
aW5nIG1lcmNoYW50SWRlbnRpZmllcik7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gb3BlblBheW1lbnRTZXR1cChET01T
dHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRp
YyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZlcnNpb24pOworICAgIFtD
YWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7CisgICAg
W0NhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFuPiBjYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyKTsKKyAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9wZW5QYXltZW50U2V0dXAo
RE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7CiAKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQs
IE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVnaW4oKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oYW55
IG1lcmNoYW50U2Vzc2lvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29t
cGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRl
IHVwZGF0ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUgdXBkYXRl
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHVu
ZGVmaW5lZCBiZWdpbigpOworICAgIHVuZGVmaW5lZCBhYm9ydCgpOworICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3RdIHVuZGVmaW5lZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhbnkgbWVy
Y2hhbnRTZXNzaW9uKTsKKyAgICB1bmRlZmluZWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7CisgICAgdW5kZWZpbmVk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEFwcGxlUGF5U2hpcHBpbmdDb250YWN0
VXBkYXRlIHVwZGF0ZSk7CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsKKyAgICB1bmRlZmluZWQg
Y29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0
KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBsZVBheUxpbmVJdGVtIG5l
d1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgc2VxdWVuY2U8QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZD4gbmV3U2hpcHBpbmdNZXRob2RzLCBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5j
ZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheUxpbmVJ
dGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudCh1bnNpZ25l
ZCBzaG9ydCBzdGF0dXMpOworICAgIHVuZGVmaW5lZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbCwg
c2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsKKyAgICB1bmRlZmluZWQg
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBz
ZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIEFwcGxl
UGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJ
dGVtcyk7CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihBcHBs
ZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5l
SXRlbXMpOworICAgIHVuZGVmaW5lZCBjb21wbGV0ZVBheW1lbnQodW5zaWduZWQgc2hvcnQgc3Rh
dHVzKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb252YWxpZGF0ZW1lcmNoYW50Owog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25wYXltZW50bWV0aG9kc2VsZWN0ZWQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3IrQmVhY29u
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24v
TmF2aWdhdG9yK0JlYWNvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAgdHlw
ZWRlZiAoQmxvYiBvciBCdWZmZXJTb3VyY2Ugb3IgRE9NRm9ybQogICAgIEVuYWJsZWRCeVNldHRp
bmc9QmVhY29uQVBJLAogICAgIEltcGxlbWVudGVkQnk9TmF2aWdhdG9yQmVhY29uCiBdIHBhcnRp
YWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIEJv
ZHlJbml0PyBkYXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBib29sZWFuIHNl
bmRCZWFjb24oVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/IGRhdGEgPSBudWxsKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDUgKzM4LDUgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0
IG9yIFVTVlN0cmluZykgUmVxdQogICAgIFtOZXdPYmplY3RdIFByb21pc2U8dW5kZWZpbmVkPiBh
ZGRBbGwoc2VxdWVuY2U8UmVxdWVzdEluZm8+IHJlcXVlc3RzKTsKICAgICBbTmV3T2JqZWN0XSBQ
cm9taXNlPHVuZGVmaW5lZD4gcHV0KFJlcXVlc3RJbmZvIHJlcXVlc3QsIEZldGNoUmVzcG9uc2Ug
cmVzcG9uc2UpOwogICAgIFtOZXdPYmplY3QsIEltcGxlbWVudGVkQXM9cmVtb3ZlXSBQcm9taXNl
PGJvb2xlYW4+IGRlbGV0ZShSZXF1ZXN0SW5mbyByZXF1ZXN0LCBvcHRpb25hbCBDYWNoZVF1ZXJ5
T3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTmV3T2JqZWN0XSBQcm9taXNlPHNlcXVlbmNlPFJlcXVl
c3Q+PiBrZXlzKG9wdGlvbmFsIFJlcXVlc3RJbmZvIHJlcXVlc3QsIG9wdGlvbmFsIENhY2hlUXVl
cnlPcHRpb25zIG9wdGlvbnMpOworICAgIFtOZXdPYmplY3RdIFByb21pc2U8c2VxdWVuY2U8RmV0
Y2hSZXF1ZXN0Pj4ga2V5cyhvcHRpb25hbCBSZXF1ZXN0SW5mbyByZXF1ZXN0LCBvcHRpb25hbCBD
YWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIFVTVlN0
cmluZykgUmVxdQogXSBpbnRlcmZhY2UgRE9NQ2FjaGVTdG9yYWdlIHsKICAgICBbTmV3T2JqZWN0
XSBQcm9taXNlPGFueT4gbWF0Y2goUmVxdWVzdEluZm8gcmVxdWVzdCwgb3B0aW9uYWwgQ2FjaGVR
dWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxib29sZWFuPiBo
YXMoRE9NU3RyaW5nIGNhY2hlTmFtZSk7Ci0gICAgW05ld09iamVjdF0gUHJvbWlzZTxDYWNoZT4g
b3BlbihET01TdHJpbmcgY2FjaGVOYW1lKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9taXNlPERPTUNh
Y2hlPiBvcGVuKERPTVN0cmluZyBjYWNoZU5hbWUpOwogICAgIFtOZXdPYmplY3QsIEltcGxlbWVu
dGVkQXM9cmVtb3ZlXSBQcm9taXNlPGJvb2xlYW4+IGRlbGV0ZShET01TdHJpbmcgY2FjaGVOYW1l
KTsKICAgICBbTmV3T2JqZWN0XSBQcm9taXNlPHNlcXVlbmNlPERPTVN0cmluZz4+IGtleXMoKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvdytDYWNoZXMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93
K0NhY2hlcy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NV2luZG93K0NhY2hlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDUgKzI5LDUg
QEAKICAgICBFbmFibGVkQXRSdW50aW1lPUNhY2hlQVBJLAogICAgIEltcGxlbWVudGVkQnk9RE9N
V2luZG93Q2FjaGVzCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBTZWN1cmVDb250
ZXh0LCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NQ2FjaGVTdG9yYWdlIGNhY2hl
czsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgU2VjdXJlQ29udGV4dCwg
U2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTUNhY2hlU3RvcmFnZSBjYWNoZXM7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmtl
eXN0YXR1c2VzY2hhbmdlOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwog
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBnZW5lcmF0ZVJlcXVlc3QoRE9NU3RyaW5nIGluaXREYXRh
VHlwZSwgQnVmZmVyU291cmNlIGluaXREYXRhKTsKLSAgICBQcm9taXNlPGJvb2w+IGxvYWQoRE9N
U3RyaW5nIHNlc3Npb25JZCk7CisgICAgUHJvbWlzZTxib29sZWFuPiBsb2FkKERPTVN0cmluZyBz
ZXNzaW9uSWQpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiB1cGRhdGUoQnVmZmVyU291cmNlIHJl
c3BvbnNlKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gY2xvc2UoKTsKICAgICBQcm9taXNlPHVu
ZGVmaW5lZD4gcmVtb3ZlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDYgQEAKICAgICBEaXNhYmxlZEJ5UXVpcms9aGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBN
ZWRpYUtleXMgewotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIE1l
ZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUg
c2Vzc2lvblR5cGUgPSAidGVtcG9yYXJ5Iik7Ci0gICAgUHJvbWlzZTxib29sPiBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShCdWZmZXJTb3VyY2Ugc2VydmVyQ2VydGlmaWNhdGUpOworICAgIFtDYWxsV2l0
aD1Eb2N1bWVudF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBQcm9taXNlPGJv
b2xlYW4+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0aWZpY2F0
ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRs
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB1cGRhdGUoVWludDhBcnJheSBrZXkpOworICAgIHVu
ZGVmaW5lZCB1cGRhdGUoVWludDhBcnJheSBrZXkpOwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwog
ICAgIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRrZXlhZGRlZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRlcmZhY2UgV2ViS2l0
TWVkaWFLZXlzIHsKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcga2V5U3lzdGVtKTsKIAotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJy
YXkgaW5pdERhdGEpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBXZWJL
aXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJh
eSBpbml0RGF0YSk7CiAgICAgc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkKERPTVN0cmlu
ZyBrZXlTeXN0ZW0sIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDExICszNSwxMSBAQCB0eXBlZGVmIChzZXF1ZW5jZTxzZXF1ZW5jZTxCeXRlU3RyaW5n
Pj4gCiBdIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIGNvbnN0cnVjdG9yKG9wdGlvbmFs
IEhlYWRlcnNJbml0IGluaXQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
YXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdW5kZWZpbmVkIGRlbGV0ZShCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQnl0ZVN0cmluZz8gZ2V0KEJ5dGVT
dHJpbmcgbmFtZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGhhcyhCeXRlU3Ry
aW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldChCeXRlU3Ry
aW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFsdWUpOworICAgIHVuZGVmaW5lZCBhcHBlbmQoQnl0ZVN0
cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVd
IHVuZGVmaW5lZCBkZWxldGUoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICBCeXRlU3RyaW5nPyBnZXQo
Qnl0ZVN0cmluZyBuYW1lKTsKKyAgICBib29sZWFuIGhhcyhCeXRlU3RyaW5nIG5hbWUpOworICAg
IHVuZGVmaW5lZCBzZXQoQnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKIAogICAg
IGl0ZXJhYmxlPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgVVNWU3Ry
aW5nKSBSZXF1CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNIaXN0b3J5TmF2
aWdhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWJvcnRTaWduYWwgc2lnbmFsOwogCi0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBO
ZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9uZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBOZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9uZSgpOwogfTsKIAogRmV0
Y2hSZXF1ZXN0IGluY2x1ZGVzIEZldGNoQm9keTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsNyBAQCBkaWN0aW9uYXJ5IEZldGNoUmVzcG9uc2VJbml0IHsKICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgQm9k
eUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNlSW5pdCBpbml0KTsKIAog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIHN0YXRpYyBG
ZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIHJl
ZGlyZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IDMw
Mik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gc3Rh
dGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRjaFJl
c3BvbnNlVHlwZSB0eXBlOwogCkBAIC01Nyw3ICs1Nyw3IEBAIGRpY3Rpb25hcnkgRmV0Y2hSZXNw
b25zZUluaXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nIHN0YXR1c1RleHQ7
CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRjaEhlYWRlcnMgaGVhZGVy
czsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2Vw
dGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOwog
fTsKIAogRmV0Y2hSZXNwb25zZSBpbmNsdWRlcyBGZXRjaEJvZHk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
J3JlcXVlc3QnCiAgICAgLy8gW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJSZXF1
ZXN0IHJlcXVlc3Q7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZHZhbmNl
KFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtDYWxsV2l0aD1HbG9i
YWxPYmplY3QsIEltcGxlbWVudGVkQXM9Y29udGludWVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBjb250aW51ZShvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbnRpbnVlUHJpbWFy
eUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CisgICAgdW5kZWZpbmVkIGFkdmFuY2UoW0Vu
Zm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9i
amVjdCwgSW1wbGVtZW50ZWRBcz1jb250aW51ZUZ1bmN0aW9uXSB1bmRlZmluZWQgY29udGludWUo
b3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVk
IGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CiAKLSAgICBbTmV3
T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1
ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRpb25dIElE
QlJlcXVlc3QgZGVsZXRlKCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBk
ZWxldGUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEx
ICszNSwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0
b3JlTmFtZXM7CiAKICAgICAvLyBGSVhNRTogJ3RyYW5zYWN0aW9uJyBzaG91bGQgYWxzbyB0YWtl
IGFuIG9wdGlvbmFsICdJREJUcmFuc2FjdGlvbk9wdGlvbnMnIGFyZ3VtZW50LgotICAgIFtOZXdP
YmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigoRE9N
U3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMsIG9wdGlvbmFsIElEQlRy
YW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgW05ld09iamVjdF0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+KSBz
dG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIp
OwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNl
cHRpb25dIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBv
cHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5hbWUp
OworICAgIFtOZXdPYmplY3RdIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0
cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycyk7
CisgICAgdW5kZWZpbmVkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKIAogICAg
IC8vIEV2ZW50IGhhbmRsZXJzOgogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsK
QEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgIC8vIE5vbi1zdGFuZGFyZDogVGhpcyBpcyBub3QgcGFy
dCBvZiB0aGUgc3BlYywgYnV0IGlzIG5lZWRlZCBmb3IgY29tcGF0aWJpbGl0eS4KICAgICAvLyBT
ZWUgaHR0cHM6Ly9naXRodWIuY29tL3czYy9JbmRleGVkREIvaXNzdWVzLzg1Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0IHN0
b3JlTmFtZXMsIG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7
CisgICAgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVz
LCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFkb25seSIpOwogfTsKIAog
ZGljdGlvbmFyeSBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlv
biwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7
Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhy
b3dFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJpbmcgbmFtZSwgb3B0aW9u
YWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pOwotICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9u
XSBJREJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKERPTVN0cmluZyBuYW1lKTsKKyAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1
ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ZXJzaW9uKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKERPTVN0cmluZyBu
YW1lKTsKICAgICAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlz
ZTxzZXF1ZW5jZTxJREJEYXRhYmFzZUluZm8+PiBkYXRhYmFzZXMoKTsKICAgICAKLSAgICBbQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc2hvcnQgY21wKGFueSBmaXJz
dCwgYW55IHNlY29uZCk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gc2hvcnQgY21wKGFu
eSBmaXJzdCwgYW55IHNlY29uZCk7CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE5ICs0MSwxOSBAQCB0eXBlZGVmIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3Ry
aW5nCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlFbnRyeTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0
aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChJREJLZXlS
YW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtl
eShJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtleShhbnkga2V5KTsKLSAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25h
bCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFs
bChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
LSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05l
d09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJh
bmdlID0gbnVsbCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlU
aHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKKyAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkp
OworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQo
YW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1
ZXN0IGdldEtleShJREJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1H
bG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9u
ZyBjb3VudCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1
ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25n
IGNvdW50KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVl
c3QgZ2V0QWxsS2V5cyhvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25h
bCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhhbnkga2V5LCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0XSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29y
KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkg
a2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVs
bCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAg
W05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9
IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwor
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4
dCIpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBv
cGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFs
IElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGFueSBrZXks
IG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbG93ZXJPcGVuOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHVwcGVyT3BlbjsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBvbmx5KGFueSB2
YWx1ZSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIGxvd2VyQm91bmQoYW55IGxvd2VyLCBvcHRpb25h
bCBib29sZWFuIG9wZW4gPSBmYWxzZSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIHVwcGVyQm91bmQo
YW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4gPSBmYWxzZSk7Ci0gICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktl
eVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIGxvd2Vy
T3BlbiA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3BlbiA9IGZhbHNlKTsKKyAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHN0YXRpYyBJREJLZXlSYW5nZSBvbmx5
KGFueSB2YWx1ZSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBzdGF0
aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlvbmFsIGJvb2xlYW4gb3Bl
biA9IGZhbHNlKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHN0YXRp
YyBJREJLZXlSYW5nZSB1cHBlckJvdW5kKGFueSB1cHBlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVu
ID0gZmFsc2UpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gc3RhdGlj
IElEQktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFu
IGxvd2VyT3BlbiA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3BlbiA9IGZhbHNlKTsK
IAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBib29sZWFu
IGluY2x1ZGVzKGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGJvb2xlYW4g
aW5jbHVkZXMoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSwzMSArNDEsMzEgQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVl
bmNlPERPTVN0cmluZwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXV0
b0luY3JlbWVudDsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwgb3B0aW9uYWwgYW55IGtl
eSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gSURCUmVxdWVzdCBhZGQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVu
Y3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZShJREJLZXlSYW5nZT8g
a2V5UmFuZ2UpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVt
ZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVs
ZXRlKGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY2xlYXIoKTsKLSAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChJREJL
ZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdl
dEtleShJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtleShhbnkga2V5KTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdl
dEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50
KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0
aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0g
bnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAg
W05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURC
UmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2ln
bmVkIGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwg
TWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/
IHJhbmdlID0gbnVsbCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKKyAgICBbTmV3T2Jq
ZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwgb3B0
aW9uYWwgYW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJ
REJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0g
SURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsKKyAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElE
QlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CisgICAgW05ld09i
amVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0S2V5KElE
QktleVJhbmdlPyBrZXkpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0g
SURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsKGFu
eSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAg
IFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlz
KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdF0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVl
c3QgY291bnQoYW55IGtleSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURC
S2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiA9ICJuZXh0Iik7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFs
IElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3Bl
bktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJ
REJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5L
ZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9
ICJuZXh0Iik7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1
ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9u
YWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwg
b3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05l
d09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Io
b3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURC
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAgICBJREJJbmRleCBpbmRl
eChET01TdHJpbmcgbmFtZSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJJbmRleCBjcmVhdGVJbmRleChET01TdHJpbmcgbmFt
ZSwgKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+KSBrZXlQYXRoLCBvcHRpb25hbCBJ
REJJbmRleFBhcmFtZXRlcnMgb3B0aW9ucyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOworICAgIFtOZXdPYmplY3QsIENhbGxX
aXRoPUdsb2JhbE9iamVjdF0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChE
T01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5k
ZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAgIHVuZGVmaW5lZCBkZWxldGVJbmRleChET01TdHJp
bmcgbmFtZSk7CiB9OwogCiBkaWN0aW9uYXJ5IElEQkluZGV4UGFyYW1ldGVycyB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQAog
ICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgSURCRGF0YWJhc2UgZGI7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTUV4Y2VwdGlvbj8gZXJyb3I7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKKyAg
ICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSk7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCAnY29tbWl0Jy4KICAgICAvLyB1bmRlZmluZWQgY29tbWl0KCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWJvcnQoKTsKKyAgICB1bmRlZmluZWQgYWJv
cnQoKTsKIAogICAgIC8vIEV2ZW50IGhhbmRsZXJzOgogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb25hYm9ydDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDExIEBAIGVudW0gUmVjb3JkaW5nU3RhdGUgeyAiaW5hY3Rp
dmUiLCAicmVjb3IKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhdWRpb0Jp
dHNQZXJTZWNvbmQ7CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIEJpdHJhdGVNb2RlIGF1ZGlv
Qml0cmF0ZU1vZGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c3Rh
cnRSZWNvcmRpbmddIHVuZGVmaW5lZCBzdGFydChvcHRpb25hbCB1bnNpZ25lZCBsb25nIHRpbWVz
bGljZSk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRSZWNvcmRpbmddIHVuZGVmaW5lZCBzdGFy
dChvcHRpb25hbCB1bnNpZ25lZCBsb25nIHRpbWVzbGljZSk7CiAgICAgW0ltcGxlbWVudGVkQXM9
c3RvcFJlY29yZGluZ10gdW5kZWZpbmVkIHN0b3AoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IEltcGxlbWVudGVkQXM9cGF1c2VSZWNvcmRpbmddIHVuZGVmaW5lZCBwYXVzZSgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1yZXN1bWVSZWNvcmRpbmddIHVuZGVmaW5l
ZCByZXN1bWUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXF1ZXN0RGF0
YSgpOworICAgIFtJbXBsZW1lbnRlZEFzPXBhdXNlUmVjb3JkaW5nXSB1bmRlZmluZWQgcGF1c2Uo
KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZWNvcmRpbmddIHVuZGVmaW5lZCByZXN1bWUo
KTsKKyAgICB1bmRlZmluZWQgcmVxdWVzdERhdGEoKTsKIAogICAgIFtDYWxsV2l0aD1Eb2N1bWVu
dF0gc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkKERPTVN0cmluZyB0eXBlKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkg
KzI4LDkgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAogXSBpbnRlcmZhY2UgTWVkaWFNZXRhZGF0YSB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcihvcHRpb25hbCBN
ZWRpYU1ldGFkYXRhSW5pdCBpbml0KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgTWVkaWFNZXRhZGF0YUluaXQgaW5pdCk7CiAgICAg
YXR0cmlidXRlIERPTVN0cmluZyB0aXRsZTsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFydGlz
dDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsYnVtOwotICAgIFtTZXR0ZXJDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIEZyb3pl
bkFycmF5PE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAgW1NldHRlckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxNZWRpYUltYWdlPiBhcnR3b3Jr
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNSArMzUsNSBAQAogCiAgICAgdW5kZWZpbmVkIHNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNz
aW9uQWN0aW9uIGFjdGlvbiwgTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj8gaGFuZGxlcik7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3NpdGlvblN0YXRlKG9wdGlv
bmFsIE1lZGlhUG9zaXRpb25TdGF0ZT8gc3RhdGUgPSBudWxsKTsKKyAgICB1bmRlZmluZWQgc2V0
UG9zaXRpb25TdGF0ZShvcHRpb25hbCBNZWRpYVBvc2l0aW9uU3RhdGU/IHN0YXRlID0gbnVsbCk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNyAr
NTUsMTcgQEAgZW51bSBSZWFkeVN0YXRlIHsKIAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGR1cmF0aW9uOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFNv
dXJjZUJ1ZmZlciBhZGRTb3VyY2VCdWZmZXIoRE9NU3RyaW5nIHR5cGUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIgYnVm
ZmVyKTsKKyAgICBbTmV3T2JqZWN0XSBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVmZmVyKERPTVN0
cmluZyB0eXBlKTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZl
ciBidWZmZXIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZTsKICAgICAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBlbmRPZlN0cmVhbShv
cHRpb25hbCBFbmRPZlN0cmVhbUVycm9yIGVycm9yKTsKKyAgICB1bmRlZmluZWQgZW5kT2ZTdHJl
YW0ob3B0aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CiAKICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkIChET01T
dHJpbmcgdHlwZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRMaXZl
U2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyTGl2ZVNlZWthYmxlUmFuZ2UoKTsKKyAgICB1bmRlZmlu
ZWQgc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICB1
bmRlZmluZWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbnNvdXJjZW9wZW47CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJj
ZWVuZGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01
OSwxMSArNTksMTEgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRX
aW5kb3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGFwcGVuZEJ1ZmZlcihCdWZmZXJTb3VyY2UgZGF0YSk7CisgICAg
dW5kZWZpbmVkIGFwcGVuZEJ1ZmZlcihCdWZmZXJTb3VyY2UgZGF0YSk7CiAKICAgICAvLyBBYm9y
dCB0aGUgY3VycmVudCBzZWdtZW50IGFwcGVuZCBzZXF1ZW5jZS4KLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHJlbW92ZShkb3VibGUgc3RhcnQsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kKTsKKyAgICB1
bmRlZmluZWQgYWJvcnQoKTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlKGRvdWJsZSBzdGFydCwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnVw
ZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251cGRhdGU7CkBAIC03MSw1
ICs3MSw1IEBACiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9yOwogICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsKIAotICAgIFtFbmFibGVkQnlTZXR0aW5nPVNvdXJj
ZUJ1ZmZlckNoYW5nZVR5cGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2hhbmdlVHlw
ZShET01TdHJpbmcgdHlwZSk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9U291cmNlQnVmZmVyQ2hh
bmdlVHlwZV0gdW5kZWZpbmVkIGNoYW5nZVR5cGUoRE9NU3RyaW5nIHR5cGUpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9UGVlckNvbm5lY3Rpb24sCiAgICAgRXhwb3NlZD1XaW5k
b3cKIF0gaW50ZXJmYWNlIFJUQ0RUTUZTZW5kZXIgOiBFdmVudFRhcmdldCB7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0RFRNRihET01TdHJpbmcgdG9uZXMsIG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgZHVyYXRpb24gPSAxMDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
aW50ZXJUb25lR2FwID0gNzApOworICAgIHVuZGVmaW5lZCBpbnNlcnREVE1GKERPTVN0cmluZyB0
b25lcywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBkdXJhdGlvbiA9IDEwMCwgb3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBpbnRlclRvbmVHYXAgPSA3MCk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnRvbmVjaGFuZ2U7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5JbnNl
cnREVE1GOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsMTAgQEAKIAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYmluYXJ5VHlw
ZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXIg
ZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZChBcnJheUJ1ZmZl
clZpZXcgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZChCbG9i
IGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbmQoVVNWU3RyaW5n
IGRhdGEpOworICAgIHVuZGVmaW5lZCBzZW5kKEFycmF5QnVmZmVyIGRhdGEpOworICAgIHVuZGVm
aW5lZCBzZW5kKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICB1bmRlZmluZWQgc2VuZChCbG9i
IGRhdGEpOworICAgIHVuZGVmaW5lZCBzZW5kKFVTVlN0cmluZyBkYXRhKTsKIAogICAgIHVuZGVm
aW5lZCBjbG9zZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB0eXBlZGVmIChvYmplY3Qgb3Ig
RE9NU3RyaW5nKSBBbGdvcml0aG1JCiAKICAgICB1bmRlZmluZWQgcmVzdGFydEljZSgpOwogICAg
IFJUQ0NvbmZpZ3VyYXRpb24gZ2V0Q29uZmlndXJhdGlvbigpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKTsKKyAgICB1bmRlZmluZWQgc2V0Q29uZmlndXJhdGlvbihSVENDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24pOwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwogCiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbm5lZ290aWF0aW9ubmVlZGVkOwpAQCAtMTI0LDE3ICsxMjQsMTcgQEAg
dHlwZWRlZiAob2JqZWN0IG9yIERPTVN0cmluZykgQWxnb3JpdGhtSQogICAgIHNlcXVlbmNlPFJU
Q1J0cFJlY2VpdmVyPiBnZXRSZWNlaXZlcnMoKTsKICAgICBzZXF1ZW5jZTxSVENSdHBUcmFuc2Nl
aXZlcj4gZ2V0VHJhbnNjZWl2ZXJzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ1J0
cFNlbmRlciBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBNZWRpYVN0cmVhbS4uLiBz
dHJlYW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmVUcmFjayhS
VENSdHBTZW5kZXIgc2VuZGVyKTsKKyAgICBSVENSdHBTZW5kZXIgYWRkVHJhY2soTWVkaWFTdHJl
YW1UcmFjayB0cmFjaywgTWVkaWFTdHJlYW0uLi4gc3RyZWFtcyk7CisgICAgdW5kZWZpbmVkIHJl
bW92ZVRyYWNrKFJUQ1J0cFNlbmRlciBzZW5kZXIpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBSVENSdHBUcmFuc2NlaXZlciBhZGRUcmFuc2NlaXZlcigoTWVkaWFTdHJlYW1UcmFjayBvciBE
T01TdHJpbmcpIHRyYWNrLCBvcHRpb25hbCBSVENSdHBUcmFuc2NlaXZlckluaXQgaW5pdCk7Cisg
ICAgUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoKE1lZGlhU3RyZWFtVHJhY2sgb3Ig
RE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOwog
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYWNrOwogCiAgICAgLy8gNi4xIFBlZXIt
dG8tcGVlciBkYXRhIEFQSQogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlzc2luZyBzY3RwCiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURhdGFDaGFubmVsKFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBvcHRpb25hbCBSVENEYXRh
Q2hhbm5lbEluaXQgb3B0aW9ucyk7CisgICAgUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5u
ZWwoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJU
Q0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
ZGF0YWNoYW5uZWw7CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1ICszMSw1IEBA
IHR5cGVkZWYgKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBvciBSVENSdHAKICAgICBFeHBvc2VkPVdp
bmRvdywKICAgICBJbXBsZW1lbnRlZEJ5PVJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybSwKIF0g
cGFydGlhbCBpbnRlcmZhY2UgUlRDUnRwUmVjZWl2ZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gYXR0cmlidXRlIFJUQ1J0cFRyYW5zZm9ybT8gdHJhbnNmb3JtOworICAgIGF0dHJpYnV0ZSBS
VENSdHBUcmFuc2Zvcm0/IHRyYW5zZm9ybTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
aWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1
LDYgQEAgZGljdGlvbmFyeSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1PcHRpb25zIAogICAgIC8vIFBy
b21pc2U8dW5kZWZpbmVkPiByYXRjaGV0RW5jcnlwdGlvbktleSgpOwogICAgIC8vIFByb21pc2U8
dW5kZWZpbmVkPiBzZXRTaWduaW5nS2V5KENyeXB0b0tleSBrZXkpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0gcmVhZGFibGU7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgV3JpdGFibGVTdHJlYW0g
d3JpdGFibGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlYWRhYmxlU3RyZWFtIHJlYWRhYmxl
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXcml0YWJsZVN0cmVhbSB3cml0YWJsZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDUgKzM1LDUgQEAKICAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgb3B0aW9uczsK
IAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcXVlc3RLZXlGcmFtZSgpOworICAgIHVuZGVmaW5lZCBy
ZXF1ZXN0S2V5RnJhbWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUgKzMxLDUgQEAg
dHlwZWRlZiAoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIG9yIFJUQ1J0cAogICAgIEV4cG9zZWQ9V2lu
ZG93LAogICAgIEltcGxlbWVudGVkQnk9UlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybSwKIF0gcGFy
dGlhbCBpbnRlcmZhY2UgUlRDUnRwU2VuZGVyIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGF0
dHJpYnV0ZSBSVENSdHBUcmFuc2Zvcm0/IHRyYW5zZm9ybTsKKyAgICBhdHRyaWJ1dGUgUlRDUnRw
VHJhbnNmb3JtPyB0cmFuc2Zvcm07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgUlRDUnRwU2VuZFBhcmFtZXRlcnMg
Z2V0UGFyYW1ldGVycygpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRQYXJhbWV0ZXJzKFJU
Q1J0cFNlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBy
ZXBsYWNlVHJhY2soTWVkaWFTdHJlYW1UcmFjaz8gd2l0aFRyYWNrKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdHJlYW1zKE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwor
ICAgIHVuZGVmaW5lZCBzZXRTdHJlYW1zKE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwogICAgIFBy
b21pc2U8UlRDU3RhdHNSZXBvcnQ+IGdldFN0YXRzKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VC
X1JUQywgRW5hYmxlZEF0UnVudGltZT1XZWJSVENEVE1GXSByZWFkb25seSBhdHRyaWJ1dGUgUlRD
RFRNRlNlbmRlcj8gZHRtZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNiBAQCB0eXBlZGVmIFJUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3Rv
cHBlZDsKICAgICBhdHRyaWJ1dGUgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gZGlyZWN0aW9uOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj8gY3VycmVu
dERpcmVjdGlvbjsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdG9wKCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Q29kZWNQcmVmZXJlbmNlcyhzZXF1
ZW5jZTxSVENSdHBDb2RlY0NhcGFiaWxpdHk+IGNvZGVjcyk7CisgICAgdW5kZWZpbmVkIHN0b3Ao
KTsKKyAgICB1bmRlZmluZWQgc2V0Q29kZWNQcmVmZXJlbmNlcyhzZXF1ZW5jZTxSVENSdHBDb2Rl
Y0NhcGFiaWxpdHk+IGNvZGVjcyk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25F
dmVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1ldGhv
ZE5hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyB2YWxpZGF0aW9uVVJMOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlKFByb21pc2U8YW55PiBt
ZXJjaGFudFNlc3Npb25Qcm9taXNlKTsKKyAgICB1bmRlZmluZWQgY29tcGxldGUoUHJvbWlzZTxh
bnk+IG1lcmNoYW50U2Vzc2lvblByb21pc2UpOwogfTsKIAogWwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1ICszMSw1IEBACiBdIGludGVyZmFjZSBQYXltZW50UmVx
dWVzdFVwZGF0ZUV2ZW50IDogRXZlbnQgewogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBl
LCBvcHRpb25hbCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdCBldmVudEluaXREaWN0KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHVwZGF0ZVdpdGgoUHJvbWlzZTxQ
YXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOworICAgIHVuZGVmaW5lZCB1cGRh
dGVXaXRoKFByb21pc2U8UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFpbHNQcm9taXNlKTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBpbnRlcmltUmVzdWx0czsKICAgICBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBtYXhBbHRlcm5hdGl2ZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b24sIEltcGxlbWVudGVkQXM9c3RhcnRSZWNvZ25pdGlvbl0gdW5kZWZpbmVkIHN0YXJ0KCk7Cisg
ICAgW0ltcGxlbWVudGVkQXM9c3RhcnRSZWNvZ25pdGlvbl0gdW5kZWZpbmVkIHN0YXJ0KCk7CiAg
ICAgW0ltcGxlbWVudGVkQXM9c3RvcFJlY29nbml0aW9uXSB1bmRlZmluZWQgc3RvcCgpOwogICAg
IFtJbXBsZW1lbnRlZEFzPWFib3J0UmVjb2duaXRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlk
bAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8g
Q2hhbm5lbCBhY2Nlc3MKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gYW55IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hhbm5lbEluZGV4KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb24sIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdl
YkF1ZGlvXSB1bmRlZmluZWQgY29weUZyb21DaGFubmVsKEZsb2F0MzJBcnJheSBkZXN0aW5hdGlv
biwgdW5zaWduZWQgbG9uZyBjaGFubmVsTnVtYmVyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1
ZmZlck9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgRW5hYmxlZEJ5U2V0dGlu
Zz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9dIHVuZGVmaW5lZCBjb3B5VG9DaGFubmVsKEZsb2F0
MzJBcnJheSBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgY2hhbm5lbE51bWJlciwgb3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBhbnkgZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOworICAgIFtF
bmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpb10gdW5kZWZpbmVkIGNvcHlG
cm9tQ2hhbm5lbChGbG9hdDMyQXJyYXkgZGVzdGluYXRpb24sIHVuc2lnbmVkIGxvbmcgY2hhbm5l
bE51bWJlciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKKyAgICBb
RW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9dIHVuZGVmaW5lZCBjb3B5
VG9DaGFubmVsKEZsb2F0MzJBcnJheSBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgY2hhbm5lbE51bWJl
ciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKICAgICBhdHRy
aWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9wdGlvbmFsIGRvdWJsZSB3aGVuID0g
MCwgb3B0aW9uYWwgZG91YmxlIGdyYWluT2Zmc2V0ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWlu
RHVyYXRpb24pOworICAgIFtJbXBsZW1lbnRlZEFzPXN0YXJ0TGF0ZXJdIHVuZGVmaW5lZCBzdGFy
dChvcHRpb25hbCBkb3VibGUgd2hlbiA9IDAsIG9wdGlvbmFsIGRvdWJsZSBncmFpbk9mZnNldCA9
IDAsIG9wdGlvbmFsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKIAogICAgIC8vIEZJWE1FOiBUaG9z
ZSBjb25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUg
cHJlZml4ZWQgQVBJIGFuZCBzaG91bGQKICAgICAvLyBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBz
dXBwb3J0aW5nIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5
ICs0NCw5IEBACiAgICAgW0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHVu
ZGVmaW5lZD4gcmVzdW1lKCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNsb3NlKCk7CiAKLSAg
ICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVk
aWFFbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2Uo
TWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
IE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlh
RWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3Ry
ZWFtIG1lZGlhU3RyZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsK
IAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydC4KICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrQXVk
aW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2UoTWVkaWFTdHJlYW1UcmFj
ayBtZWRpYVN0cmVhbVRyYWNrKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHVw
WTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSB1cFo7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRPcmllbnRhdGlvbihm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB4VXAsIGZsb2F0IHlVcCwgZmxvYXQgelVw
KTsKKyAgICB1bmRlZmluZWQgc2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7
CisgICAgdW5kZWZpbmVkIHNldE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IHhVcCwgZmxvYXQgeVVwLCBmbG9hdCB6VXApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDE0IEBACiAgICAgYXR0cmlidXRlIENoYW5uZWxDb3VudE1v
ZGUgY2hhbm5lbENvdW50TW9kZTsKICAgICBhdHRyaWJ1dGUgQ2hhbm5lbEludGVycHJldGF0aW9u
IGNoYW5uZWxJbnRlcnByZXRhdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9O
b2RlIGNvbm5lY3QoW1JldHVyblZhbHVlXSBBdWRpb05vZGUgZGVzdGluYXRpb24sIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbnB1dCA9
IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbm5lY3QoQXVkaW9QYXJh
bSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwKTsKKyAgICBB
dWRpb05vZGUgY29ubmVjdChbUmV0dXJuVmFsdWVdIEF1ZGlvTm9kZSBkZXN0aW5hdGlvbiwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlu
cHV0ID0gMCk7CisgICAgdW5kZWZpbmVkIGNvbm5lY3QoQXVkaW9QYXJhbSBkZXN0aW5hdGlvbiwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwKTsKIAogICAgIHVuZGVmaW5lZCBkaXNj
b25uZWN0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGlzY29ubmVjdCh1
bnNpZ25lZCBsb25nIG91dHB1dCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
ZGlzY29ubmVjdChBdWRpb05vZGUgZGVzdGluYXRpb25Ob2RlKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVu
c2lnbmVkIGxvbmcgb3V0cHV0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBk
aXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVuc2lnbmVkIGxvbmcgb3V0cHV0
LCB1bnNpZ25lZCBsb25nIGlucHV0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBkaXNjb25uZWN0KEF1ZGlvUGFyYW0gZGVzdGluYXRpb25QYXJhbSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgZGlzY29ubmVjdChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uUGFy
YW0sIHVuc2lnbmVkIGxvbmcgb3V0cHV0KTsKKyAgICB1bmRlZmluZWQgZGlzY29ubmVjdCh1bnNp
Z25lZCBsb25nIG91dHB1dCk7CisgICAgdW5kZWZpbmVkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlIGRl
c3RpbmF0aW9uTm9kZSk7CisgICAgdW5kZWZpbmVkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlIGRlc3Rp
bmF0aW9uTm9kZSwgdW5zaWduZWQgbG9uZyBvdXRwdXQpOworICAgIHVuZGVmaW5lZCBkaXNjb25u
ZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVuc2lnbmVkIGxvbmcgb3V0cHV0LCB1bnNp
Z25lZCBsb25nIGlucHV0KTsKKyAgICB1bmRlZmluZWQgZGlzY29ubmVjdChBdWRpb1BhcmFtIGRl
c3RpbmF0aW9uUGFyYW0pOworICAgIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvUGFyYW0gZGVz
dGluYXRpb25QYXJhbSwgdW5zaWduZWQgbG9uZyBvdXRwdXQpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGZsb2F0IG1heFZhbHVlOwogCiAgICAgLy8gUGFyYW1ldGVyIGF1dG9tYXRpb24uCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFZhbHVlQXRUaW1lKGZsb2F0IHZhbHVlLCBk
b3VibGUgc3RhcnRUaW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvUGFyYW0gbGlu
ZWFyUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBlbmRUaW1lKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvUGFyYW0gZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGlt
ZShmbG9hdCB2YWx1ZSwgZG91YmxlIGVuZFRpbWUpOworICAgIEF1ZGlvUGFyYW0gc2V0VmFsdWVB
dFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBzdGFydFRpbWUpOworICAgIEF1ZGlvUGFyYW0gbGlu
ZWFyUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBlbmRUaW1lKTsKKyAgICBB
dWRpb1BhcmFtIGV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJs
ZSBlbmRUaW1lKTsKIAogICAgIC8vIEV4cG9uZW50aWFsbHkgYXBwcm9hY2ggdGhlIHRhcmdldCB3
aXRoIGEgcmF0ZSBoYXZpbmcgdGhlIGdpdmVuIHRpbWUgY29uc3RhbnQuCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFRhcmdldEF0VGltZShmbG9hdCB0YXJnZXQsIGRvdWJs
ZSBzdGFydFRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCk7CisgICAgQXVkaW9QYXJhbSBzZXRUYXJn
ZXRBdFRpbWUoZmxvYXQgdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lLCBmbG9hdCB0aW1lQ29uc3Rh
bnQpOwogCiAgICAgLy8gU2V0cyBhbiBhcnJheSBvZiBhcmJpdHJhcnkgcGFyYW1ldGVyIHZhbHVl
cyBzdGFydGluZyBhdCB0aW1lIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb24uCiAgICAgLy8gVGhlIG51
bWJlciBvZiB2YWx1ZXMgd2lsbCBiZSBzY2FsZWQgdG8gZml0IGludG8gdGhlIGRlc2lyZWQgZHVy
YXRpb24uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFZhbHVlQ3VydmVB
dFRpbWUoc2VxdWVuY2U8ZmxvYXQ+IHZhbHVlcywgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1
cmF0aW9uKTsKKyAgICBBdWRpb1BhcmFtIHNldFZhbHVlQ3VydmVBdFRpbWUoc2VxdWVuY2U8Zmxv
YXQ+IHZhbHVlcywgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1cmF0aW9uKTsKIAogICAgIC8v
IENhbmNlbHMgYWxsIHNjaGVkdWxlZCBwYXJhbWV0ZXIgY2hhbmdlcyB3aXRoIHRpbWVzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydFRpbWUuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBB
dWRpb1BhcmFtIGNhbmNlbFNjaGVkdWxlZFZhbHVlcyhkb3VibGUgY2FuY2VsVGltZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIGNhbmNlbEFuZEhvbGRBdFRpbWUoZG91Ymxl
IGNhbmNlbFRpbWUpOworICAgIEF1ZGlvUGFyYW0gY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGRvdWJs
ZSBjYW5jZWxUaW1lKTsKKyAgICBBdWRpb1BhcmFtIGNhbmNlbEFuZEhvbGRBdFRpbWUoZG91Ymxl
IGNhbmNlbFRpbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5pZGwJKHJldmlzaW9u
IDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNiBAQAogICAgIEV4
cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgOiBBdWRp
b05vZGUgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lbmRlZDsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9w
dGlvbmFsIGRvdWJsZSB3aGVuID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPXN0b3BMYXRlcl0gdW5kZWZpbmVkIHN0b3Aob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAw
KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9u
YWwgZG91YmxlIHdoZW4gPSAwKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdG9wTGF0ZXJdIHVuZGVm
aW5lZCBzdG9wKG9wdGlvbmFsIGRvdWJsZSB3aGVuID0gMCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBACiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3Rv
dHlwZSwKICAgICBHbG9iYWw9KFdvcmtsZXQsQXVkaW9Xb3JrbGV0KSwKIF0gaW50ZXJmYWNlIEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xldEdsb2JhbFNjb3BlIHsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWdpc3RlclByb2Nlc3NvcihET01TdHJpbmcgbmFtZSwg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IgcHJvY2Vzc29yQ3Rvcik7CisgICAgdW5k
ZWZpbmVkIHJlZ2lzdGVyUHJvY2Vzc29yKERPTVN0cmluZyBuYW1lLCBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3RvciBwcm9jZXNzb3JDdG9yKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRGcmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIGN1cnJlbnRUaW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzYW1wbGVS
YXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw2IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgogXSBpbnRlcmZhY2UgQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dF
eGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIGNvbnN0cnVjdG9yKCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0
IHBvcnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVk
aW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00OCwzMSArNDgsMzEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0
U3RhdGUgc3RhdGU7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdlOwog
ICAgIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1l
cywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRh
IGRlY29kaW5nLgogICAgIFByb21pc2U8QXVkaW9CdWZmZXI+IGRlY29kZUF1ZGlvRGF0YShBcnJh
eUJ1ZmZlciBhdWRpb0RhdGEsIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IHN1Y2Nlc3ND
YWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CiAK
ICAgICAvLyBTb3VyY2VzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNy
ZWF0ZUJ1ZmZlclNvdXJjZSgpOwogCiAgICAgLy8gUHJvY2Vzc2luZyBub2RlcwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIGRvdWJsZSBtYXhEZWxheVRpbWUg
PSAxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlx
dWFkRmlsdGVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVh
dGVXYXZlU2hhcGVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQYW5uZXJOb2RlIGNyZWF0
ZVBhbm5lcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVD
b252b2x2ZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBB
bmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNj
cmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5u
ZWxzID0gMik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVP
c2NpbGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRl
UGVyaW9kaWNXYXZlKHNlcXVlbmNlPGZsb2F0PiByZWFsLCBzZXF1ZW5jZTxmbG9hdD4gaW1hZywg
b3B0aW9uYWwgUGVyaW9kaWNXYXZlT3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIENvbnN0YW50U291cmNlTm9kZSBjcmVhdGVDb25zdGFudFNvdXJjZSgpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gU3RlcmVvUGFubmVyTm9kZSBjcmVhdGVTdGVyZW9QYW5uZXIoKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IElJUkZpbHRlck5vZGUgY3JlYXRlSUlSRmlsdGVyKHNlcXVlbmNlPGRvdWJsZT4gZmVlZGZvcndh
cmQsIHNlcXVlbmNlPGRvdWJsZT4gZmVlZGJhY2spOworICAgIEdhaW5Ob2RlIGNyZWF0ZUdhaW4o
KTsKKyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgZG91YmxlIG1heERlbGF5VGlt
ZSA9IDEpOworICAgIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAg
V2F2ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFBhbm5lck5vZGUgY3JlYXRl
UGFubmVyKCk7CisgICAgQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBEeW5h
bWljc0NvbXByZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEFuYWx5
c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRl
U2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgT3NjaWxsYXRv
ck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFBlcmlvZGljV2F2ZSBjcmVhdGVQZXJpb2Rp
Y1dhdmUoc2VxdWVuY2U8ZmxvYXQ+IHJlYWwsIHNlcXVlbmNlPGZsb2F0PiBpbWFnLCBvcHRpb25h
bCBQZXJpb2RpY1dhdmVPcHRpb25zIG9wdGlvbnMpOworICAgIENvbnN0YW50U291cmNlTm9kZSBj
cmVhdGVDb25zdGFudFNvdXJjZSgpOworICAgIFN0ZXJlb1Bhbm5lck5vZGUgY3JlYXRlU3RlcmVv
UGFubmVyKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElJUkZpbHRl
ck5vZGUgY3JlYXRlSUlSRmlsdGVyKHNlcXVlbmNlPGRvdWJsZT4gZmVlZGZvcndhcmQsIHNlcXVl
bmNlPGRvdWJsZT4gZmVlZGJhY2spOwogCiAgICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1l
cmdpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRl
Q2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0g
Nik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFu
bmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKyAg
ICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5uZWxNZXJnZXJOb2RlIGNy
ZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9
IDYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmls
dGVyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNSArMzcsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIFE7IC8v
IFF1YWxpdHkgZmFjdG9yCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gZ2Fpbjsg
Ly8gaW4gRGVjaWJlbHMKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGdldEZy
ZXF1ZW5jeVJlc3BvbnNlKEZsb2F0MzJBcnJheSBmcmVxdWVuY3lIeiwgRmxvYXQzMkFycmF5IG1h
Z1Jlc3BvbnNlLCBGbG9hdDMyQXJyYXkgcGhhc2VSZXNwb25zZSk7CisgICAgdW5kZWZpbmVkIGdl
dEZyZXF1ZW5jeVJlc3BvbnNlKEZsb2F0MzJBcnJheSBmcmVxdWVuY3lIeiwgRmxvYXQzMkFycmF5
IG1hZ1Jlc3BvbnNlLCBGbG9hdDMyQXJyYXkgcGhhc2VSZXNwb25zZSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9JSVJGaWx0ZXJOb2RlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0lJUkZpbHRlck5vZGUuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0lJUkZp
bHRlck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw1ICsyOSw1IEBACiAgICAgRXhwb3Nl
ZD1XaW5kb3cKIF0gaW50ZXJmYWNlIElJUkZpbHRlck5vZGUgOiBBdWRpb05vZGUgewogICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihCYXNlQXVkaW9Db250
ZXh0IGF1ZGlvQ29udGV4dCwgSUlSRmlsdGVyT3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBnZXRGcmVxdWVuY3lSZXNwb25zZShGbG9hdDMyQXJyYXkg
ZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwgRmxvYXQzMkFycmF5IHBoYXNl
UmVzcG9uc2UpOworICAgIHVuZGVmaW5lZCBnZXRGcmVxdWVuY3lSZXNwb25zZShGbG9hdDMyQXJy
YXkgZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwgRmxvYXQzMkFycmF5IHBo
YXNlUmVzcG9uc2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCAr
MzQsOCBAQAogICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKIAog
ICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0gCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CisgICAgdW5kZWZpbmVkIHNldFBvc2l0aW9uKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworICAgIHVuZGVmaW5lZCBzZXRPcmllbnRhdGlvbihm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKICAgICAKICAgICAvLyBEZWZhdWx0IGRpc3RhbmNl
IG1vZGVsIGlzIGludmVyc2UKICAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFu
Y2VNb2RlbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNSArNDcsNSBAQAogICAgIGF0
dHJpYnV0ZSBkb3VibGUgbG9vcFN0YXJ0OwogICAgIGF0dHJpYnV0ZSBkb3VibGUgbG9vcEVuZDsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1zdGFydExhdGVyXSB1bmRl
ZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3VibGUgZ3Jh
aW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7CisgICAgW0ltcGxl
bWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9wdGlvbmFsIGRvdWJsZSB3aGVu
ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWluT2Zmc2V0ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdy
YWluRHVyYXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMzYgKzU1LDM2IEBACiAgICAgLy8gTnVtYmVyIG9mIEF1ZGlv
QnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51
bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVk
QXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlCdWZm
ZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisgICAgQXVkaW9CdWZmZXIgY3JlYXRlQnVm
ZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJP
ZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFtJbXBsZW1lbnRl
ZEFzPWNyZWF0ZUxlZ2FjeUJ1ZmZlcl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVm
ZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KICAgICB1bmRlZmluZWQgZGVjb2RlQXVkaW9EYXRhKEFy
cmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIAogICAgIC8v
IFNvdXJjZXMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlV2Vi
S2l0QnVmZmVyU291cmNlXSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVy
U291cmNlKCk7CisgICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlXSBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CiAKLSAgICBb
Q29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFF
bGVtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1l
bnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25d
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlh
U3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRp
YVN0cmVhbURlc3RpbmF0aW9uKCk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJl
YW0gbWVkaWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwog
CiAgICAgLy8gUHJvY2Vzc2luZyBub2RlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gR2Fpbk5v
ZGUgY3JlYXRlR2FpbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGVsYXlOb2RlIGNyZWF0
ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRl
cigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNo
YXBlcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJL
aXRQYW5uZXJdIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIENvbnZvbHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdER5bmFtaWNzQ29tcHJl
c3Nvcl0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNz
b3IoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNl
cigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVT
Y3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0T3NjaWxsYXRvcl0gV2ViS2l0T3Nj
aWxsYXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
UGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQz
MkFycmF5IGltYWcpOworICAgIEdhaW5Ob2RlIGNyZWF0ZUdhaW4oKTsKKyAgICBEZWxheU5vZGUg
Y3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAx
KTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIFdhdmVT
aGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVX
ZWJLaXRQYW5uZXJdIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKKyAgICBD
b252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0
ZVdlYktpdER5bmFtaWNzQ29tcHJlc3Nvcl0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlz
ZXIoKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdE9z
Y2lsbGF0b3JdIFdlYktpdE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBQ
ZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMy
QXJyYXkgaW1hZyk7CiAKICAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFubmVsU3Bs
aXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOworICAgIENoYW5uZWxT
cGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5l
bE1lcmdlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CiAKICAg
ICAvLyBPZmZsaW5lIHJlbmRlcmluZwogICAgIC8vIHVuZGVmaW5lZCBwcmVwYXJlT2ZmbGluZUJ1
ZmZlclJlbmRlcmluZyh1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNSArMzQsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBk
b3ViCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldFJvd0xpc3Qg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgIHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9yIHVu
cmVzdHJpY3RlZCBkb3ViCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgRXhwb3NlZD1X
aW5kb3cKIF0gaW50ZXJmYWNlIFNRTFRyYW5zYWN0aW9uIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBleGVjdXRlU3FsKERPTVN0cmluZyBzcWxTdGF0ZW1lbnQsIG9wdGlvbmFs
IHNlcXVlbmNlPFNRTFZhbHVlPj8gYXJndW1lbnRzID0gW10sIG9wdGlvbmFsIFNRTFN0YXRlbWVu
dENhbGxiYWNrPyBjYWxsYmFjaywgb3B0aW9uYWwgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz8g
ZXJyb3JDYWxsYmFjayk7CisgICAgdW5kZWZpbmVkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNxbFN0
YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1bWVudHMgPSBbXSwgb3B0
aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRpb25hbCBTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZChB
cnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZW5k
KEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2Vu
ZChVU1ZTdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXIgZGF0YSk7
CisgICAgdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIHVuZGVmaW5l
ZCBzZW5kKEJsb2IgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoVVNWU3RyaW5nIGRhdGEpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1w
XSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBVU1ZTdHJpbmcgcmVhc29uKTsKKyAgICB1
bmRlZmluZWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRp
b25hbCBVU1ZTdHJpbmcgcmVhc29uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDYgQEAKIF0gaW50ZXJmYWNlIFdlYlhSRnJhbWUgewogICAgIFtTYW1lT2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNlc3Npb247CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIENhbGxXaXRoPURvY3VtZW50XSBXZWJYUlZpZXdlclBvc2U/IGdldFZpZXdlclBvc2Uo
V2ViWFJSZWZlcmVuY2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uLCBDYWxsV2l0aD1Eb2N1bWVudF0gV2ViWFJQb3NlPyBnZXRQb3NlKFdlYlhSU3BhY2Ugc3Bh
Y2UsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFdlYlhS
Vmlld2VyUG9zZT8gZ2V0Vmlld2VyUG9zZShXZWJYUlJlZmVyZW5jZVNwYWNlIHJlZmVyZW5jZVNw
YWNlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNw
YWNlIHNwYWNlLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJl
bmNlU3BhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgU2tpcFZU
YWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJlZmVyZW5jZVNwYWNlCiBdIGlu
dGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFjZSB7Ci0gICAgW05ld09iamVj
dCwgTWF5VGhyb3dFeGNlcHRpb25dIFdlYlhSUmVmZXJlbmNlU3BhY2UgZ2V0T2Zmc2V0UmVmZXJl
bmNlU3BhY2UoV2ViWFJSaWdpZFRyYW5zZm9ybSBvcmlnaW5PZmZzZXQpOworICAgIFtOZXdPYmpl
Y3RdIFdlYlhSUmVmZXJlbmNlU3BhY2UgZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoV2ViWFJSaWdp
ZFRyYW5zZm9ybSBvcmlnaW5PZmZzZXQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bnJlc2V0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksMTMgKzM5LDEzIEBA
CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUklucHV0U291cmNlQXJy
YXkgaW5wdXRTb3VyY2VzOwogCiAgICAgLy8gTWV0aG9kcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHVwZGF0ZVJlbmRlclN0YXRlKG9wdGlvbmFsIFhSUmVuZGVyU3RhdGVJbml0
IHN0YXRlSW5pdCk7CisgICAgdW5kZWZpbmVkIHVwZGF0ZVJlbmRlclN0YXRlKG9wdGlvbmFsIFhS
UmVuZGVyU3RhdGVJbml0IHN0YXRlSW5pdCk7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxXZWJY
UlJlZmVyZW5jZVNwYWNlPiByZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5
cGUgdHlwZSk7CiAKICAgICB1bnNpZ25lZCBsb25nIHJlcXVlc3RBbmltYXRpb25GcmFtZShYUkZy
YW1lUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgY2FuY2VsQW5pbWF0
aW9uRnJhbWUodW5zaWduZWQgbG9uZyBoYW5kbGUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBQcm9taXNlPHVuZGVmaW5lZD4gZW5kKCk7CisgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGVuZCgp
OwogCiAgICAgLy8gRXZlbnRzCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB0eXBlZGVm
IChXZWJHTFJlbmRlcmluZ0NvbnRleHQpIFdlYlhSV2ViCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgZnJhbWVidWZmZXJIZWlnaHQ7CiAKICAgICAvLyBNZXRob2RzCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBXZWJYUlZpZXdwb3J0PyBnZXRWaWV3cG9ydChXZWJYUlZpZXcg
dmlldyk7CisgICAgV2ViWFJWaWV3cG9ydD8gZ2V0Vmlld3BvcnQoV2ViWFJWaWV3IHZpZXcpOwog
CiAgICAgLy8gU3RhdGljIE1ldGhvZHMKICAgICBzdGF0aWMgZG91YmxlIGdldE5hdGl2ZUZyYW1l
YnVmZmVyU2NhbGVGYWN0b3IoV2ViWFJTZXNzaW9uIHNlc3Npb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw2IEBACiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0x
LyN0aGUtYW5pbWF0YWJsZS1pbnRlcmZhY2UtbWl4aW4KIGludGVyZmFjZSBtaXhpbiBBbmltYXRh
YmxlIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gV2Vi
QW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFtZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0
ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucykgb3B0aW9ucyk7CisgICAgW0Nh
bGxXaXRoPUdsb2JhbE9iamVjdF0gV2ViQW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFt
ZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0
aW9ucykgb3B0aW9ucyk7CiAgICAgc2VxdWVuY2U8V2ViQW5pbWF0aW9uPiBnZXRBbmltYXRpb25z
KG9wdGlvbmFsIEdldEFuaW1hdGlvbnNPcHRpb25zIG9wdGlvbnMpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsCShyZXZpc2lvbiAyNzQ3
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjksNSArMjksNSBAQAogXSBpbnRlcmZhY2UgQW5pbWF0aW9uRWZmZWN0
IHsKICAgICBbSW1wbGVtZW50ZWRBcz1nZXRCaW5kaW5nc1RpbWluZ10gRWZmZWN0VGltaW5nIGdl
dFRpbWluZygpOwogICAgIFtJbXBsZW1lbnRlZEFzPWdldEJpbmRpbmdzQ29tcHV0ZWRUaW1pbmdd
IENvbXB1dGVkRWZmZWN0VGltaW5nIGdldENvbXB1dGVkVGltaW5nKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWJpbmRpbmdzVXBkYXRlVGltaW5nXSB1bmRlZmluZWQg
dXBkYXRlVGltaW5nKG9wdGlvbmFsIE9wdGlvbmFsRWZmZWN0VGltaW5nIHRpbWluZyk7CisgICAg
W0ltcGxlbWVudGVkQXM9YmluZGluZ3NVcGRhdGVUaW1pbmddIHVuZGVmaW5lZCB1cGRhdGVUaW1p
bmcob3B0aW9uYWwgT3B0aW9uYWxFZmZlY3RUaW1pbmcgdGltaW5nKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmlu
ZzsKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBjb25zdHJ1Y3RvcihLZXlmcmFtZUVmZmVj
dCBzb3VyY2UpOwogCiAgICAgYXR0cmlidXRlIEVsZW1lbnQ/IHRhcmdldDsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBDU1NPTVN0cmluZz8gcHNldWRvRWxlbWVudDsKKyAgICBh
dHRyaWJ1dGUgQ1NTT01TdHJpbmc/IHBzZXVkb0VsZW1lbnQ7CiAgICAgW0VuYWJsZWRCeVNldHRp
bmc9V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNdIGF0dHJpYnV0ZSBJdGVyYXRpb25D
b21wb3NpdGVPcGVyYXRpb24gaXRlcmF0aW9uQ29tcG9zaXRlOwogICAgIFtFbmFibGVkQnlTZXR0
aW5nPVdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zXSBhdHRyaWJ1dGUgQ29tcG9zaXRl
T3BlcmF0aW9uIGNvbXBvc2l0ZTsKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBsZW1l
bnRlZEFzPWdldEJpbmRpbmdzS2V5ZnJhbWVzXSBzZXF1ZW5jZTxvYmplY3Q+IGdldEtleWZyYW1l
cygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBs
ZW1lbnRlZEFzPXNldEJpbmRpbmdzS2V5ZnJhbWVzXSB1bmRlZmluZWQgc2V0S2V5ZnJhbWVzKG9i
amVjdD8ga2V5ZnJhbWVzKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBsZW1lbnRl
ZEFzPXNldEJpbmRpbmdzS2V5ZnJhbWVzXSB1bmRlZmluZWQgc2V0S2V5ZnJhbWVzKG9iamVjdD8g
a2V5ZnJhbWVzKTsKIH07CiAKIGRpY3Rpb25hcnkgQmFzZVByb3BlcnR5SW5kZXhlZEtleWZyYW1l
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBlbnVtIEFuaW1hdGlvblJlcGxhY2VT
dGF0ZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NFZmZlY3RdIGF0dHJpYnV0ZSBBbmlt
YXRpb25FZmZlY3Q/IGVmZmVjdDsKICAgICBbU2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRl
PVdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzXSBhdHRyaWJ1dGUgQW5pbWF0aW9uVGltZWxp
bmU/IHRpbWVsaW5lOwogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzU3RhcnRUaW1lXSBhdHRy
aWJ1dGUgZG91YmxlPyBzdGFydFRpbWU7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVdIGF0dHJpYnV0ZSBkb3VibGU/IGN1cnJlbnRUaW1l
OworICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVdIGF0dHJpYnV0ZSBkb3Vi
bGU/IGN1cnJlbnRUaW1lOwogICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRlOwogICAg
IFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUGxheVN0YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQW5p
bWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZTsKICAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1Jl
cGxhY2VTdGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFuaW1hdGlvblJlcGxhY2VTdGF0ZSByZXBs
YWNlU3RhdGU7CkBAIC02MCwxMSArNjAsMTEgQEAgZW51bSBBbmltYXRpb25SZXBsYWNlU3RhdGUg
ewogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUmVhZHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBQ
cm9taXNlPFdlYkFuaW1hdGlvbj4gcmVhZHk7CiAgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NG
aW5pc2hlZF0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8V2ViQW5pbWF0aW9uPiBmaW5pc2hl
ZDsKICAgICB1bmRlZmluZWQgY2FuY2VsKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgZmluaXNoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWJp
bmRpbmdzUGxheV0gdW5kZWZpbmVkIHBsYXkoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIElt
cGxlbWVudGVkQXM9YmluZGluZ3NQYXVzZV0gdW5kZWZpbmVkIHBhdXNlKCk7CisgICAgdW5kZWZp
bmVkIGZpbmlzaCgpOworICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUGxheV0gdW5kZWZpbmVk
IHBsYXkoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1BhdXNlXSB1bmRlZmluZWQgcGF1
c2UoKTsKICAgICB1bmRlZmluZWQgdXBkYXRlUGxheWJhY2tSYXRlKGRvdWJsZSBwbGF5YmFja1Jh
dGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1JldmVy
c2VdIHVuZGVmaW5lZCByZXZlcnNlKCk7CisgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NSZXZl
cnNlXSB1bmRlZmluZWQgcmV2ZXJzZSgpOwogICAgIHVuZGVmaW5lZCBwZXJzaXN0KCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tbWl0U3R5bGVzKCk7CisgICAgdW5kZWZp
bmVkIGNvbW1pdFN0eWxlcygpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNzgsMTMgKzc4LDQ2IEBAIHN0YXRpYyBib29sIGlzVmlzaWJsZU5h
bWVkUHJvcGVydHkoSlNDOjoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gTk9URTogTmFtZWQg
Z2V0dGVycyBhcmUgbGl0dGxlIG9kZC4gVG8gYXZvaWQgZG9pbmcgZHVwbGljYXRlIGxvb2t1cHMg
KG9uY2Ugd2hlbiBjaGVja2luZyBpZgorLy8gICAgICAgdGhlIHByb3BlcnR5IG5hbWUgaXMgYSAn
c3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGFuZCBvbmNlIHRvIGdldCB0aGUgdmFsdWUpIHdlIHNp
Z25hbAorLy8gICAgICAgdGhhdCBhIHByb3BlcnR5IGlzIHN1cHBvcnRlZCBieSB3aGV0aGVyIG9y
IG5vdCBpdCBpcyAnbnVsbCcgKHdoZXJlIHdoYXQgbnVsbCBtZWFucyBpcworLy8gICAgICAgZGVw
ZW5kYW50IG9uIHRoZSBJREwgdHlwZSkuIFRoaXMgaXMgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24g
dGhhdCBubyBuYW1lZCBnZXR0ZXIgd2lsbAorLy8gICAgICAgZXZlciBhY3R1YWxseSB3YW50IHRv
IHJldHVybiBudWxsIGFzIGFuIGFjdHVhbCByZXR1cm4gdmFsdWUsIHdoaWNoIHNlZW1zIGxpa2Ug
YW4gb2sKKy8vICAgICAgIGFzc3VtcHRpb24gdG8gbWFrZSAoc2hvdWxkIGl0IHR1cm4gb3V0IHRo
aXMgZG9lc24ndCBob2xkIGluIHRoZSBmdXR1cmUsIHdlIGhhdmUgbG90cworLy8gICAgICAgb2Yg
b3B0aW9uczsgZG8gdHdvIGxvb2t1cHMsIGFkZCBhbiBleHRyYSBsYXllciBvZiBPcHRpb25hbCwg
ZXRjLikuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlLCB0eXBlbmFtZSBKU0NsYXNzLCB0eXBl
bmFtZSBJbm5lckl0ZW1BY2Nlc3Nvcj4KK3N0YXRpYyBkZWNsdHlwZShhdXRvKSB2aXNpYmxlTmFt
ZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IoSW5uZXJJdGVtQWNjZXNzb3ImJiBpbm5lckl0
ZW1BY2Nlc3NvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8c3RkOjppbnZv
a2VfcmVzdWx0X3Q8SW5uZXJJdGVtQWNjZXNzb3IsIEpTQ2xhc3MmLCBKU0M6OlByb3BlcnR5TmFt
ZT4+KSB7CisgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBFeGNlcHRpb25Pcjx0eXBlbmFtZSBJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+OworCisgICAgICAgIHJldHVybiBbaW5uZXJJdGVt
QWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+KGlubmVySXRlbUFjY2Vz
c29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8UmV0dXJuVHlwZT4geworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBp
bm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJu
VHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkgfTsKKyAgICAgICAgICAgIGlmICghSURM
VHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0LnJldHVyblZhbHVlKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybiBSZXR1cm5UeXBlIHsgSURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIH07CisgICAgfSBlbHNlIHsKKyAgICAgICAgdXNpbmcgUmV0dXJuVHlw
ZSA9IHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZTsKKworICAgICAgICByZXR1
cm4gW2lubmVySXRlbUFjY2Vzc29yID0gc3RkOjpmb3J3YXJkPElubmVySXRlbUFjY2Vzc29yPihp
bm5lckl0ZW1BY2Nlc3NvcildIChKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPFJldHVyblR5cGU+IHsKKyAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gaW5uZXJJdGVtQWNjZXNzb3IodGhpc09iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgIGlmICghSURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IElETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICB9OworICAgIH0KK30KKwogLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlICduYW1lZCBwcm9w
ZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobScgYXVnbWVudGVkIHRvIHJlcGxhY2UgdGhlCiAvLyAn
c3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGNoZWNrIHdpdGggZGlyZWN0IGFjY2VzcyB0byB0aGUg
aW1wbGVtZW50YXRpb24gdmFsdWUgcmV0dXJuZWQKIC8vIGZvciB0aGUgcHJvcGVydHkgbmFtZSwg
dmlhIHBhc3NlZCBpbiBmdW5jdG9yLiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCB0d28gbG9va2lu
ZyB1cCB0aGUKIC8vIHRoZSBwcm9wZXJ0eSBuYW1lIHR3aWNlOyBvbmNlIGZvciAnbmFtZWQgcHJv
cGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nIGNoZWNrLCBhbmQgdGhlbgogLy8gYWdhaW4gd2hl
biB0aGUgdmFsdWUgaXMgbmVlZGVkLgotdGVtcGxhdGU8TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBv
dmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNzLCBjbGFzcyBGdW5jdG9yPgotc3RhdGljIGF1
dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBGdW5jdG9yJiYgaXRlbUFjY2Vzc29yKSAtPiBkZWNsdHlwZShpdGVtQWNjZXNz
b3IodGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkKK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xhc3MgSXRlbUFjY2Vzc29y
Pgorc3RhdGljIGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJdGVtQWNjZXNzb3ImJiBpdGVtQWNjZXNzb3IpIC0+IGRl
Y2x0eXBlKGl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKQogewogICAgIC8v
IE5PVEU6IFdoaWxlIGl0IGlzIG5vdCBzcGVjaWZpZWQsIGEgU3ltYm9sIGNhbiBuZXZlciBiZSBh
ICdzdXBwb3J0ZWQgcHJvcGVydHkKICAgICAvLyBuYW1lJyBzbyB3ZSBjaGVjayB0aGF0IGZpcnN0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2Uu
aAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTAgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBV
JiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIFUmJik7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgVSYm
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJikgLT4gc3RkOjplbmFibGVf
aWZfdDxJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2VwdGlvbk9yPFU+
LCBKU0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6
OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwg
SlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBh
dXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpU
aHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2VwdGlvbk9yPFU+LCBK
U0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1
dG8gdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRp
b25PcjxVPiwgSlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9N
R2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90
PCFJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZU9yRnVuY3Rvcik7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmIHZhbHVl
T3JGdW5jdG9yKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9i
YWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYgdmFsdWVPckZ1bmN0b3IpOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBib29sIG5lZWRzU3RhdGUgPSBKU0NvbnZlcnRlcjxUPjo6bmVlZHNT
dGF0ZSwgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IEpTQ29udmVydGVyPFQ+OjpuZWVkc0dsb2Jh
bE9iamVjdD4KIHN0cnVjdCBKU0NvbnZlcnRlck92ZXJsb2FkZXI7CkBAIC0xNTgsNTIgKzE1Niw5
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgCiAgICAgcmV0dXJu
IEpTQ29udmVydGVyPFQ+Ojpjb252ZXJ0TmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYg
dmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVl
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlT3JGdW5jdG9yKQogewotICAgIGlmIChVTkxJS0VM
WSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKLSAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKSk7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIHRvSlM8VD4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwotfQorICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19pbnZvY2FibGVfdjxVPikgeworICAgICAgICB1c2luZyBGdW5jdG9y
UmV0dXJuVHlwZSA9IHN0ZDo6aW52b2tlX3Jlc3VsdF90PFU+OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZSkgLT4gc3RkOjpl
bmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPgotewotICAgIHJldHVy
biB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlKSAt
PiBzdGQ6OmVuYWJsZV9pZl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6SlNWYWx1ZT4KLXsKLSAg
ICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZS5yZWxlYXNl
RXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAg
dmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7
CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9y
PHZvaWQ+LCBGdW5jdG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
dmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVy
biB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9y
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoSXNFeGNlcHRpb25PcjxV
PikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlT3JGdW5jdG9yLmhhc0V4Y2VwdGlv
bigpKSkgeworICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZU9yRnVuY3Rvci5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlT3JGdW5jdG9yLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdG9K
UzxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWVPckZ1bmN0b3Ip
KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUsIFUmJiB2YWx1ZU9yRnVuY3RvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
aW52b2NhYmxlX3Y8VT4pIHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJldHVyblR5cGUgPSBzdGQ6
Omludm9rZV9yZXN1bHRfdDxVPjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAgdmFsdWVPckZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0g
ZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9yPHZvaWQ+LCBGdW5j
dG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVPckZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKSB7
CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1Vu
ZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0b0pTPFQ+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0
b3IoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9y
PFU+KSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWVPckZ1bmN0b3IuaGFzRXhjZXB0
aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9yLnJlbGVhc2VFeGNlcHRpb24oKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2YWx1
ZU9yRnVuY3Rvci5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBz
dGQ6OmZvcndhcmQ8VT4odmFsdWVPckZ1bmN0b3IpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIFUmJiB2YWx1
ZU9yRnVuY3RvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfaW52b2NhYmxlX3Y8VT4p
IHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJldHVyblR5cGUgPSBzdGQ6Omludm9rZV9yZXN1bHRf
dDxVPjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PHZvaWQsIEZ1bmN0
b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAgdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9yPHZvaWQ+LCBGdW5jdG9yUmV0dXJuVHlwZT4p
IHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAg
ICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkPFQ+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0b3Io
KSk7CisKKyAgICB9IGVsc2UgeworICAgICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8
VT4pIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZU9yRnVuY3Rvci5oYXNFeGNlcHRp
b24oKSkpIHsKKyAgICAgICAgICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0b3IucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHZhbHVlT3JGdW5jdG9yLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZU9yRnVuY3RvcikpOwog
ICAgIH0KLQotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYsIFUmJiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25P
cjxVPiwgSlNDOjpKU1ZhbHVlPgotewotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYgdmFsdWUp
IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPgotewot
ICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKLSAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlLnJlbGVh
c2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRvSlNOZXdseUNyZWF0ZWQ8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2
YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2Vw
dGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+Ci17Ci0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQ8
VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFs
dWUpKTsKLX0KLQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdENvbnZlcnRl
ciB7CiAgICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlw
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
RGF0ZS5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydERhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBGSVhNRTogVGhp
cyBzaG91bGQgZ2V0IHBhc3NlZCBhIGdsb2JhbCBvYmplY3QgcmF0aGVyIHRoYW4gZ2V0dGluZyBp
dCBvdXQgb2YgdGhlIEV4ZWNTdGF0ZS4KIEpTVmFsdWUganNEYXRlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIERhdGVJbnN0
YW5jZTo6Y3JlYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgbGV4aWNhbEdsb2JhbE9iamVj
dC5kYXRlU3RydWN0dXJlKCksIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgR2VuZXJpY1NlcXVlbmNlQ29udmVy
dGVyIHsKIC8vIFNwZWNpYWxpemF0aW9uIGZvciBudW1lcmljIHR5cGVzCiAvLyBGSVhNRTogVGhp
cyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciB0aGUgSURMRmxvYXRpbmdQb2ludFR5cGVzIGFuZCBJ
RExMb25nLiBUbyBhZGQKIC8vIHN1cHBvcnQgZm9yIG1vcmUgbnVtZXJpYyB0eXBlcywgYWRkIGFu
IG92ZXJsb2FkIG9mIENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydCB0aGF0Ci0vLyB0YWtlcyBh
biBFeGVjU3RhdGUsIFRocm93U2NvcGUsIGRvdWJsZSBhcyBpdHMgYXJndW1lbnRzLgorLy8gdGFr
ZXMgYSBKU0dsb2JhbE9iamVjdCwgVGhyb3dTY29wZSBhbmQgZG91YmxlIGFzIGl0cyBhcmd1bWVu
dHMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogc3RydWN0IE51bWVyaWNTZXF1ZW5jZUNv
bnZlcnRlciB7CiAgICAgdXNpbmcgR2VuZXJpY0NvbnZlcnRlciA9IEdlbmVyaWNTZXF1ZW5jZUNv
bnZlcnRlcjxJRExUeXBlPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksOSArOTksOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGlu
dm9rZUZ1CiAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKQogICAg
ICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgZnVuY3RvcigpOworICAgIH0gZWxzZQorICAgICAgICBmdW5jdG9yKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjExLDEzICsyMTEsNiBAQCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0
aW9uSWZBbnkoSlNDCiAgICAgRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBw
cm9taXNlKS0+cmVqZWN0PElETEFueT4oZXJyb3IpOwogfQogCi1SZWY8RGVmZXJyZWRQcm9taXNl
PiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NV2luZG93
JiBkb21XaW5kb3cpCi17Ci0gICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKGRv
bVdpbmRvdy52bSgpLCBkb21XaW5kb3cucHJvbWlzZVN0cnVjdHVyZSgpKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChwcm9taXNlKTsKLSAgICByZXR1cm4gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZG9t
V2luZG93LCAqcHJvbWlzZSk7Ci19Ci0KIEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0
ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUmVqZWN0ZWRQcm9taXNlV2l0aFR5
cGVFcnJvckNhdXNlIGNhdXNlKQogewogICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IGxleGljYWxH
bG9iYWxPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
NSw5ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotCi1SZWY8RGVmZXJyZWRQcm9taXNl
PiBjcmVhdGVEZWZlcnJlZFByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NV2luZG93
Jik7Ci0KIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
LCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKIHZvaWQgZnVsZmlsbFByb21pc2VX
aXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9pZCosIHNpemVf
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICsz
MTgsNyBAQCBzdWIgQWRkTWFwTGlrZUF0dHJpYnV0ZXNBbmRPcGVyYXRpb25JZk5lCiAgICAgdW5s
ZXNzIChncmVwIHsgJF8tPm5hbWUgZXEgImNsZWFyIiB9IChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0
ZXN9LCBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30p
KSB7CiAgICAgICAgIG15ICRjbGVhck9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CiAg
ICAgICAgICRjbGVhck9wZXJhdGlvbi0+bmFtZSgiY2xlYXIiKTsKLSAgICAgICAgJGNsZWFyT3Bl
cmF0aW9uLT50eXBlKElETFBhcnNlcjo6bWFrZVNpbXBsZVR5cGUoInVuZGVmaW5lZCIpKTsKKyAg
ICAgICAgJGNsZWFyT3BlcmF0aW9uLT50eXBlKElETFBhcnNlcjo6bWFrZVNpbXBsZVR5cGUoImFu
eSIpKTsKICAgICAgICAgSURMUGFyc2VyOjpjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVzKCRjbGVhck9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaW50ZXJmYWNlLT5tYXBMaWtlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMpOwogICAgICAgICAkY2xlYXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e05vdEVudW1lcmFibGV9ID0gMTsKICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPm9wZXJh
dGlvbnN9LCAkY2xlYXJPcGVyYXRpb24pOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHN1YiBBZGRTZXRM
aWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmUKICAgICB1bmxlc3MgKGdyZXAgeyAkXy0+bmFt
ZSBlcSAiY2xlYXIiIH0gKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30sIEB7JGludGVyZmFjZS0+
b3BlcmF0aW9uc30sIEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkpIHsKICAgICAgICAgbXkgJGNs
ZWFyT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKICAgICAgICAgJGNsZWFyT3BlcmF0
aW9uLT5uYW1lKCJjbGVhciIpOwotICAgICAgICAkY2xlYXJPcGVyYXRpb24tPnR5cGUoSURMUGFy
c2VyOjptYWtlU2ltcGxlVHlwZSgidW5kZWZpbmVkIikpOworICAgICAgICAkY2xlYXJPcGVyYXRp
b24tPnR5cGUoSURMUGFyc2VyOjptYWtlU2ltcGxlVHlwZSgiYW55IikpOwogICAgICAgICBJRExQ
YXJzZXI6OmNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJGNsZWFyT3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMsICRpbnRlcmZhY2UtPnNldExpa2UtPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAg
ICAgICRjbGVhck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX0g
PSAxOwogICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30sICRjbGVhck9wZXJh
dGlvbik7CkBAIC04NDQsMzkgKzg0NCwxNCBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlcgogCiBz
dWIgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYQogewotICAgIG15ICgkb3V0cHV0QXJyYXksICRp
bnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1l
LCAkSURMVHlwZSkgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwg
JElETFR5cGUpID0gQF87CiAgICAgCi0gICAgIyBOT1RFOiBOYW1lZCBnZXR0ZXJzIGFyZSBsaXR0
bGUgb2RkLiBUbyBhdm9pZCBkb2luZyBkdXBsaWNhdGUgbG9va3VwcyAob25jZSB3aGVuIGNoZWNr
aW5nIGlmCi0gICAgIyAgICAgICB0aGUgcHJvcGVydHkgbmFtZSBpcyBhICdzdXBwb3J0ZWQgcHJv
cGVydHkgbmFtZScgYW5kIG9uY2UgdG8gZ2V0IHRoZSB2YWx1ZSkgd2Ugc2lnbmFsCi0gICAgIyAg
ICAgICB0aGF0IGEgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGJ5IHdoZXRoZXIgb3Igbm90IGl0IGlz
ICdudWxsJyAod2hlcmUgd2hhdCBudWxsIG1lYW5zIGlzCi0gICAgIyAgICAgICBkZXBlbmRhbnQg
b24gdGhlIElETCB0eXBlKS4gVGhpcyBpcyBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IG5v
IG5hbWVkIGdldHRlciB3aWxsCi0gICAgIyAgICAgICBldmVyIGFjdHVhbGx5IHdhbnQgdG8gcmV0
dXJuIG51bGwgYXMgYW4gYWN0dWFsIHJldHVybiB2YWx1ZSwgd2hpY2ggc2VlbXMgbGlrZSBhbiBv
awotICAgICMgICAgICAgYXNzdW1wdGlvbiB0byBtYWtlIChzaG91bGQgaXQgdHVybiBvdXQgdGhp
cyBkb2Vzbid0IGhvbGQgaW4gdGhlIGZ1dHVyZSwgd2UgaGF2ZSBsb3RzCi0gICAgIyAgICAgICBv
ZiBvcHRpb25zOyBkbyB0d28gbG9va3VwcywgYWRkIGFuIGV4dHJhIGxheWVyIG9mIE9wdGlvbmFs
LCBldGMuKS4KLSAgICAKLSAgICBteSAkcmVzdWx0VHlwZSA9ICJ0eXBlbmFtZSAke0lETFR5cGV9
OjpJbXBsZW1lbnRhdGlvblR5cGUiOwotICAgICRyZXN1bHRUeXBlID0gIkV4Y2VwdGlvbk9yPCIg
LiAkcmVzdWx0VHlwZSAuICI+IiBpZiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKLSAgICBteSAkcmV0dXJuVHlwZSA9ICJPcHRp
b25hbDwiIC4gJHJlc3VsdFR5cGUgLiAiPiI7Ci0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVy
dHlOYW1lKSAtPiAke3JldHVyblR5cGV9IHtcbiIpOwotCiAgICAgbXkgQGFyZ3VtZW50cyA9IEdl
bmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgIldURjo6bnVsbG9wdCIs
ICJ0aGlzT2JqZWN0IiwgIiAgICAgICAgIik7CiAgICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkiKTsKIAotICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS4ke25hbWVk
R2V0dGVyRnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7
Ci0gICAgCi0gICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TWF5VGhyb3dFeGNlcHRpb259KSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSlcbiIpOwotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gJHtyZXN1bHRUeXBlfSB7IHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkgfTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIGlmICghJHtJRExUeXBlfTo6aXNOdWxsVmFsdWUocmVzdWx0LnJldHVyblZhbHVlKCkpKVxu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiAke3Jl
c3VsdFR5cGV9IHsgJHtJRExUeXBlfTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSkgfTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7XG4iKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghJHtJRExUeXBlfTo6aXNOdWxsVmFs
dWUocmVzdWx0KSlcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAg
ICByZXR1cm4gJHtyZXN1bHRUeXBlfSB7ICR7SURMVHlwZX06OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0O1xuIik7Ci0gICAgfQotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rvcjwke0lETFR5
cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOworICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLiR7bmFtZWRH
ZXR0ZXJGdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4iKTsKIH0KIAogIyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWdldG93bnByb3Bl
cnR5CkBAIC04ODUsMTggKzg2MCwxOSBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QK
ICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOwogICAg
IAogICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21H
ZXRPd25Qcm9wZXJ0eVNsb3R9OwotICAgIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wg
JHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7Ci0g
ICAgCisKICAgICBteSAkbmFtZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZEdldHRlck9wZXJh
dGlvbigkaW50ZXJmYWNlKTsKICAgICBteSAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiA9IEdldElu
ZGV4ZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7Ci0gICAgCi0gICAgaWYgKCgkbmFtZWRH
ZXR0ZXJPcGVyYXRpb24gJiYgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0pIHx8ICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbiAmJiAk
aW5kZXhlZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNl
cHRpb259KSkgeworCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisKKyAgICBpZiAo
JG5hbWVkR2V0dGVyT3BlcmF0aW9uIHx8ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uKSB7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgfQor
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAg
ICAKICAgICAjIE5PVEU6IFRoZSBhbG9naXRobSBmb3IgW1tHZXRPd25Qcm9wZXJ0eV1dIGNvbnRh
aW5zIG9ubHkgdGhlIGZvbGxvd2luZyBzdGVwOgogICAgICMgMS4gUmV0dXJuIExlZ2FjeVBsYXRm
b3JtT2JqZWN0R2V0T3duUHJvcGVydHkoTywgUCwgZmFsc2UpLgpAQCAtOTE4LDcgKzg5NCw3IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdAogICAgICAgICBteSAoJG5hdGl2ZVRvSlND
b252ZXJzaW9uLCAkYXR0cmlidXRlU3RyaW5nKSA9IEdlbmVyYXRlSW5kZXhlZEdldHRlcigkaW50
ZXJmYWNlLCAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiwgImluZGV4LnZhbHVlKCkiKTsKICAgICAg
ICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSAke25hdGl2ZVRvSlNDb252ZXJzaW9ufTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtc
biIpIGlmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlU
aHJvd0V4Y2VwdGlvbn07CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CiAgICAgICAgIAog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsICR7YXR0cmlidXRlU3RyaW5nfSwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuIik7CkBAIC05NDYsNyAr
OTIyLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgIAogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9ICR7SURMVHlw
ZX07XG4iKTsKICAgICAgICAgCi0gICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91
dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRl
ckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5cGUiKTsKKyAgICAgICAgR2VuZXJhdGVOYW1lZEdl
dHRlckxhbWJkYSgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZEdl
dHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAiR2V0dGVySURMVHlwZSIp
OwogICAgICAgICAKICAgICAgICAgbXkgJG92ZXJyaWRlQnVpbHRpbiA9ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzIiA6ICJMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1
aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3RvcikpIHtcbiIpOwpAQCAtOTU2LDcgKzkzMiw3IEBAIHN1YiBHZW5lcmF0ZUdl
dE93blByb3BlcnR5U2xvdAogICAgICAgICBteSAoJG5hdGl2ZVRvSlNDb252ZXJzaW9uLCAkYXR0
cmlidXRlU3RyaW5nKSA9IEdlbmVyYXRlTmFtZWRHZXR0ZXIoJGludGVyZmFjZSwgJG5hbWVkR2V0
dGVyT3BlcmF0aW9uLCAiV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpIik7CiAgICAgICAg
IAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gdmFsdWUgPSAke25h
dGl2ZVRvSlNDb252ZXJzaW9ufTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIikgaWYgJG5h
bWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlv
bn07CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCAke2F0dHJpYnV0
ZVN0cmluZ30sIHZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHJldHVybiB0cnVlO1xuIik7CkBAIC0xMDAwLDE2ICs5NzYsMTUgQEAgc3ViIEdlbmVyYXRl
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7Ci0gICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntQbHVnaW59IHx8ICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbiAmJiAkaW5k
ZXhlZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRp
b259KSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CisKKyAg
ICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uIHx8ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uKSB7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgIH0KKwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7Ci0gICAgCi0gICAgaWYgKCgkbmFtZWRHZXR0
ZXJPcGVyYXRpb24gJiYgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntNYXlUaHJvd0V4Y2VwdGlvbn0pIHx8ICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbiAmJiAkaW5k
ZXhlZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRp
b259KSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICB9Ci0gICAgCisKICAgICAjIE5P
VEU6IFRoZSBhbG9naXRobSBmb3IgW1tHZXRPd25Qcm9wZXJ0eV1dIGNvbnRhaW5zIG9ubHkgdGhl
IGZvbGxvd2luZyBzdGVwOgogICAgICMgMS4gUmV0dXJuIExlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0
T3duUHJvcGVydHkoTywgUCwgZmFsc2UpLgogICAgIApAQCAtMTAzMCw3ICsxMDA1LDcgQEAgc3Vi
IEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgICAgICBteSAoJG5hdGl2ZVRv
SlNDb252ZXJzaW9uLCAkYXR0cmlidXRlU3RyaW5nKSA9IEdlbmVyYXRlSW5kZXhlZEdldHRlcigk
aW50ZXJmYWNlLCAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiwgImluZGV4Iik7CiAgICAgICAgIAog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBhdXRvIHZhbHVlID0gJHtu
YXRpdmVUb0pTQ29udmVyc2lvbn07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKSBp
ZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dF
eGNlcHRpb259OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOwogICAgICAgICAKICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCAke2F0dHJpYnV0ZVN0cmluZ30sIHZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwpAQCAtMTA2MCw3ICsxMDM1
LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgICAgICAKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSAke0lE
TFR5cGV9O1xuIik7CiAgICAgICAgIAotICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRh
KCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRH
ZXR0ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CisgICAgICAgIEdlbmVyYXRlTmFt
ZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5
cGUiKTsKICAgICAgICAgCiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIpID8gIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OlllcyIgOiAiTGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Tm8iOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PCR7b3ZlcnJp
ZGVCdWlsdGlufT4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7XG4iKTsKQEAgLTEwNzAsNyArMTA0NSw3IEBAIHN1YiBHZW5l
cmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgbXkgKCRuYXRpdmVUb0pTQ29u
dmVyc2lvbiwgJGF0dHJpYnV0ZVN0cmluZykgPSBHZW5lcmF0ZU5hbWVkR2V0dGVyKCRpbnRlcmZh
Y2UsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgIldURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSIpOwogCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byB2YWx1ZSA9
ICR7bmF0aXZlVG9KU0NvbnZlcnNpb259O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKSBp
ZiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhj
ZXB0aW9ufTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOwogICAgICAgICAKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsICR7YXR0
cmlidXRlU3RyaW5nfSwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTUyMjUsOSArNTIwMCw4IEBAIHN1YiBHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAgICBteSAkaGFzQ3VzdG9tR2V0dGVy
ID0gSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUpOwogICAgIG15ICRpc0V2ZW50SGFuZGxlciA9
ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciI7CiAgICAgbXkgJGlzQ29u
c3RydWN0b3IgPSAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+
dHlwZSk7Ci0gICAgbXkgJG5hdGl2ZVRvSlNWYWx1ZU1heVRocm93ID0gTmF0aXZlVG9KU1ZhbHVl
TWF5VGhyb3coJGF0dHJpYnV0ZSk7CiAKLSAgICBteSAkbmVlZFRocm93U2NvcGUgPSAkbmVlZFNl
Y3VyaXR5Q2hlY2sgfHwgKCEkaGFzQ3VzdG9tR2V0dGVyICYmICEkaXNFdmVudEhhbmRsZXIgJiYg
ISRpc0NvbnN0cnVjdG9yICYmICRuYXRpdmVUb0pTVmFsdWVNYXlUaHJvdyk7CisgICAgbXkgJG5l
ZWRUaHJvd1Njb3BlID0gJG5lZWRTZWN1cml0eUNoZWNrIHx8ICghJGhhc0N1c3RvbUdldHRlciAm
JiAhJGlzRXZlbnRIYW5kbGVyICYmICEkaXNDb25zdHJ1Y3Rvcik7CiAKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJzdGF0aWMgaW5saW5lIEpTVmFsdWUgJHthdHRyaWJ1dGVHZXR0ZXJCb2R5TmFt
ZX0oIiAuIGpvaW4oIiwgIiwgQHNpZ25hdHVyZUFyZ3VtZW50cykgLiAiKVxuIik7CiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CkBAIC01NzkwLDcgKzU3NjQsNiBAQCBzdWIgR2VuZXJh
dGVPcGVyYXRpb25EZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICR2YWx1
ZSk7CiAgICAgICAgIH0KICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwotICAgICAgICAkZnVuY3Rp
b25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0
aW9uQ2FsbCgkb3BlcmF0aW9uKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9w
ZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAiKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpIikgLiAiKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5c
biIpOwogCkBAIC02MDg1LDE1ICs2MDU4LDYgQEAgc3ViIFdpbGxDb252ZXJ0VW5kZWZpbmVkVG9E
ZWZhdWx0UGFyYW1ldAogICAgIHJldHVybiAwOwogfQogCi1zdWIgTmVlZHNFeHBsaWNpdFByb3Bh
Z2F0ZUV4Y2VwdGlvbkNhbGwKLXsKLSAgICBteSAoJG9wZXJhdGlvbikgPSBAXzsKLQotICAgIHJl
dHVybiAwIHVubGVzcyAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4
Y2VwdGlvbn07Ci0KLSAgICByZXR1cm4gJG9wZXJhdGlvbi0+dHlwZSAmJiAoJG9wZXJhdGlvbi0+
dHlwZS0+bmFtZSBlcSAidW5kZWZpbmVkIiB8fCAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlw
ZSgkb3BlcmF0aW9uLT50eXBlKSB8fCBHZXRPcGVyYXRpb25SZXR1cm5lZEFyZ3VtZW50TmFtZSgk
b3BlcmF0aW9uKSk7Ci19Ci0KIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogewogICAgIG15
ICgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZSwgJGluZGVudCkgPSBAXzsKQEAgLTYyMTUsMTAgKzYxNzksNyBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAogICAgIHB1c2goQGFyZ3VtZW50cywgIldURk1vdmUocHJv
bWlzZSkiKSBpZiAkb3BlcmF0aW9uLT50eXBlICYmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VU
eXBlKCRvcGVyYXRpb24tPnR5cGUpICYmICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntQcm9taXNlUHJveHl9OwogCi0gICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRmdW5jdGlvbk5h
bWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7Ci0gICAgJGZ1bmN0aW9uU3RyaW5n
ID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
JGZ1bmN0aW9uU3RyaW5nKSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwo
JG9wZXJhdGlvbik7Ci0KLSAgICByZXR1cm4gJGZ1bmN0aW9uU3RyaW5nOworICAgIHJldHVybiAi
JGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKIH0KIAogc3Vi
IEdlbmVyYXRlRGljdGlvbmFyeUhlYWRlcgpAQCAtNjY2NiwxNSArNjYyNyw5IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsCiAgICAgbXkgJGhhc1dyaXRlQmFycmllcnNG
b3JBcmd1bWVudHMgPSBHZW5lcmF0ZVdyaXRlQmFycmllcnNGb3JBcmd1bWVudHMoJG91dHB1dEFy
cmF5LCAkb3BlcmF0aW9uLCAkaW5kZW50LCAkZHJ5UnVuKTsKICAgICBteSAkcmV0dXJuQXJndW1l
bnROYW1lID0gR2V0T3BlcmF0aW9uUmV0dXJuZWRBcmd1bWVudE5hbWUoJG9wZXJhdGlvbik7CiAg
ICAgaWYgKCRyZXR1cm5Bcmd1bWVudE5hbWUpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAkaW5kZW50IC4gInRocm93U2NvcGUucmVsZWFzZSgpO1xuIikgaWYgKCRoYXNUaHJvd1Njb3Bl
KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmlu
ZztcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaW52b2tlRnVu
Y3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkoKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiAkZnVuY3Rpb25TdHJpbmc7IH0pO1xuIik7CiAgICAg
ICAgIEdlbmVyYXRlV3JpdGVCYXJyaWVyc0ZvckFyZ3VtZW50cygkb3V0cHV0QXJyYXksICRvcGVy
YXRpb24sICRpbmRlbnQpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAi
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkcmV0dXJuQXJndW1lbnROYW1lLnZhbHVlKCkpO1xuIik7
Ci0gICAgfSBlbHNpZiAoJG9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAidW5kZWZpbmVkIiB8fCAo
JGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJG9wZXJhdGlvbi0+dHlwZSkgJiYgISRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Byb21pc2VQcm94eX0pKSB7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJ0aHJvd1Njb3BlLnJlbGVhc2UoKTtcbiIpIGlm
ICgkaGFzVGhyb3dTY29wZSk7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAu
ICIkZnVuY3Rpb25TdHJpbmc7XG4iKTsKLSAgICAgICAgR2VuZXJhdGVXcml0ZUJhcnJpZXJzRm9y
QXJndW1lbnRzKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGluZGVudCk7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbXkgJGdsb2JhbE9iamVjdFJl
ZmVyZW5jZSA9ICRvcGVyYXRpb24tPmlzU3RhdGljID8gIipqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSIgOiAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
IjsKICAgICAgICAgaWYgKCRoYXNXcml0ZUJhcnJpZXJzRm9yQXJndW1lbnRzKSB7CkBAIC02Njgy
LDEwICs2NjM3LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJGhhc1Rocm93U2NvcGU7
CiAgICAgICAgICAgICBHZW5lcmF0ZVdyaXRlQmFycmllcnNGb3JBcmd1bWVudHMoJG91dHB1dEFy
cmF5LCAkb3BlcmF0aW9uLCAkaW5kZW50KTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGluZGVudCAuICJyZXR1cm4gcmVzdWx0O1xuIik7Ci0gICAgICAgIH0gZWxzaWYgKCRoYXNU
aHJvd1Njb3BlKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAi
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSgiIC4gTmF0aXZl
VG9KU1ZhbHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25T
dHJpbmcsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpIC4gIikpO1xuIik7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAicmV0dXJuIEpT
VmFsdWU6OmVuY29kZSgiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9u
LCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpIC4g
Iik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKCIgLiBOYXRpdmVUb0pT
VmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmlu
ZywgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgLiAiKSk7XG4iKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTcxOTUsNyArNzE0OCw3IEBAIHN1YiBJc1ZhbGlkQ29udGV4dEZvck5hdGl2ZVRvSlNW
YWx1ZQogc3ViIE5hdGl2ZVRvSlNWYWx1ZU1heVRocm93CiB7CiAgICAgbXkgKCRjb250ZXh0KSA9
IEBfOwotICAgIG15ICRtYXlUaHJvd0V4Y2VwdGlvbiA9IHJlZigkY29udGV4dCkgZXEgIklETEF0
dHJpYnV0ZSIgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0
aW9ufTsKKyAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSByZWYoJGNvbnRleHQpIGVxICJJRExB
dHRyaWJ1dGUiIHx8IHJlZigkY29udGV4dCkgZXEgIklETE9wZXJhdGlvbiI7CiB9CiAKIHN1YiBO
YXRpdmVUb0pTVmFsdWUKQEAgLTcyMjUsMTIgKzcxNzgsMTkgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogCiAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKIAor
ICAgICMgRklYTUU6IE5vdCBhbGwgcHJvbWlzZSB0eXBlcyByZXF1aXJlIHRoZSBmdW5jdG9yIHdy
YXBwaW5nIChzb21lIGF0dHJpYnV0ZSBnZXR0ZXJzIGFjdHVhbGx5IHJldHVybiBhIHZhbHVlKQor
ICAgICMgYnV0IHdyYXBwaW5nIGlzIGEgbm8tb3AsIHNvIGZpeGluZyB0aGlzIHdvdWxkIHB1cmVs
eSBiZSBhIHN0eWxpc3RpYyAvIGNvbXBpbGUgdGltZSBmaXguCisgICAgbXkgJG5lZWRzRnVuY3Rv
cldyYXBwaW5nID0gJHR5cGUtPm5hbWUgZXEgInVuZGVmaW5lZCIgfHwgJGNvZGVHZW5lcmF0b3It
PklzUHJvbWlzZVR5cGUoJHR5cGUpOworCiAgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAo
KTsKICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAkbGV4aWNhbEdsb2JhbE9iamVjdFJl
ZmVyZW5jZSkgaWYgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzU3RhdGUoJHR5cGUpIHx8
ICRtYXlUaHJvd0V4Y2VwdGlvbjsKICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAkZ2xv
YmFsT2JqZWN0UmVmZXJlbmNlKSBpZiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNHbG9i
YWxPYmplY3QoJHR5cGUpOwogICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICJ0aHJvd1Nj
b3BlIikgaWYgJG1heVRocm93RXhjZXB0aW9uOwotICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVu
dHMsICR2YWx1ZSk7Ci0KKyAgICBpZiAoJG5lZWRzRnVuY3RvcldyYXBwaW5nKSB7CisgICAgICAg
IHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICJbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiAkdmFsdWU7IH0iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEBjb252ZXJzaW9u
QXJndW1lbnRzLCAiJHZhbHVlIik7CisgICAgfQogICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkY29u
dGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmV3T2JqZWN0fSA/ICJ0b0pTTmV3bHlDcmVhdGVk
IiA6ICJ0b0pTIjsKIAogICAgIHJldHVybiAiJHtmdW5jdGlvbk5hbWV9PCR7SURMVHlwZX0+KCIg
LiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMzgwLDkgKzM4MCw2IEBACiAgICAgICAgICJN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6
IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAgICAgICAgIk1heVRocm93RXhjZXB0aW9uIjog
ewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlv
biJdCi0gICAgICAgIH0sCiAgICAgICAgICJOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2lu
dHMiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAg
ICAgICB9LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJ
bnRlcmZhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAg
ICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgVGVzdEludGVyZmFjZSB7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3Rv
cihET01TdHJpbmcgc3RyMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cjIgPSAiZGVmYXVsdFN0cmlu
ZyIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihE
T01TdHJpbmcgc3RyMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cjIgPSAiZGVmYXVsdFN0cmluZyIp
OwogCiAgICAgaXRlcmFibGU8VGVzdE5vZGUsIFRlc3RPYmo+OwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogICAgIHN0YXRpYyBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHN0YXRpY1N0cmluZ0F0dHJpYnV0ZTsKIAogICAgIHVuZGVmaW5lZCB2
b2lkT3BlcmF0aW9uKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1h
eVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIHRocm93aW5nT3BlcmF0aW9uKERPTVN0cmluZyBzdHJB
cmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBbQ3VzdG9tXSB1bmRlZmluZWQgY3VzdG9tT3BlcmF0
aW9uKCk7CiAgICAgc3RhdGljIHVuZGVmaW5lZCBzdGF0aWNPcGVyYXRpb24oKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkludGVyZmFjZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RNaXhpbkludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TWl4aW5JbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBACiAgICAgYXR0cmlidXRlIE5vZGUgbWl4aW5Ob2RlQXR0cmli
dXRlOwogCiAgICAgdW5kZWZpbmVkIG1peGluT3BlcmF0aW9uKCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIG1peGluQ29t
cGxleE9wZXJhdGlvbihET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFRlc3RPYmogbWl4aW5Db21wbGV4T3BlcmF0
aW9uKERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBbQ3VzdG9tXSB1bmRl
ZmluZWQgbWl4aW5DdXN0b21PcGVyYXRpb24oKTsKICAgICBbQ29uZGl0aW9uYWw9Q29uZGl0aW9u
MTFdIHVuZGVmaW5lZCBtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgW0VuYWJsZWRC
eVNldHRpbmc9VGVzdFNldHRpbmddIHVuZGVmaW5lZCBtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxP
cGVyYXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcg
KzE1NSw2IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB1
bmRlZmluZWQgbWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKFRlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24gZW51bUFyZyk7CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhPcHRpb25hbEVudW1Bcmco
b3B0aW9uYWwgVGVzdEVudW1UeXBlIGVudW1BcmcpOwogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRo
T3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKG9wdGlvbmFsIFRlc3RFbnVtVHlwZSBlbnVt
QXJnID0gIkVudW1WYWx1ZTEiKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogbWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhET01TdHJpbmcgc3RyQXJnLCBUZXN0T2Jq
IG9iakFyZyk7CiAKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhVU1ZTdHJp
bmcgc3RyKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFVT
VlN0cmluZz8gc3RyKTsKQEAgLTE2OSwxMSArMTY4LDYgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7
ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhSZWNvcmQocmVj
b3JkPERPTVN0cmluZywgbG9uZz4gcmVjb3JkUGFyYW1ldGVyKTsKIAotICAgIC8vIEV4Y2VwdGlv
bnMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBtZXRob2RXaXRoRXhjZXB0aW9u
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIG1ldGhvZFdpdGhFeGNlcHRpb25SZXR1
cm5pbmdMb25nKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIG1ldGhvZFdpdGhF
eGNlcHRpb25SZXR1cm5pbmdPYmplY3QoKTsKLQogICAgIC8vICdDdXN0b20nIGV4dGVuZGVkIGF0
dHJpYnV0ZQogICAgIFtDdXN0b21dIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgY3VzdG9tQXR0
cjsKICAgICBbQ3VzdG9tXSB1bmRlZmluZWQgY3VzdG9tTWV0aG9kKCk7CkBAIC0xOTcsMTEgKzE5
MSw4IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICAvLyAn
Q2FsbFdpdGgnIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3Rd
IHVuZGVmaW5lZCB3aXRoRXhlY1N0YXRlVm9pZCgpOwogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmpl
Y3RdIFRlc3RPYmogd2l0aEV4ZWNTdGF0ZU9iaigpOwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgd2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRp
b24oKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVz
dE9iaiB3aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHVuZGVmaW5lZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JkV4ZWNTdGF0ZV0gdW5kZWZpbmVk
IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKCk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmRXhlY1N0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVz
dE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbigp
OwogICAgIFtDYWxsV2l0aD0gIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgICYgIEV4ZWNTdGF0ZSAg
XSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNl
cygpOwogICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIHdpdGhEb2N1bWVudEFyZ3Vt
ZW50KCk7CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQgd2l0aENh
bGxlckRvY3VtZW50QXJndW1lbnQoKTsKQEAgLTM0Miw4ICszMzMsOCBAQCBlbnVtIFRlc3RDb25m
aWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgdW5kZWZpbmVkIGNsYXNzTWV0aG9kV2l0
aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwob3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gbG9uZyBvYmpB
cmdzTG9uZyA9IDApOwogCiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1
ZW5jZShzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxET01TdHJpbmc+IHN0cmluZ0FycmF5RnVuY3Rp
b24oc2VxdWVuY2U8RE9NU3RyaW5nPiB2YWx1ZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RE9NU3RyaW5nTGlzdCBkb21TdHJpbmdMaXN0RnVuY3Rpb24oRE9NU3RyaW5nTGlzdCB2YWx1ZXMp
OworICAgIHNlcXVlbmNlPERPTVN0cmluZz4gc3RyaW5nQXJyYXlGdW5jdGlvbihzZXF1ZW5jZTxE
T01TdHJpbmc+IHZhbHVlcyk7CisgICAgRE9NU3RyaW5nTGlzdCBkb21TdHJpbmdMaXN0RnVuY3Rp
b24oRE9NU3RyaW5nTGlzdCB2YWx1ZXMpOwogCiAgICAgdW5kZWZpbmVkIG9wZXJhdGlvbldpdGhP
cHRpb25hbFVuaW9uUGFyYW1ldGVyKG9wdGlvbmFsIChET01TdHJpbmcgb3Igc2VxdWVuY2U8dW5y
ZXN0cmljdGVkIGRvdWJsZT4pIG9wdGlvbmFsVW5pb24pOwogCkBAIC0zNTIsNyArMzQzLDcgQEAg
ZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIEVsZW1lbnQ/IGdl
dEVsZW1lbnRCeUlkKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIGVsZW1l
bnRJZCk7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
b2N1bWVudCBjb250ZW50RG9jdW1lbnQ7Ci0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1
cml0eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiAKICAgICB1bmRlZmluZWQg
Y29udmVydDEoVGVzdE5vZGUgdmFsdWUpOwogICAgIHVuZGVmaW5lZCBjb252ZXJ0MihUZXN0Tm9k
ZT8gdmFsdWUpOwpAQCAtNDEzLDEyICs0MDQsMTAgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJo
aWdoIiwgImtpbmRhLWxvdwogICAgIC8vIFByb21pc2UgZnVuY3Rpb24KICAgICBQcm9taXNlPHVu
ZGVmaW5lZD4gdGVzdFByb21pc2VGdW5jdGlvbigpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiB0
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoZmxvYXQgYSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBQcm9taXNlPHVuZGVmaW5lZD4gdGVzdFByb21pc2VGdW5jdGlvbldpdGhF
eGNlcHRpb24oKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gdGVzdFByb21pc2VGdW5jdGlvbldp
dGhPcHRpb25hbEludEFyZ3VtZW50KG9wdGlvbmFsIGxvbmcgYSk7CiAgICAgUHJvbWlzZTx1bmRl
ZmluZWQ+IHRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKGZsb2F0IGEpOwogICAgIFByb21p
c2U8dW5kZWZpbmVkPiB0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihGZXRjaFJlcXVlc3Qg
cmVxdWVzdCk7CiAgICAgc3RhdGljIFByb21pc2U8dW5kZWZpbmVkPiB0ZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBzdGF0aWMgUHJvbWlzZTx1bmRl
ZmluZWQ+IHRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKCk7CiAgICAgW0N1
c3RvbV0gUHJvbWlzZTx1bmRlZmluZWQ+IHRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24oKTsKICAg
ICBbQ3VzdG9tXSBzdGF0aWMgUHJvbWlzZTx1bmRlZmluZWQ+IHRlc3RTdGF0aWNDdXN0b21Qcm9t
aXNlRnVuY3Rpb24oKTsKICAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlzZTx1
bmRlZmluZWQ+IHRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKCk7CkBAIC00NDMs
NyArNDMyLDYgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAg
IHVuZGVmaW5lZCBidWZmZXJTb3VyY2VQYXJhbWV0ZXIoQnVmZmVyU291cmNlIGRhdGEpOwogCiAg
ICAgTm9kZSB0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oW1JldHVyblZhbHVlXSBOb2RlIGEs
IE5vZGUgYik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlIHRlc3RSZXR1cm5WYWx1ZU9w
dGltaXphdGlvbldpdGhFeGNlcHRpb24oW1JldHVyblZhbHVlXSBOb2RlIGEsIE5vZGUgYik7CiAK
ICAgICBbRXhwb3NlZD1XaW5kb3ddIGF0dHJpYnV0ZSBsb25nIGNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9XaW5kb3dBdHRyaWJ1dGU7CiAgICAgW0V4cG9zZWQ9V29ya2VyXSBhdHRyaWJ1dGUgbG9uZyBj
b25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFs
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBACiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgcmVmbGVjdEF0dHJpYnV0ZTsK
IAogICAgIHVuZGVmaW5lZCBzdXBwbGVtZW50YWxNZXRob2QxKCk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIHN1cHBsZW1l
bnRhbE1ldGhvZDIoRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBUZXN0T2JqIHN1cHBsZW1lbnRhbE1ldGhvZDIo
RE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFtDdXN0b21dIHVuZGVmaW5l
ZCBzdXBwbGVtZW50YWxNZXRob2QzKCk7CiAgICAgc3RhdGljIHVuZGVmaW5lZCBzdXBwbGVtZW50
YWxNZXRob2Q0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0VHlwZWRlZnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0VHlwZWRlZnMuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsMTQgKzYzLDExIEBACiAKICAgICBTVkdQT0lOVCBwb2ludEZ1bmN0aW9u
KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNFUVVFTkNFX09GX1NUUklOR1Mgc3RyaW5n
U2VxdWVuY2VGdW5jdGlvbihTRVFVRU5DRV9PRl9TVFJJTkdTIHZhbHVlcyk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxTVFJJTkc+IHN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKHNl
cXVlbmNlPFNUUklORz4gdmFsdWVzKTsKKyAgICBTRVFVRU5DRV9PRl9TVFJJTkdTIHN0cmluZ1Nl
cXVlbmNlRnVuY3Rpb24oU0VRVUVOQ0VfT0ZfU1RSSU5HUyB2YWx1ZXMpOworICAgIHNlcXVlbmNl
PFNUUklORz4gc3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoc2VxdWVuY2U8U1RSSU5HPiB2YWx1ZXMp
OwogCiAgICAgYm9vbGVhbiBjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShzZXF1
ZW5jZTxUZXN0RXZlbnRUYXJnZXQ+IHNlcXVlbmNlQXJnKTsKIAotICAgIC8vIEV4Y2VwdGlvbnMK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBtZXRob2RXaXRoRXhjZXB0aW9uKCk7
Ci0KICAgICAvLyBCdWlsdGluIFR5cGVkZWZzCiAgICAgYXR0cmlidXRlIEJ1ZmZlclNvdXJjZSBi
dWZmZXJTb3VyY2VBdHRyOwogICAgIGF0dHJpYnV0ZSBET01UaW1lU3RhbXAgZG9tVGltZVN0YW1w
QXR0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDcgKzIzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG8KICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRGljdGlvbmFyeTxF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OkRpY3Q+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmRvU29tZXRoaW5nKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERpY3Rp
b25hcnk8RXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjpEaWN0Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5kb1NvbWV0
aGluZygpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3dQcm90b3R5cGVGdW5jdGlvbl9kb1NvbWV0aGluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxMCw5ICs0MTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2soKmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ0VSZWFjdGlvbnMoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDRVJlYWN0aW9ucygpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoQ0VSZWFjdGlvbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNDI4LDkgKzQyNiw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkU2NvcGUgY3VzdG9tRWxlbWVudFJl
YWN0aW9uRGlzYWxsb3dlZFNjb3BlOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ0VS
ZWFjdGlvbnNOb3ROZWVkZWQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDRVJlYWN0aW9u
c05vdE5lZWRlZCgpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVk
ZWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
LmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLnZhbHVlKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudmFsdWUoKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw5ICsz
NTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5o
YXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSJf
cyk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uSW50
ZXJmYWNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uSW50ZXJmYWNlKCk7IH0pKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25fdGVzdE9wZXJhdGlvbkludGVyZmFjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zNzAsOSArMzY4LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZl
VGVzdE9wZXJhdGlvbkNhbGxUcmFjZXIoKSkpCiAgICAgICAgIFRlc3RPcGVyYXRpb25DYWxsVHJh
Y2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25TcGVjaWZpZWQiX3MpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9u
X3Rlc3RPcGVyYXRpb25TcGVjaWZpZWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNDAwLDkgKzM5Niw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhh
c0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50
cyJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIGEp
LCBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIGIpLCBUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIGMpIH0pOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMo
V1RGTW92ZShhKSwgV1RGTW92ZShiKSwgV1RGTW92ZShjKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0
T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpLCBXVEZNb3ZlKGMp
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC00MjQs
OSArNDE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
aWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCiAg
ICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RP
cGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNl
cjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5vZGVOdWxsYWJsZUFyZykgfSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1l
bnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRp
b25XaXRoTnVsbGFibGVBcmd1bWVudChXVEZNb3ZlKG5vZGVOdWxsYWJsZUFyZykpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uX3Rlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC00NDgsOSAr
NDQwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYg
KFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCiAgICAg
ICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVy
YXRpb25XaXRoVmFyaWFudEFyZ3VtZW50Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpw
cm9jZXNzQXJndW1lbnQoaW1wbCwgdmFyaWFudEFyZykgfSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1bWVudChXVEZNb3Zl
KHZhcmlhbnRBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFy
Z3VtZW50KFdURk1vdmUodmFyaWFudEFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpb25X
aXRoVmFyaWFudEFyZ3VtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTQ3Miw5ICs0NjIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3Rp
dmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxU
cmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlh
bnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50
KGltcGwsIHZhcmlhbnROdWxsYWJsZUFyZykgfSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KFdURk1v
dmUodmFyaWFudE51bGxhYmxlQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0
aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE51bGxhYmxlQXJnKSk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90
eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC00OTQsOSArNDgyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFj
ZXIoKSkpCiAgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1w
bCwgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdElu
dGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50T3B0aW9uYWxB
cmcpIH0pOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdE9wZXJhdGlv
bldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFyZykp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRp
b25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTE2LDkgKzUwMiw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWShp
bXBsLmhhc0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0SW50
ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aERl
ZmF1bHRWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nl
c3NBcmd1bWVudChpbXBsLCB2YXJpYW50RGVmYXVsdEFyZykgfSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1l
bnQoV1RGTW92ZSh2YXJpYW50RGVmYXVsdEFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJh
dGlvbldpdGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudERlZmF1bHRBcmcp
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTQsOSAr
NjU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwubWl4aW5PcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1peGlu
T3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5PcGVyYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNzIwLDkgKzcxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvbl9taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc0MCw5ICs3MzYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZUZ1bmN0aW9uX21peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03
NjEsNyArNzU1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBpbXBsUmVzdWx0ID0gaW1wbC5taXhpblJlc3VsdEZpZWxk
T3BlcmF0aW9uKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3Vs
dC5ub2RlcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1v
dmUoaW1wbFJlc3VsdC5ub2RlcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5SZXN1bHRGaWVs
ZE9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC03NzksOSArNzczLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwucGFydGlhbE1peGlu
T3BlcmF0aW9uRnJvbVBhcnRpYWwoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnBhcnRpYWxNaXhpbk9wZXJh
dGlvbkZyb21QYXJ0aWFsKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fcGFydGlhbE1peGluT3Bl
cmF0aW9uRnJvbVBhcnRpYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNyArNDU1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdENvbmRpdGlvbmFsbAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9taXNlPElETERvdWJsZT4+KGxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBp
bXBsLnJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSgpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9taXNlPElETERv
dWJsZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnJ1bnRpbWVD
b25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSgpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50aW1l
Q29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQpAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbGwKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zZXR0aW5n
c0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMRG91YmxlPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2V0dGluZ3NDb25kaXRpb25h
bGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSgpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RET01KSVQuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA5Miw3ICsxMDkyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmdldEF0dHJpYnV0ZShXVEZN
b3ZlKG5hbWUpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25fZ2V0QXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTExMTMsNyArMTExMyw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihqc1Rlc3RET01KSVRQcm8KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERP
TVN0cmluZz46OmRpcmVjdENvbnZlcnQoKmxleGljYWxHbG9iYWxPYmplY3QsIGVuY29kZWROYW1l
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJp
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1l
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9N
U3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0QXR0cmli
dXRlKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9pdGVtQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKQEAgLTExMzEsNyArMTEzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHkgPSBjb252ZXJ0PElETFVuc2ln
bmVkU2hvcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1v
dmUoeSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9pdGVtLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTExNTQsNyArMTE1NCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihqc1Rlc3RET01KSVRQ
cm8KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8geSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFVuc2lnbmVkU2hvcnQ+
OjpkaXJlY3RDb252ZXJ0KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBlbmNvZGVkWSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuaXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25f
aGFzQXR0cmlidXRlQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTExNjQsNyArMTE2NCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5oYXNBdHRyaWJ1
dGUoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuaGFzQXR0cmlidXRlKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9oYXNBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTE4Myw3ICsx
MTgzLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKGpzVGVzdERPTUpJVFBybwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0dHJp
YnV0ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbl9nZXRFbGVtZW50QnlJZEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC0xMTk4
LDcgKzExOTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBjb252ZXJ0PElETFJlcXVpcmVzRXhp
c3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJ
ZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2dldEVsZW1lbnRC
eUlkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTEyMTksNyArMTIxOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihq
c1Rlc3RET01KSVRQcm8KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gZWxlbWVudElkID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMUmVxdWlyZXNF
eGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+OjpkaXJlY3RDb252ZXJ0KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBlbmNvZGVkRWxlbWVudElkKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92
ZShlbGVtZW50SWQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRl
cmZhY2U8RWxlbWVudD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50
SWQpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25fZ2V0RWxlbWVudHNCeU5hbWVCb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gZWxlbWVudE5hbWUgPSBjb252ZXJ0
PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5
TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkpKSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25f
Z2V0RWxlbWVudHNCeU5hbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKGpzVGVzdERPTUpJVFBybwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBlbGVtZW50TmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVy
dGVyPElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+OjpkaXJlY3RDb252ZXJ0KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBlbmNvZGVkRWxlbWVudE5hbWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUo
V1RGTW92ZShlbGVtZW50TmFtZSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RG
TW92ZShlbGVtZW50TmFtZSkpKSk7CiB9CiAKIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERPTUpJ
VDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWlu
U2VjdXJpdHkuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzQsOSArMjM0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gbmV4dENoaWxkID0gY29udmVydDxJRExJbnRl
cmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAibmV4dENoaWxkIiwgIlRlc3REb21haW5TZWN1cml0eSIsICJleGNpdGluZ0Z1bmN0
aW9uIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmV4
Y2l0aW5nRnVuY3Rpb24oKm5leHRDaGlsZCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5leGNpdGluZ0Z1bmN0
aW9uKCpuZXh0Q2hpbGQpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVGdW5jdGlvbl9leGNpdGluZ0Z1bmN0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTI1Niw5ICsyNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBtZXNzYWdlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnBvc3RNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZUZ1
bmN0aW9uX3Bvc3RNZXNzYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI3Nyw5ICsyNzMsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBwYXJh
bSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVk
TWV0aG9kKFdURk1vdmUocGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2Qo
V1RGTW92ZShwYXJhbSkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0
aG9kMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERvbWFpblNl
Y3VyaXR5Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTI5NSw5ICsyODksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAg
ICAgYXV0byBwYXJhbTIgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRU
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJwYXJhbTIiLCAiVGVzdERv
bWFpblNlY3VyaXR5IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiTm9kZSIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqcGFyYW0xLCAqcGFy
YW0yKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKnBhcmFtMSwgKnBhcmFtMik7
IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REb21h
aW5TZWN1cml0eVByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2RPdmVybG9hZERpc3Bh
dGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERvbWFpblNlY3Vy
aXR5Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQzLDkgKzQ0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVkQnlTZXR0aW5nT3BlcmF0
aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVkQnlTZXR0aW5n
T3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25fZW5hYmxl
ZEJ5U2V0dGluZ09wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwyNSArMTU1
LDI1IEBAIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG8KIAogYm9vbCBK
U1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1
dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4
LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0
ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50
ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1
ZSgpKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNl
PE5vZGU+OwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBh
dXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
LSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAg
ICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7
IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwg
SlNUZXN0RXZlbnRUYXJnZXQ+KFtdIChKU1Rlc3RFdmVudFRhcmdldCYgdGhpc09iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1
cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETElu
dGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xODMsMTEgKzE4MywxMyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Q
cm9wZXJ0eVNsCiBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RFdmVudFRhcmdldCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lO
REVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09i
amVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTk1LDE0ICsxOTcsMTIgQEAgYm9v
bCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbAogICAgIH0KICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsK
KyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3Nv
ckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQ+KFtdIChKU1Rlc3RFdmVu
dFRhcmdldCYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5
cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
aW5kZXggPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuaXRlbShXVEZNb3ZlKGluZGV4KSkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pdGVtKFdURk1vdmUoaW5kZXgpKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90
eXBlRnVuY3Rpb25faXRlbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsyMywx
NyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vi
c3BhY2VzLmgiCisjaW5jbHVkZSAiRE9NUHJvbWlzZVByb3h5LmgiCiAjaW5jbHVkZSAiRE9NV3Jh
cHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5o
IgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0UHJvbWlzZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCkBAIC0xNTY1LDkgKzE1NjgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0
byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
cmVndWxhck9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwucmVn
dWxhck9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9yZWd1bGFy
T3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTE1ODYsOSArMTU4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKICNlbmRp
ZgpAQCAtMTYwNCw5ICsxNjAzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKFdURk1v
dmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
KFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtMTY1Miw5ICsxNjQ5
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgVGVzdEdsb2JhbE9iamVjdDo6ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhXVEZN
b3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RHbG9iYWxPYmplY3Q6OmVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb25TdGF0aWMoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rp
b25fZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNjc2LDkgKzE2NzEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNjk4LDkgKzE2OTEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKFdU
Rk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC0xNzIwLDkgKzE3MTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExv
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVzRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuZW5h
YmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKFdURk1vdmUodGVz
dFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2VuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVzRW5hYmxlZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNzM4LDkgKzE3MjcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0
UHJpdmF0ZUZ1bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UHJpdmF0ZUZ1bmN0aW9uKCk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uX3Rlc3RQcml2YXRlRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTc1Nyw5ICsxNzQ0
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURM
RG91YmxlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jYWxj
dWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2NhbGN1
bGF0ZVNlY3JldFJlc3VsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNzc0LDcgKzE3NTksNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRTZWNy
ZXRCb29sZWFuKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2dldFNlY3JldEJvb2xlYW4sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTc5MCw3
ICsxNzc1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBs
LnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4o
KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25fdGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDExICsxNTMsMTMgQEAgdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZQog
CiBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5p
dGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNjcsMTEgKzE2OSwxNCBAQCBib29sIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdlCiAKIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewog
ICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUzLDExICsxNTMsMTMgQEAgdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
bwogCiBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChhdXRvIGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgp
IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTY3LDExICsxNjksMTQgQEAg
Ym9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpbwogCiBib29sIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8
PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndy
YXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVt
KGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjAsMTEgKzE2MCwxMyBAQCB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcjo6CiAKIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1
dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4
LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZh
bHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNzQsMTEgKzE3
NiwxNCBAQCBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6CiAKIGJvb2wg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4
IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRl
bShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0
ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0yODUsOSArMjkwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSwg
V1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGlu
ZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25faW5k
ZXhlZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3Myw5ICs4NzMsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5t
aXhpbk9wZXJhdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWl4aW5PcGVyYXRpb24oKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uX21peGluT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkzOSw5ICs5MzcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5t
aXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5taXhpbkNvbmRpdGlv
bmFsT3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbl9taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTk1OSw5ICs5NTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5taXhpblNldHRpbmdzQ29uZGl0aW9uYWxP
cGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJh
dGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTk4MCw3ICs5NzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGltcGxSZXN1bHQgPSBpbXBsLm1peGluUmVz
dWx0RmllbGRPcGVyYXRpb24oKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShp
bXBsUmVzdWx0Lm5vZGVzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgV1RGTW92ZShpbXBsUmVzdWx0Lm5vZGVzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX21peGluUmVzdWx0RmllbGRP
cGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtOTk4LDkgKzk5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnBhcnRpYWxNaXhpbk9w
ZXJhdGlvbkZyb21QYXJ0aWFsKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5wYXJ0aWFsTWl4aW5PcGVyYXRp
b25Gcm9tUGFydGlhbCgpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fcGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBh
cnRpYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMTAxOCw5ICsxMDEwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVt
ZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoaW1wbCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMShpbXBsKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX3N1
cHBsZW1lbnRhbE1ldGhvZDEsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTA4Myw5ICsxMDczLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBX
ZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1
cm4gV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JGdW5jdGlvbl9zdXBwbGVtZW50YWxNZXRob2Q0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpAQCAtNTQsNyArNTMsNiBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25fdm9pZE9wZXJhdGlvbik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX3Rocm93aW5nT3Bl
cmF0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fY3VzdG9tT3BlcmF0aW9uKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
Q29uc3RydWN0b3JGdW5jdGlvbl9zdGF0aWNPcGVyYXRpb24pOwogCkBAIC0xMTEsNyArMTA5LDYg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdExlZ2FjeQogICAgIHsgImN1c3Rv
bUdldHRlclNldHRlclN0cmluZ0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rf
Y3VzdG9tR2V0dGVyU2V0dGVyU3RyaW5nQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3RfY3VzdG9tR2V0dGVyU2V0dGVyU3RyaW5nQXR0cmlidXRlKSB9IH0sCiAgICAgeyAi
bm9kZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rfbm9kZUF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0X25vZGVBdHRyaWJ1dGUpIH0gfSwKICAgICB7
ICJ2b2lkT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1
bmN0aW9uX3ZvaWRPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAidGhyb3dp
bmdPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25fdGhyb3dpbmdPcGVyYXRpb24pLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAiY3VzdG9t
T3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9u
X2N1c3RvbU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJDT05TVEFOVDEi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIs
IE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICAgICB7ICJDT05TVEFOVDIiLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5v
SW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKQEAgLTMwMiw5ICsyOTksNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC52b2lkT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC52b2lkT3BlcmF0aW9uKCk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX3ZvaWRPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzEyLDMyICsz
MDcsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JCiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD46OmNhbGw8anNU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl92b2lkT3BlcmF0aW9u
Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ2b2lkT3BlcmF0aW9uIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX3Rocm93aW5nT3BlcmF0aW9uQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3Q+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxH
bG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0ckFyZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7
Ci0gICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJvYmpBcmciLCAi
VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IiwgInRocm93aW5nT3BlcmF0aW9uIiwgIlRlc3RP
YmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRocm93aW5nT3BlcmF0
aW9uKCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwotfQotCi1KU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVG
dW5jdGlvbl90aHJvd2luZ09wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD46OmNhbGw8anNUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl90aHJvd2luZ09wZXJhdGlvbkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGhyb3dpbmdPcGVyYXRpb24iKTsKLX0KLQog
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fY3VzdG9tT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Q+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKQEAgLTM1OCw5ICszMjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdDo6c3RhdGljT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpzdGF0aWNPcGVyYXRpb24oKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Q29uc3Ry
dWN0b3JGdW5jdGlvbl9zdGF0aWNPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsMTcgKzE2MiwxNiBAQCB2b2lkIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlc3RyCiAKIGJvb2wgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OwotICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4g
T3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJ
RExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0
eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4oW10gKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTE4MiwxOCArMTgxLDE3IEBAIGJvb2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Z2V0T3cKIGJvb2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRl
cklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0g
W10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVs
bFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Owor
ICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29y
RnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihbXSAo
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9k
ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjM3
LDcgKzIzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubmFt
ZWRJdGVtKFdURk1vdmUobmFtZSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwu
bmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uX25hbWVkSXRl
bSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KGZvcndhcmRHZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkR2V0VG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9nZXQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2Fy
ZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGZvcndhcmRIYXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hhcywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNTUs
NyArMjU1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihm
b3J3YXJkRW50cmllc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
KmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjY5LDcgKzI2OSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNU
b01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNU
b01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbl9rZXlzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX3ZhbHVlcywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFu
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndh
cmRGb3JFYWNoVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlv
bl9mb3JFYWNoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oZm9yd2FyZFNldFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSwgV1RGTW92ZSh2YWx1ZSkpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkU2V0VG9NYXBMaWtl
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpLCBXVEZNb3ZlKHZhbHVlKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMzOCw5ICszMzgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGZvcndhcmRDbGVhclRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZv
cndhcmRDbGVhclRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNh
c3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uX2NsZWFyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTM1OSw3ICszNTcsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0
byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmREZWxldGVUb01hcExpa2UoKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRGVsZXRlVG9NYXBM
aWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92
ZShrZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbl9kZWxldGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEs
OSArMjUxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwuY2xlYXIoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNsZWFyKCk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fY2xlYXIsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjcyLDcgKzI3
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRvTWFwTGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5
KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRH
ZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlz
LCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2dldCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC0yOTEsNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJk
SGFzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhp
cywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgZm9yd2FyZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVu
Y3Rpb25faGFzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTMwNSw3ICszMDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJv
dG90eXBlRnVuY3Rpb25fZW50cmllcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMTksNyArMzE3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkS2V5c1RvTWFwTGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2tleXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzMzLDcgKzMzMSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFw
TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkVmFsdWVzVG9N
YXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTM1Miw3ICszNTAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQW55PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNh
bGxiYWNrKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZv
cndhcmRGb3JFYWNoVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uX2ZvckVhY2gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzcxLDcgKzM2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEFueT4oZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmREZWxldGVUb01hcExpa2UoKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2RlbGV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NCwyNSArMTU0LDI1IEBAIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGkKIAogYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAg
ICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwor
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFs
dWUoKSkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICB1c2luZyBH
ZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtd
IChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxW
YWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1
bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyPihbXSAoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyJiB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xODIsMTEgKzE4MiwxMyBAQCBib29sIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5k
ZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhf
QVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgp
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4
KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAt
MTk0LDE0ICsxOTYsMTIgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aQogICAgIH0KICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0
ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9w
ZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNs
dHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52
YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwyNSArMTU0LDI1IEBAIHZvaWQgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKIAogYm9vbCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0
eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlm
ICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5h
bWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE4MiwxMSArMTgyLDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmcKIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b246OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgp
KSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTk0LDE0ICsxOTYs
MTIgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIH0KICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1
c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjpp
c051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nl
c3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24+KFtdIChKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5
cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsMjUgKzE2MywyNSBAQCB2b2lkIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVuCiAKIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1
ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShp
bmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25h
bDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6
OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFj
Y2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShh
dXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52
YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xOTEsMTEgKzE5MSwxMyBA
QCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiBib29sIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtF
TFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTIwMywxNCArMjA1LDEyIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW4KICAgICB9CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0
cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0
byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0g
ICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAg
ICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBH
ZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0g
dmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTM2MCw5ICszNjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBX
VEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUp
LCBXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9u
X25hbWVkU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTM4NSw5ICszODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmRleGVkU2V0dGVyKFdU
Rk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5pbmRleGVkU2V0
dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZUZ1bmN0aW9uX2luZGV4ZWRTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTcgKzE1MywxNiBA
QCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVzCiAKIGJvb2wgSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5h
bWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlw
ZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICgh
R2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVk
UHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciYgdGhp
c09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgewor
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE3MywxOCArMTcyLDE3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyOjpnZXQKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0
b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPihbXSAoSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMs
MTcgKzE1MywxNiBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiAK
IGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUg
PSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNP
YmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJ
RExUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4oW10gKEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTczLDE4ICsxNzIsMTcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbgogYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURM
RE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0
LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53
cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAg
ICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlw
ZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0
b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlw
ZSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KFtdIChKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDE3ICsxNTksMTYgQEAg
dm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogCiBib29sIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5
TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYg
KCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFt
ZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0
bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTE3OSwxOCArMTc4LDE3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXI6OmcKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4ob2JqZWN0
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAg
dXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0
b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFs
PHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBh
dXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6
aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNj
ZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyPihbXSAoSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXImIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNTYs
OSArMjU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5uYW1lZERlbGV0ZXIoV1RGTW92ZShuYW1lKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5uYW1lZERlbGV0ZXIoV1RGTW92ZShuYW1lKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uX25hbWVkRGVsZXRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwyNSArMTU0LDI1IEBA
IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIKIAogYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0
ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4oW10gKEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTgyLDExICsxODIsMTMg
QEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9
IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShp
bmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTk0LDE0ICsxOTYsMTIgQEAgYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAgIH0KICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0
b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+KFtd
IChKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciYgdGhpc09iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDE3ICsxNTMsMTYgQEAgdm9pZCBK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpkZXN0cm95KAogCiBib29sIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKj4ob2JqZWN0KTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNp
bmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRv
IHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbSh3b3JsZEZvckRPTU9iamVj
dCh0aGlzT2JqZWN0KSwgcHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwot
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPihbXSAoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCYg
dGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykg
eworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHdvcmxkRm9y
RE9NT2JqZWN0KHRoaXNPYmplY3QpLCBwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzMsMTggKzE3MiwxNyBA
QCBib29sIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByCiBib29sIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGgqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0s
IGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
PiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHdvcmxkRm9yRE9NT2JqZWN0KHRoaXNPYmplY3QpLCBwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUo
cmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9y
PEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+KFtdIChKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAt
PiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5u
YW1lZEl0ZW0od29ybGRGb3JET01PYmplY3QodGhpc09iamVjdCksIHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDE3ICsxNTMsMTYgQEAgdm9pZCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6ZGVzdAog
CiBib29sIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3Ry
aW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRv
IHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAg
ICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2
aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
ZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUo
YXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTE3MywxOCArMTcyLDE3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXI6OmdldE8KIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKj4ob2JqZWN0KTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNp
bmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRv
IHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNO
dWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07
CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNz
b3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPihb
XSAoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNP
YmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzQ3
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxNyArMTU5
LDE2IEBAIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGUKIAogYm9vbCBK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7
Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJv
cGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5n
ZXR0ZXJOYW1lKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAg
ICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNp
YmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBl
KGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldHRlck5hbWUo
cHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlm
IChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTc5LDE4ICsxNzgsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyOjpnZQogYm9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKj4ob2Jq
ZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAg
ICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1
bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlv
bmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldHRlck5hbWUocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5
cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRl
bUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyPihbXSAoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciYgdGhpc09iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICBy
ZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkuZ2V0dGVyTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0y
MzQsNyArMjMyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGltcGwuZ2V0dGVyTmFtZShXVEZNb3ZlKG5hbWUpKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXR0ZXJOYW1l
KFdURk1vdmUobmFtZSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uX2dldHRlck5hbWUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTMsMTcgKzE1MywxNiBAQCB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpk
ZXN0CiAKIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNs
dHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52
YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzMsMTggKzE3
MiwxNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiBib29sIEpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1
dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwot
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlw
ZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlm
IChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0
eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MywxNyArMTUzLDE2IEBAIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoK
IAogYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUg
PSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNP
YmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJ
RExUeXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53
cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTczLDE4ICsxNzIsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOgogYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNp
bmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRv
IHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNO
dWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07
CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNz
b3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24+KFtdIChKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uJiB0aGlzT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJl
dHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxNyArMTU5LDE2IEBAIHZvaWQgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGUKIAogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25h
bDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6
OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFj
Y2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1
cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTc5LDE4ICsxNzgsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyOjpnZQogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7
CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9w
dGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAg
ICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURM
VHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJ
dGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyJiB0aGlzT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTUsOSArMzEzLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubmFtZWRTZXR0ZXIo
V1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubmFtZWRTZXR0
ZXIoV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aW9uX25hbWVkU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDI1ICsxNjMsMjUgQEAg
dm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogCiBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0
dGVyKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vz
c29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciYgdGhpc09iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICBy
ZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTkxLDExICsxOTEsMTMgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7
CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewot
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5kZXgpKTsKKyAg
ICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0dGVyKGlu
ZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwMywxNCArMjA1LDEyIEBAIGJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICB9CiAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVy
SURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0
byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUo
cmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9y
PEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+KFtdIChK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0zNDAsOSArMzQwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShuYW1l
KSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubmFtZWRTZXR0ZXIoV1RGTW92ZShu
YW1lKSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uX25h
bWVkU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTM2Miw3ICszNjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZl
cnQ8SURMVW5zaWduZWRMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuaW5kZXhlZFNldHRl
cihXVEZNb3ZlKGluZGV4KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3ZlKGluZGV4KSkpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyUHJvdG90eXBlRnVuY3Rpb25faW5kZXhlZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MywyNSArMTYzLDI1IEBAIHZvaWQgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKIAogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhl
ZFNldHRlcihpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleC52YWx1ZSgpKSk7CisgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1
dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwot
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPihbXSAoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciYgdGhpc09iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhp
c09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
ewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTkxLDExICsxOTEsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQQogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlf
SU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5n
dGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5k
ZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVk
U2V0dGVyKGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtMjAzLDE0ICsyMDUsMTIgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQQogICAgIH0KICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5n
OwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHBy
b3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCku
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAg
ICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNp
YmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4oW10gKEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTM2MCw5ICszNjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBX
VEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUp
LCBXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25fbmFtZWRTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzgzLDkgKzM4MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFs
dWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmluZGV4ZWRTZXR0ZXIo
V1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmluZGV4ZWRT
ZXR0ZXIoV1RGTW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbl9pbmRleGVkU2V0dGVyMkJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtMzk4LDcgKzM5
NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pbmRleGVkU2V0
dGVyKFdURk1vdmUoaW5kZXgpKSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbl9pbmRleGVkU2V0dGVyT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDE3ICsxNTMsMTYgQEAgdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZQogCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KFtdIChKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMTczLDE4ICsxNzIsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZQogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0
eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlm
ICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5h
bWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KFtdIChKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzcsMTcgKzE3NywxNiBAQCB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhCiAKIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4g
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0
dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJv
cGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMTk3LDE4ICsxOTYsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYQogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1
dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwot
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KFtdIChKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMmIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM1MCw5ICszNDgsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC51bmZvcmdl
YWJsZU9wZXJhdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25fdW5mb3JnZWFibGVP
cGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTcgKzE3NywxNiBAQCB2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhCiAKIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0g
SURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2Jq
ZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQot
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1
bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURM
VHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olll
cz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xOTcsMTggKzE5NiwxNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBl
ID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlz
T2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09i
amVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQp
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVy
SURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMjcsOSArMzI1LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5m
b3JnZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9u
KCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
SW5zdGFuY2VGdW5jdGlvbl91bmZvcmdlYWJsZU9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUu
Y3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxNyBA
QAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCisjaW5jbHVkZSAiRE9NUHJvbWlzZVByb3h5LmgiCiAjaW5jbHVkZSAiSlNET01BdHRy
aWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIK
KyNpbmNsdWRlICJKU0RPTUNvbnZlcnRQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0
U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9NSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZS5oIgpAQCAtMzEyLDkgKzMxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RXb3JrZXJQcm9taXNl
KFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC50ZXN0V29ya2VyUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbl90ZXN0V29ya2VyUHJvbWlzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMjksOSArMzMxLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwuY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMRG91YmxlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jYWxjdWxhdGVTZWNyZXRS
ZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fY2FsY3VsYXRlU2VjcmV0UmVzdWx0LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJv
b2xlYW4+KGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fZ2V0
U2VjcmV0Qm9vbGVhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigp
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50
ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl90ZXN0RmVhdHVyZUdldFNlY3JldEJv
b2xlYW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDU1LDcgKzE0NTUsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVs
dFZhbHVlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOwpA
QCAtMTQ2NCw5ICsxNDYzLDYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNU
ZXN0Twogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX3NlcmlhbGl6ZWRWYWx1ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoUmVjb3JkKTsKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhv
ZFdpdGhFeGNlcHRpb24pOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCk7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jdXN0b21NZXRob2Qp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fY3VzdG9tTWV0aG9kV2l0aEFyZ3MpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcHJpdmF0ZU1ldGhvZCk7CkBAIC0xNDc1
LDExICsxNDcxLDggQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Twog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fcmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlVm9pZCk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRo
RXhlY1N0YXRlT2JqKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKTsKLXN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhF
eGVjU3RhdGVPYmpFeGNlcHRpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUpOwotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24pOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhEb2N1bWVu
dEFyZ3VtZW50KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3dpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KTsKQEAgLTE1NzYsMTEg
KzE1NjksOSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPCiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9h
bnkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aEZsb2F0QXJndW1lbnQpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
bik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rl
c3RDdXN0b21Qcm9taXNlRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1
bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3Rlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKTsKQEAgLTE1
OTMsNyArMTU4NCw2IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE8K
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX29wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYnVmZmVy
U291cmNlUGFyYW1ldGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbik7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90
ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV29y
a2VyRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1
bmN0aW9uKTsKQEAgLTE5MzQsNyArMTkyNCw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpDb24KICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2Vu
ZGlmCiAgICAgeyAidGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvbl90ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9
LAotICAgIHsgInRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0
aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RTdGF0aWNDdXN0b21Qcm9taXNl
RnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRpY0N1c3RvbVBy
b21pc2VGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKQEAgLTIxNzcsNyArMjE2
Niw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJt
ZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21l
dGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJt
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoT3B0aW9uYWxFbnVtQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhv
ZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUpLCAoaW50cHRy
X3QpICgwKSB9IH0sCi0gICAgeyAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cyksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoVVNWU3RyaW5nQXJn
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoVVNWU3RyaW5nQXJnKSwgKGlu
dHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJn
KSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RX
aXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgKDEp
IH0gfSwKQEAgLTIxODYsOSArMjE3NCw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RPYmpQcm8KICAgICB7ICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhCeXRlU3Ry
aW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAg
ICB7ICJzZXJpYWxpemVkVmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3NlcmlhbGl6
ZWRWYWx1ZSksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoUmVjb3JkIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoUmVjb3JkKSwgKGludHB0cl90KSAo
MSkgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAi
bWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKSwgKGludHB0cl90KSAoMCkgfSB9
LAotICAgIHsgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiY3VzdG9tTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9jdXN0b21NZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiY3VzdG9t
TWV0aG9kV2l0aEFyZ3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2N1c3RvbU1ldGhvZFdp
dGhBcmdzKSwgKGludHB0cl90KSAoMykgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24zKQpAQCAt
MjIwNiwxMSArMjE5MSw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm8KICAgICB7ICJyZW1vdmVFdmVudExpc3RlbmVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9yZW1vdmVFdmVudExpc3RlbmVyKSwgKGludHB0cl90KSAoMikgfSB9LAogICAgIHsgIndpdGhF
eGVjU3RhdGVWb2lkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlVm9p
ZCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ3aXRoRXhlY1N0YXRlT2JqIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlT2JqKSwgKGludHB0cl90KSAoMCkgfSB9
LAotICAgIHsgIndpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl93aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
LSAgICB7ICJ3aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl93aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAg
IHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUpLCAoaW50
cHRyX3QpICgwKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVj
U3RhdGVPYmpFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkg
fSB9LAogICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNw
YWNlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIndp
dGhEb2N1bWVudEFyZ3VtZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRG9jdW1l
bnRBcmd1bWVudCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ3aXRoQ2FsbGVyRG9jdW1l
bnRBcmd1bWVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aENhbGxlckRvY3VtZW50
QXJndW1lbnQpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0yMzA1LDcgKzIyODcsNiBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAiYW55Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9hbnkpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAidGVz
dFByb21pc2VGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VG
dW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aEZsb2F0QXJndW1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0s
CiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50
QXJndW1lbnQpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VPdmVybG9h
ZGVkRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInRlc3RDdXN0b21Qcm9t
aXNlRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RDdXN0b21Qcm9taXNl
RnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0yMzIxLDcgKzIzMDIsNiBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAib3BlcmF0aW9uV2l0
aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
b3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlciksIChpbnRwdHJfdCkgKDEp
IH0gfSwKICAgICB7ICJidWZmZXJTb3VyY2VQYXJhbWV0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX2J1ZmZlclNvdXJjZVBhcmFtZXRlciksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7
ICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X3Rlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKLSAgICB7
ICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl90ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uKSwg
KGludHB0cl90KSAoMikgfSB9LAogICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dG
dW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRU
b1dpbmRvd0Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29u
ZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAog
ICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdv
cmtlckZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtMjUwMCwxMSArMjQ4MCwxMyBA
QCB2b2lkIEpTVGVzdE9iajo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsCiAKIGJvb2wgSlNUZXN0
T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TE51bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKGluZGV4LnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
bnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQpAQCAtMjUxNCwxMSArMjQ5NiwxNCBAQCBib29sIEpTVGVzdE9iajo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqCiAKIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkp
IHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLm51bGxhYmxlU3Ry
aW5nU3BlY2lhbE1ldGhvZChpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5udWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoaW5k
ZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNTAwNiw3ICs0OTkxLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ial90ZXN0UmVhZAogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9taXNlPElE
TFVuZGVmaW5lZD4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZWFkT25seVZvaWRQcm9taXNlQXR0cmlidXRlKCkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8
SURMVW5kZWZpbmVkPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
dGVzdFJlYWRPbmx5Vm9pZFByb21pc2VBdHRyaWJ1dGUoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial90ZXN0UmVhZE9ubHlWb2lkUHJvbWlzZUF0dHJpYnV0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC01MDE5LDcgKzUwMDQsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqX3Rlc3RSZWFkCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMSW50
ZXJmYWNlPFRlc3ROb2RlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZWFkT25seVByb21pc2VBdHRyaWJ1dGUo
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlz
ZTxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwudGVzdFJlYWRPbmx5UHJvbWlzZUF0dHJpYnV0ZSgpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3Rlc3RSZWFkT25seVByb21pc2VBdHRy
aWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpAQCAtNTM4OSw5ICs1Mzc0LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
LmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkp
KTsKIH0KIAogI2VuZGlmCkBAIC01NDA3LDkgKzUzOTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB0ZXN0UGFyYW0g
PSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogI2VuZGlmCkBA
IC01NDU1LDkgKzU0MzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBUZXN0T2JqOjplbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
KFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6ZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvblN0YXRpYyhXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9lbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uU3RhdGljLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU0NzksOSArNTQ1OCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRv
IHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZW5hYmxl
ZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoV1RGTW92ZSh0ZXN0UGFy
YW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZl
YXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmFibGVkSW5TcGVjaWZp
Y1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NTAxLDkgKzU0NzgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLndvcmxkU3BlY2lmaWNNZXRob2QoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLndvcmxkU3BlY2lmaWNNZXRob2QoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dvcmxk
U3BlY2lmaWNNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTUxOCw5ICs1NDkzLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY2FsY3Vs
YXRlU2VjcmV0UmVzdWx0KFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMRG91YmxlPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RG
TW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jYWxjdWxhdGVTZWNyZXRSZXN1bHQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTUz
NSw3ICs1NTA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihp
bXBsLmdldFNlY3JldEJvb2xlYW4oKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0U2VjcmV0Qm9vbGVhbigpKSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZ2V0U2VjcmV0Qm9v
bGVhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC01NTUxLDcgKzU1MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RGZWF0
dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTU1NjgsOSArNTU0MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnVuZGVmaW5lZE1ldGhvZCgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwudW5kZWZpbmVkTWV0aG9kKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl91bmRlZmluZWRNZXRob2QsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtNTU5Niw5ICs1NTY3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRl
cmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSwg
W10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAidW5kZWZpbmVkTWV0aG9kV2l0aEFy
Z3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
dW5kZWZpbmVkTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcp
LCAqb2JqQXJnKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnVuZGVmaW5lZE1ldGhvZFdpdGhBcmdzKFdURk1v
dmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZyk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl91bmRlZmluZWRN
ZXRob2RXaXRoQXJncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NjEzLDcgKzU1ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1ldGhvZCgpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ieXRlTWV0aG9kKCkpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9ieXRl
TWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTU2MzksNyArNTYwOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQy
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RX
aXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KGltcGwuYnl0ZU1ldGhvZFdpdGhBcmdz
KFdURk1vdmUoYnl0ZUFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmJ5dGVNZXRob2RXaXRoQXJn
cyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYnl0ZU1l
dGhvZFdpdGhBcmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTU2NTQsNyArNTYyMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2QoKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm9jdGV0TWV0aG9kKCkpKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9v
Y3RldE1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC01NjgwLDcgKzU2NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgYXV0byBvYmpBcmcgPSBj
b252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvY3RldE1l
dGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRNZXRob2RX
aXRoQXJncyhXVEZNb3ZlKG9jdGV0QXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMT2N0ZXQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm9jdGV0TWV0
aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykp
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9vY3RldE1ldGhvZFdpdGhBcmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU2OTUsNyArNTY2NCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0aG9kKCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdNZXRob2Qo
KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX2xvbmdNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTcyMSw3ICs1NjkwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGF1dG8gb2Jq
QXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDIudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
bG9uZ01ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sb25nTWV0
aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubG9uZ01l
dGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykp
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9sb25nTWV0aG9kV2l0aEFyZ3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTczNiw3ICs1NzA1LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5vYmpNZXRob2QoKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29i
ak1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC01NzYyLDcgKzU3MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgYXV0byBvYmpBcmcgPSBjb252
ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2RX
aXRoQXJncyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRob2RX
aXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92
ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29iak1ldGhvZFdpdGhB
cmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTU3NzcsNyArNTc0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTG9uZz4oaW1wbC51bmZvcmdlYWJsZU1ldGhvZCgpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZU1ldGhvZCgpKSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvbl91
bmZvcmdlYWJsZU1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01Nzk3LDkgKzU3NjYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhcmcg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhXVEZNb3ZlKGFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEFyZ1RyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShhcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU4MTksOSArNTc4Niw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRv
IHJlc29sdmVyID0gY29udmVydDxJRExJbnRlcmZhY2U8WFBhdGhOU1Jlc29sdmVyPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJyZXNvbHZlciIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIiLCAiWFBh
dGhOU1Jlc29sdmVyIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKCpyZXNvbHZlcik7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5tZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKCpyZXNvbHZlcik7IH0pKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU4MzYsNyArNTgw
MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3Ry
aW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwubnVsbGFibGVTdHJpbmdNZXRob2QoKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwubnVsbGFibGVTdHJpbmdNZXRob2QoKSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX251bGxhYmxlU3RyaW5nTWV0
aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTU4NTAsNyArNTgxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJ
RExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgVGVzdE9iajo6
bnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fbnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNTg3MCw3ICs1ODM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0
PElETFVuc2lnbmVkTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5u
dWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoV1RGTW92ZShpbmRleCkpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJs
ZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5u
dWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoV1RGTW92ZShpbmRleCkpKSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbnVsbGFibGVT
dHJpbmdTcGVjaWFsTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU4OTAsOSArNTg1NSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGVu
dW1BcmcgPSBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVFbnVtRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJlbnVt
QXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0
aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhFbnVtQXJnKFdURk1vdmUoZW51bUFyZykpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoRW51bUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01OTEyLDkgKzU4NzUsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBlbnVt
QXJnID0gY29udmVydDxJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAs
ICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnIiwg
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPigpKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhTdGFuZGFs
b25lRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhT
dGFuZGFsb25lRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhTdGFu
ZGFsb25lRW51bUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01OTMyLDkgKzU4OTMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBlbnVtQXJnID0gYXJndW1l
bnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVtZXJh
dGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVy
dGVyPElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj46OlJldHVyblR5cGU+KGNvbnZl
cnQ8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUVu
dW1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImVudW1BcmciLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7IH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoV1RGTW92ZShlbnVtQXJn
KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU5NTIsOSArNTkx
MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBhdXRvIGVudW1BcmcgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gVGVzdE9i
ajo6RW51bVR5cGU6OkVudW1WYWx1ZTEgOiBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6
OkVudW1UeXBlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6RW51bVR5cGU+KCkpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKGVudW1Bcmcp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFs
dWUoV1RGTW92ZShlbnVtQXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5k
RGVmYXVsdFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTU5NjIsMjkgKzU5MTksNiBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEVu
dW1BcmdBbmREZWZhdWx0VmFsdWVCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NCb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBzdHJBcmcg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRl
cmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwg
W10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93cyIsICJUZXN0T2JqIik7IH0pOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgaW1wbC5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
LXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0JvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFVTVlN0cmluZ0FyZ0JvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpAQCAtNTk5Nyw5ICs1OTMxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExVU1ZT
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoV1RGTW92
ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoV1RGTW92ZShz
dHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVU1ZTdHJpbmdBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjAxOSw5ICs1OTUx
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoV1RGTW92
ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhX
VEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTYwNDEsOSArNTk3MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUo
c3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjA2Myw5ICs1OTkxLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IGF1dG8gc3RyID0gY29udmVydDxJRExCeXRlU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhCeXRl
U3RyaW5nQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTYwODUsOSArNjAxMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZl
cnQ8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21l
dGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjEwNyw5ICs2MDMxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgIGF1dG8gc3RyID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMQnl0ZVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhCeXRlU3RyaW5n
QXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1v
dmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtNjEyOSw5ICs2MDUxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc2VyaWFsaXplZEFy
ZyA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnNlcmlhbGl6ZWRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6
ZWRBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnNlcmlhbGl6ZWRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6
ZWRBcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3NlcmlhbGl6ZWRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MTUxLDkgKzYwNzEsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byByZWNvcmRQYXJhbWV0ZXIgPSBjb252ZXJ0PElETFJlY29yZDxJRExET01TdHJp
bmcsIElETExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoUmVjb3JkKFdURk1v
dmUocmVjb3JkUGFyYW1ldGVyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoUmVjb3JkKFdU
Rk1vdmUocmVjb3JkUGFyYW1ldGVyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoUmVjb3JkLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTYxNjEsNTMgKzYwNzksNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhSZWNvcmRCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhSZWNvcmQiKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhF
eGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbigp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aEV4Y2VwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb25Cb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsK
LX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdM
b25nKCkpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyIp
OwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdEJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCgpKSkp
OwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3RCb2R5PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3QiKTsK
LX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX2N1c3RvbU1ldGhvZEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtNjI0OCw3ICs2MTE5LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwogICAgIGF1dG8gYXJndW1lbnQgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpbXBsLnByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnByaXZhdGVNZXRo
b2QoV1RGTW92ZShhcmd1bWVudCkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcHJpdmF0ZU1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MjY4LDcg
KzYxMzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byBhcmd1bWVudCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGltcGwucHVibGljQW5kUHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3Vt
ZW50KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwucHVibGljQW5kUHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50KSkpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wdWJs
aWNBbmRQcml2YXRlTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYyOTQsMTAgKzYxNjUsMTAgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgIGF1dG8gdXNlQ2FwdHVy
ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuYWRkRXZlbnRMaXN0
ZW5lcihXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgV1RGTW92ZSh1c2VDYXB0dXJl
KSk7CisgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLmFkZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShs
aXN0ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOyB9KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcigmc3RhdGljX2Nhc3Q8SlNPYmplY3QmPigqY2FzdGVkVGhpcyksIGFyZ3VtZW50MS52YWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9hZGRFdmVudExpc3RlbmVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYzMjMsMTAgKzYxOTQsMTAg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgIGF1
dG8gdXNlQ2FwdHVyZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50Mi52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgV1RG
TW92ZSh1c2VDYXB0dXJlKSk7CisgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92
ZSh0eXBlKSwgV1RGTW92ZShsaXN0ZW5lciksIFdURk1vdmUodXNlQ2FwdHVyZSkpOyB9KSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcigmc3RhdGljX2Nhc3Q8SlNPYmplY3QmPigqY2FzdGVkVGhp
cyksIGFyZ3VtZW50MS52YWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9yZW1vdmVFdmVudExpc3RlbmVyLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTYzNDEsOSArNjIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLndpdGhFeGVjU3RhdGVWb2lkKCpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC53aXRoRXhlY1N0YXRlVm9pZCgqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEds
b2JhbE9iamVjdCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjM1OCw3ICs2
MjI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGlt
cGwud2l0aEV4ZWNTdGF0ZU9iaigqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEds
b2JhbE9iamVjdCkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aEV4
ZWNTdGF0ZU9iaigqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVj
dCkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZU9iaiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MzY2LDM4ICs2MjM1LDYgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhl
Y1N0YXRlT2JqQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ3aXRoRXhl
Y1N0YXRlT2JqIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbkJvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC53aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbigqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAid2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24i
KTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24oKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVPYmpFeGNlcHRp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9uQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ3aXRoRXhlY1N0YXRlT2JqRXhjZXB0aW9u
Iik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEJvZHkoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpA
QCAtNjQwOCw5ICs2MjQ1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhp
Y2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJ
S0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgqY29udGV4dCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgqY29udGV4dCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC02NDI4LDkgKzYyNjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYg
KFVOTElLRUxZKCFjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlKCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwgKmNvbnRleHQpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4
dCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBA
IC02NDM4LDI0ICs2MjcxLDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGUiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKLXsKLSAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
LndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uKCpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSwg
KmNvbnRleHQpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpF
eGNlcHRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24i
KTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNw
YWNlc0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpAQCAtNjQ2Niw3ICs2MjgxLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCkpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjQ4Niw5
ICs2MzAxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCpjb250ZXh0KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLndp
dGhEb2N1bWVudEFyZ3VtZW50KGRvY3VtZW50KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLndpdGhEb2N1bWVu
dEFyZ3VtZW50KGRvY3VtZW50KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhEb2N1bWVudEFyZ3VtZW50LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTY1MDYsOSArNjMxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBhdXRvKiBpbmN1bWJlbnREb2N1bWVudCA9IGluY3VtYmVudERPTVdpbmRvdygqanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUp
LmRvY3VtZW50KCk7CiAgICAgaWYgKCFpbmN1bWJlbnREb2N1bWVudCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLndpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KCppbmN1bWJlbnREb2N1bWVu
dCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC53aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCgqaW5jdW1iZW50
RG9jdW1lbnQpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fd2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjUy
Myw5ICs2MzM0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwud2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KGluY3VtYmVu
dERPTVdpbmRvdygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVj
dCksICpjYWxsRnJhbWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLndpdGhDYWxsZXJXaW5kb3dBcmd1bWVu
dChpbmN1bWJlbnRET01XaW5kb3coKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxH
bG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoQ2FsbGVyV2luZG93QXJndW1l
bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtNjU0Myw5ICs2MzUyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gb3B0ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6
IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJnKFdURk1vdmUob3B0
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBcmcoV1RGTW92ZShvcHQpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NTYzLDkgKzYzNzAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBv
cHQgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gNjY2IDogY29udmVydDxJRExM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0
VmFsdWUoV1RGTW92ZShvcHQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFy
Z0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFs
QXJnQW5kRGVmYXVsdFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY1ODgsOSArNjM5Myw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBhdXRvIG9wdCA9IGFyZ3Vt
ZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46
OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+
KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgp
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZE9wdGlvbmFsQXJnKFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKFdURk1v
dmUobm9uT3B0KSwgV1RGTW92ZShvcHQpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZE9wdGlvbmFsQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY2MTYsOSArNjQxOSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICBhdXRvIG9wdDIgPSBhcmd1bWVu
dDIudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpS
ZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdDEpLCBX
VEZNb3ZlKG9wdDIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJncyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUob3B0MSksIFdURk1vdmUo
b3B0MikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdz
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTY2MzYsOSArNjQzNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5k
ZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY2NTYsOSArNjQ1NSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFy
Z3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMVVNW
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmco
V1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmlu
ZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTY2NzYsOSArNjQ3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVk
KCkgPyBudWxsQXRvbSgpIDogY29udmVydDxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKFdU
Rk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
KFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTY2OTYsOSArNjQ5MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVk
KCkgPyAiZm9vIl9zIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKHN0cikpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdU
Rk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFs
dWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtNjcxNiw5ICs2NTA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/IEF0b21TdHJpbmcoImZvbyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRW
YWx1ZShXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZ0FuZERlZmF1bHRWYWx1ZShXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NzM2LDkgKzY1MjcsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0
byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc051bGwoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzTnVsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NzU2LDkgKzY1NDUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
SXNVbmRlZmluZWQoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzVW5kZWZpbmVkKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02Nzc2LDkgKzY1NjMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBh
cmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURM
QXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02Nzk2LDkg
KzY1ODEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlT
dHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1
cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3Ry
KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTY4MTYsOSArNjU5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBlbXB0eVN0cmluZygpIDogY29udmVydDxJRExVU1ZTdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJp
bmcoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1w
dHlTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtNjgzNiw5ICs2NjE3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5QXRvbSgpIDogY29udmVydDxJRExBdG9tU3RyaW5nQWRh
cHRvcjxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTY4NTYsOSArNjYzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBhdXRvIG51bWJlciA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRG91Ymxl
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihXVEZN
b3ZlKG51bWJlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU4oV1RGTW92ZShudW1iZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFO
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTY4NzYsOSArNjY1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG51bWJlciA9IGNvbnZlcnQ8SURMVW5yZXN0cmlj
dGVkRmxvYXQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNO
YU4oV1RGTW92ZShudW1iZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEZs
b2F0SXNOYU4oV1RGTW92ZShudW1iZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEZsb2F0
SXNOYU4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNjg5Niw5ICs2NjcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gbnVtYmVyID0gYXJndW1lbnQwLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJldHVy
blR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETExvbmdMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9u
YWxMb25nTG9uZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC02OTE2LDkgKzY2ODksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PElE
TExvbmdMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxMb25nTG9u
Z0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsTG9uZ0xvbmdJc1plcm8oV1RGTW92ZShudW1iZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRp
b25hbExvbmdMb25nSXNaZXJvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY5MzYsOSArNjcwNyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG51bWJlciA9IGFy
Z3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5z
aWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5z
aWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmco
V1RGTW92ZShudW1iZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVuc2ln
bmVkTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFVu
c2lnbmVkTG9uZ0xvbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjk1Niw5ICs2NzI1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gbnVtYmVyID0gY29udmVy
dDxJRExVbnNpZ25lZExvbmdMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVtYmVyKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKFdURk1vdmUobnVt
YmVyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTY5NzYsOSArNjc0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGFycmF5ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRl
ZmluZWQoKSA/IENvbnZlcnRlcjxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlw
ZXsgfSA6IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoV1RGTW92ZShhcnJheSkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoV1RGTW92ZShhcnJheSkpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjk5Niw5ICs2NzYxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8g
YXJyYXkgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElETFNl
cXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBleyB9IDogY29udmVydDxJRExTZXF1ZW5j
ZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxT
ZXF1ZW5jZUlzRW1wdHkoV1RGTW92ZShhcnJheSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0
aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KFdURk1vdmUoYXJyYXkpKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MDE2LDkgKzY3NzksNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBiID0g
YXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExC
b29sZWFuPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6
UmV0dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihXVEZNb3ZlKGIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9u
YWxCb29sZWFuLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTcwMzYsOSArNjc5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETEJvb2xl
YW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNl
KFdURk1vdmUoYikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklz
RmFsc2UoV1RGTW92ZShiKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxz
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC03MDU2LDkgKzY4MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExBbnk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFueShXVEZNb3ZlKGEpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFueShXVEZNb3ZlKGEpKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhPcHRpb25hbEFueSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MDc2LDkgKzY4MzMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBhID0gYXJndW1lbnQwLnZh
bHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExPYmplY3Q+OjpSZXR1
cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETE9iamVjdD46OlJldHVyblR5cGU+KGNv
bnZlcnQ8SURMT2JqZWN0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0KFdURk1vdmUoYSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsT2Jq
ZWN0KFdURk1vdmUoYSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTcwOTYsOSArNjg1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBhdXRvIG9iaiA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBudWxscHRyIDogY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlciIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxXcmFwcGVyKG9iaik7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxXcmFwcGVyKG9iaik7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoT3B0aW9uYWxXcmFwcGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcxMTYsOSArNjg2OSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9iaiA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRU
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCAiVGVzdE9iaiIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVyKFdURk1vdmUob2JqKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXIoV1RGTW92ZShvYmopKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MTM2LDkgKzY4ODcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBvYmogPSBjb252
ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlcklzTnVsbChXVEZNb3ZlKG9iaikpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKFdURk1vdmUob2JqKSk7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzE1Niw5ICs2
OTA1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGF1dG8gcmVzb2x2ZXIgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxYUGF0
aE5TUmVzb2x2ZXI+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJyZXNvbHZlciIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFhQ
YXRoTlNSZXNvbHZlciIsICJYUGF0aE5TUmVzb2x2ZXIiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihXVEZN
b3ZlKHJlc29sdmVyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5T
UmVzb2x2ZXIoV1RGTW92ZShyZXNvbHZlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTcxNzYsOSArNjkyMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHJlY29yZCA9IGFyZ3VtZW50
MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBXVEY6Om51bGxvcHQgOiBjb252ZXJ0PElETE51bGxh
YmxlPElETFJlY29yZDxJRExET01TdHJpbmcsIElETExvbmc+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKFdURk1vdmUocmVjb3JkKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21l
dGhvZFdpdGhPcHRpb25hbFJlY29yZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MTk2LDkgKzY5NDEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBwcm9taXNl
ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IG51bGxwdHIgOiBjb252ZXJ0PElE
TFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbFByb21pc2UoV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0
aW9uYWxQcm9taXNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTcyMTgsOSArNjk2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmcoY2FsbGJh
Y2sucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tJ
bnRlcmZhY2VBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRo
Q2FsbGJhY2tJbnRlcmZhY2VBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzI0MCw5ICs2OTgxLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
Y2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNh
bGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZh
Y2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUo
Y2FsbGJhY2spKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJn
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTcyNjUsOSArNzAwNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJ
RExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0lu
dGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBj
YWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25D
YWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUobm9uQ2Fs
bGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOb25D
YWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcyODUs
OSArNzAyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/
IENvbnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+
OjpSZXR1cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11
c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFj
aykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmcsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNzMwNSw5ICs3MDQwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENh
bGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0lu
dGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtNzMyNyw5ICs3MDYwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwo
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhjYWxsYmFj
ay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTczNDksOSArNzA4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJ
RExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVu
Y3Rpb25BcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51
bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTczNzQsOSArNzEwMyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVz
dENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImNh
bGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKG5v
bkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUobm9u
Q2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhO
b25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzM5NCw5ICs3MTIx
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVy
dGVyPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+OjpSZXR1cm5U
eXBlKCkgOiBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlv
bkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFj
a0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbENhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03NDE0LDkgKzcx
MzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZUNhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc0MzMsOSArNzE1
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFj
ZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRp
Y01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6OnN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25f
c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzQ1NCw5ICs3
MTc1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNl
PEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVj
dCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJn
KGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9zdGF0aWNNZXRob2RXaXRoQ2Fs
bGJhY2tBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtNzQ3Miw3ICs3MTkxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmNvbmRpdGlv
bmFsTWV0aG9kMSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMSgpKSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxNZXRob2Qx
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTc0OTAsOSArNzIwOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25h
bE1ldGhvZDIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtNzUxMCw5ICs3MjI3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY29uZGl0aW9uYWxN
ZXRob2QzKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2Nv
bmRpdGlvbmFsTWV0aG9kMywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03NTM1LDkgKzcyNTAsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byBzdHJB
cmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZChXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUoc3RyQXJnKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShzdHJBcmcpKTsgfSkp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2QyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc1
NTMsOSArNzI2Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKICAgICBhdXRvIGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgp
ID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8
Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShs
b25nQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJn
KSwgV1RGTW92ZShsb25nQXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kM0Jv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03NTY4LDkgKzcyNzksNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHJBcmcg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1l
dGhvZChXVEZNb3ZlKHN0ckFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChX
VEZNb3ZlKHN0ckFyZykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDRCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQpAQCAtNzU4Myw5ICs3MjkyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gbG9uZ0FyZyA9IGNv
bnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZN
b3ZlKGxvbmdBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShs
b25nQXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kNUJvZHkoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCkBAIC03NTk4LDkgKzczMDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fb3ZlcmxvYWRlZE1ldGhvZDZCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzYxMyw5ICs3MzE4
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgIGF1dG8gbGlzdEFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNl
PERPTVN0cmluZ0xpc3Q+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDAsICJsaXN0QXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIs
ICJET01TdHJpbmdMaXN0Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUobGlzdEFyZykpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3Zl
cmxvYWRlZE1ldGhvZChXVEZNb3ZlKGxpc3RBcmcpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2Fk
ZWRNZXRob2Q3Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc2MjgsOSArNzMzMSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIGFycmF5QXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExTZXF1ZW5jZTxJRExET01TdHJp
bmc+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5
QXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcp
KTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2Q4Qm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
QEAgLTc2NDMsOSArNzM0NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJm
YWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtd
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVz
dE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZCgqb2JqQXJnKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKm9iakFy
Zyk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kOUJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMp
CkBAIC03NjU4LDkgKzczNTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB3aW5kb3cgPSBjb252ZXJ0PElETEludGVy
ZmFjZTxXaW5kb3dQcm94eT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIs
ICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRo
b2QoKndpbmRvdyk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kMTBCb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQpAQCAtNzY3Myw5ICs3MzcwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYXJyYXlBcmcgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRl
ZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0
aG9kMTFCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzY4OCw5ICs3MzgzLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
YXJyYXlBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETFVuc2lnbmVkTG9uZz4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7IH0pKSk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9vdmVybG9hZGVkTWV0aG9kMTJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzcwMyw5ICs3
Mzk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShzdHJBcmcpKTsgfSkpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X292ZXJsb2FkZWRNZXRob2QxM0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03NzE3LDkgKzc0MDgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGJsb2JBcmdzID0gY29udmVy
dFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxCbG9iPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5v
dmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRl
ZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc3OTEsOSArNzQ4
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAg
ICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJv
YmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1l
dGVyIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShzdHJBcmcpLCBX
VEZNb3ZlKG9iakFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcihXVEZNb3ZlKHN0ckFyZyksIFdURk1vdmUob2JqQXJnKSk7IH0pKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMkJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCkBAIC03ODA5LDkgKzc0OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgYXV0byBsb25nQXJnID0gYXJndW1lbnQxLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25h
bFBhcmFtZXRlcihXVEZNb3ZlKG9iakFyZyksIFdURk1vdmUobG9uZ0FyZykpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKG9iakFy
ZyksIFdURk1vdmUobG9uZ0FyZykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZFdp
dGhPcHRpb25hbFBhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAg
LTc4NTUsOSArNzU0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIG9iamVjdE9yTm9kZSA9IGNvbnZlcnQ8SURMVW5p
b248SURMSW50ZXJmYWNlPFRlc3RPYmo+LCBJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uKFdU
Rk1vdmUob2JqZWN0T3JOb2RlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0
aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSkpKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX292ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjJCb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzKQpAQCAtNzg3MCw5ICs3NTUzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vp
c2hpbmdVbmlvbihXVEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0
aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fb3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uT3ZlcmxvYWREaXNwYXRj
aGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzkxMCw5ICs3NTkxLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gb2JqZWN0
T3JOb2RlID0gY29udmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdE9iaj4sIElETEludGVy
ZmFjZTxUZXN0Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0
aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoV1RGTW92ZShv
YmplY3RPck5vZGUpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rp
bmd1aXNoaW5nVW5pb25zMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03OTI1LDkgKzc2MDQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RJbnRl
cmZhY2U+LCBJRExET01TdHJpbmcsIElETExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVy
bG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhXVEZNb3ZlKHZhbHVlKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhX
VEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0
aW5ndWlzaGluZ1VuaW9uc092ZXJsb2FkRGlzcGF0Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc5
NzAsOSArNzY0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIG9iamVjdCA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRl
c3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MSwgIm9iamVjdCIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGlu
Z3Vpc2hpbmdVbmlvbiIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24oV1RG
TW92ZShvYmplY3RPck5vZGUpLCAqb2JqZWN0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRN
ZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSksICpv
YmplY3QpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlz
aGluZ1VuaW9uMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03OTg4LDkgKzc2NjMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAg
YXV0byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm5vZGUiLCAiVGVzdE9iamVj
dCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24iLCAiVGVzdE5v
ZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRN
ZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSksICpu
b2RlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hp
bmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSksICpub2RlKTsgfSkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292
ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbk92ZXJsb2FkRGlzcGF0Y2hl
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKQEAgLTgwMjUsOSArNzY5OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIG9iamVjdE9y
Tm9kZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5pb248SURMSW50ZXJmYWNlPFRlc3RPYmo+
LCBJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2Fk
V2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSkpKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX292ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24yQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
QEAgLTgwNDAsOSArNzcxMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uKFdURk1vdmUoaW5k
ZXgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShp
bmRleCkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbk92ZXJsb2Fk
RGlzcGF0Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTgwODIsOSArNzc1MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9iamVjdE9y
Tm9kZSA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyB0cnVlIDogY29udmVydDxJ
RExVbmlvbjxJRExET01TdHJpbmcsIElETEJvb2xlYW4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5v
dmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1
cm4gaW1wbC5vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7
IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uMkJvZHkoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCkBAIC04MDk3LDkgKzc3NjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8SURM
TG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihXVEZN
b3ZlKGluZGV4KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdU
Rk1vdmUoaW5kZXgpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb25P
dmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC04MTQzLDkgKzc4MDgsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAg
ICAgYXV0byBub2RlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm5vZGUiLCAiVGVzdE9i
amVjdCIsICJvdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyIiwg
IlRlc3ROb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVy
bG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyKFdURk1vdmUob2JqKSwg
Km5vZGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlz
aGluZ1BhcmFtZXRlcihXVEZNb3ZlKG9iaiksICpub2RlKTsgfSkpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJs
b2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIyQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKQEAgLTgxNjEsOSArNzgyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1
aXNoaW5nUGFyYW1ldGVyKFdURk1vdmUobm9kZSksIFdURk1vdmUoaW5kZXgpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RG
TW92ZShub2RlKSwgV1RGTW92ZShpbmRleCkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRXaXRo
TnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hlcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKQEAgLTgxOTUsOSArNzg1Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgVGVzdE9iajo6Y2xh
c3NNZXRob2QoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpjbGFzc01ldGhvZCgpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9j
bGFzc01ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC04MjE0LDcgKzc4NzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBhcmcgPSBhcmd1bWVudDAudmFs
dWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5U
eXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0
PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExv
bmc+KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKFdURk1vdmUoYXJnKSkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpjbGFzc01l
dGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9jbGFzc01ldGhvZFdpdGhPcHRp
b25hbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC04MjQ2LDkgKzc5MDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhcmcgPSBjb252ZXJ0PElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBUZXN0T2JqOjpvdmVybG9hZGVkTWV0aG9kMShXVEZNb3Zl
KGFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUoYXJn
KSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtODI2Myw5ICs3OTIwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdHlw
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgVGVzdE9iajo6b3Zlcmxv
YWRlZE1ldGhvZDEoV1RGTW92ZSh0eXBlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6b3ZlcmxvYWRl
ZE1ldGhvZDEoV1RGTW92ZSh0eXBlKSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtODMxNCw5ICs3
OTY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJ
RExVbnNpZ25lZExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhDbGFt
cChXVEZNb3ZlKG9iakFyZ3NTaG9ydCksIFdURk1vdmUob2JqQXJnc0xvbmcpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wKFdURk1vdmUob2JqQXJnc1Nob3J0KSwgV1RGTW92
ZShvYmpBcmdzTG9uZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY2xhc3NNZXRob2RXaXRoQ2xhbXAsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODMz
NCw5ICs3OTg3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExM
b25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFs
KFdURk1vdmUob2JqQXJnc0xvbmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNsYXNzTWV0aG9kV2l0aENs
YW1wT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jbGFzc01ldGhvZFdp
dGhDbGFtcE9uT3B0aW9uYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODM1OSw5ICs4MDEwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gb2Jq
QXJnc0xvbmcgPSBjb252ZXJ0PElETEVuZm9yY2VSYW5nZUFkYXB0b3I8SURMVW5zaWduZWRMb25n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwuY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKFdURk1v
dmUob2JqQXJnc1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9uZykpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
Y2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKFdURk1vdmUob2JqQXJnc1Nob3J0KSwgV1RGTW92
ZShvYmpBcmdzTG9uZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTgzNzksOSArODAyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBhdXRvIG9iakFyZ3NMb25nID0gY29udmVydDxJRExFbmZvcmNlUmFu
Z2VBZGFwdG9yPElETExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhF
bmZvcmNlUmFuZ2VPbk9wdGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwoV1RGTW92ZShvYmpBcmdz
TG9uZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC04NDAxLDkgKzgwNDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IGNv
bnZlcnQ8SURMU2VxdWVuY2U8SURMVW5zaWduZWRMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
bWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKFdURk1vdmUodW5zaWduZWRMb25nU2VxdWVu
Y2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShXVEZN
b3ZlKHVuc2lnbmVkTG9uZ1NlcXVlbmNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoVW5zaWduZWRMb25n
U2VxdWVuY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtODQ2MSw5ICs4MTA2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gb3B0aW9uYWxVbmlvbiA9IGFyZ3Vt
ZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248
SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVy
blR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExT
ZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURM
VW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVy
KFdURk1vdmUob3B0aW9uYWxVbmlvbikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uV2l0aE9w
dGlvbmFsVW5pb25QYXJhbWV0ZXIoV1RGTW92ZShvcHRpb25hbFVuaW9uKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NDg2LDkgKzgxMjksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7
CiAgICAgYXV0byBudWxsYWJsZUFycmF5QXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExTZXF1
ZW5jZTxJRExVbnNpZ25lZExvbmc+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aEFu
ZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxh
YmxlQXJyYXlBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFi
bGVTZXF1ZW5jZShXVEZNb3ZlKGFycmF5QXJnKSwgV1RGTW92ZShudWxsYWJsZUFycmF5QXJnKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9tZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODUw
OCw3ICs4MTQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8gZWxlbWVudElkID0gY29udmVydDxJRExSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RWxlbWVudD4+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBs
LmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETElu
dGVyZmFjZTxFbGVtZW50Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVt
ZW50SWQpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX2dldEVsZW1lbnRCeUlkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg1NDMsOSArODE4NCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIHZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE5vZGU+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgInZhbHVlIiwgIlRlc3RP
YmplY3QiLCAiY29udmVydDEiLCAiVGVzdE5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLmNvbnZlcnQxKCp2YWx1ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb252ZXJ0
MSgqdmFsdWUpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fY29udmVydDEsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODU2NSw5ICs4MjA0LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0Tm9kZT4+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgInZh
bHVlIiwgIlRlc3RPYmplY3QiLCAiY29udmVydDIiLCAiVGVzdE5vZGUiKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNvbnZlcnQyKFdURk1vdmUodmFsdWUpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLmNvbnZlcnQyKFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbnZlcnQyLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTg1ODcsOSArODIyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNvbnZlcnQzKFdURk1vdmUodmFsdWUpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLmNvbnZlcnQzKFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbnZlcnQzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTg2MDksOSArODI0NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExOdWxs
YWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb252ZXJ0NChXVEZNb3Zl
KHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb252ZXJ0NChXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9jb252ZXJ0NCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC04NjI2LDcgKzgyNTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlv
bigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbXV0YWJsZVBvaW50RnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODY0MSw5ICs4Mjc0LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwuYmFuYW5hKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5iYW5hbmEoKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29yYW5n
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC04NjY1LDkgKzgyOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgMSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUo
aGVhZCksIFdURk1vdmUodGFpbCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudmFyaWFkaWNTdHJpbmdNZXRo
b2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJpYWRpY1N0cmluZ01l
dGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC04Njg5LDkgKzgzMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8
SURMVW5yZXN0cmljdGVkRG91YmxlPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
MSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0
aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudmFyaWFk
aWNEb3VibGVNZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJp
YWRpY0RvdWJsZU1ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NzEzLDkgKzgzNDAsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFk
aWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnZhcmlhZGlj
Tm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC52YXJpYWRp
Y05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUodGFpbCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNOb2RlTWV0
aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTg3MzcsOSArODM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJ
RExVbmlvbjxJRExJbnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwudmFyaWFkaWNVbmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0
YWlsKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl92YXJpYWRpY1VuaW9uTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg3NjIsOSArODM4NSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KTsKICAgICBhdXRvIGIgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmFu
eShXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmFueShXVEZNb3ZlKGEp
LCBXVEZNb3ZlKGIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX2FueSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04Nzc5LDkgKzg0MDAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1
bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC04ODAxLDkgKzg0MjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExGbG9hdD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KFdU
Rk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0
QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODgxMSwyMyArODQyOCw2IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudEJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9h
dEFyZ3VtZW50Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihXVEZNb3Zl
KHByb21pc2UpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2Vw
dGlvbiIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3Vt
ZW50Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkBAIC04ODM4LDkgKzg0MzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBhID0gYXJndW1lbnQwLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6
IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbElu
dEFyZ3VtZW50KFdURk1vdmUoYSksIFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtODg1OCw5ICs4NDU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMRmxvYXQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKFdURk1vdmUoYSks
IFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihXVEZNb3Zl
KGEpLCBXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJu
aW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC04ODczLDkgKzg0NjksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBy
ZXF1ZXN0ID0gY29udmVydDxJRExJbnRlcmZhY2U8RmV0Y2hSZXF1ZXN0Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRU
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJyZXF1ZXN0IiwgIlRlc3RP
YmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iLCAiRmV0Y2hSZXF1ZXN0Iik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJs
b2FkZWRGdW5jdGlvbigqcmVxdWVzdCwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uKCpyZXF1ZXN0LCBXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX3Rlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQpAQCAtODkwNyw5ICs4NTAxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBUZXN0T2JqOjp0ZXN0U3RhdGljUHJv
bWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fdGVz
dFN0YXRpY1Byb21pc2VGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04OTE3LDIyICs4NTA5LDYgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cgogICAgIHJldHVybiBJRExPcGVyYXRp
b25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbl90ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uQm9keShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBwcm9wYWdhdGVFeGNlcHRpb24oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFRl
c3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1vdmUocHJv
bWlzZSkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQot
Ci1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhj
ZXB0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0ZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdEN1c3RvbVByb21p
c2VGdW5jdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpAQCAtODk4Miw3ICs4NTU4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwudGVzdFJldHVybnNPd25Qcm9taXNl
QW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RSZXR1cm5zT3du
UHJvbWlzZUFuZFByb21pc2VQcm94eUZ1bmN0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UmV0dXJuc093blBy
b21pc2VBbmRQcm9taXNlUHJveHlGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MDAxLDkgKzg1NzcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBzdHIgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
Y29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY29uZGl0
aW9uYWxPdmVybG9hZChXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiAjZW5kaWYKQEAgLTkwMTks
OSArODU5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLmNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5j
b25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOyB9KSkpOwogfQogCiAjZW5kaWYKQEAgLTkw
NjUsOSArODYzNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5zaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7
IH0pKSk7CiB9CiAKICNpZiBFTkFCTEUoQ09ORElUSU9OKQpAQCAtOTA4MSw5ICs4NjUxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuc2luZ2xl
Q29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKGEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnNpbmdsZUNv
bmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtOTEy
Myw5ICs4NjkxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8gaW5pdCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxUZXN0
T2JqOjpEaWN0aW9uYXJ5Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuYXR0YWNoU2hhZG93Um9vdChX
VEZNb3ZlKGluaXQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmF0dGFjaFNoYWRvd1Jvb3QoV1RGTW92ZShp
bml0KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9hdHRhY2hTaGFkb3dSb290LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkxNDUsOSArODcxMSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIGRpY3QgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1l
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwub3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBh
cmFtZXRlcihXVEZNb3ZlKGRpY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm9wZXJhdGlvbldpdGhFeHRl
cm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoV1RGTW92ZShkaWN0KSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25X
aXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkxNjcsOSArODczMSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIGRhdGEgPSBjb252ZXJ0PElETFVuaW9uPElETEFycmF5QnVmZmVyVmlldywgSURM
QXJyYXlCdWZmZXI+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5idWZmZXJTb3VyY2VQYXJhbWV0ZXIo
V1RGTW92ZShkYXRhKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5idWZmZXJTb3VyY2VQYXJhbWV0ZXIoV1RG
TW92ZShkYXRhKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9idWZmZXJTb3VyY2VQYXJhbWV0ZXIsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTE5Miw4
ICs4NzU0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImIiLCAiVGVz
dE9iamVjdCIsICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24iLCAiTm9kZSIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdFJldHVyblZhbHVlT3B0aW1pemF0
aW9uKCphLCAqYik7CisgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNl
c3NhcnkoKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LnRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbigqYSwgKmIpOyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFyZ3VtZW50MC52YWx1ZSgpKTsKIH0KIApAQCAtOTIwMiwzMSArODc2Myw2
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
dGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJ0ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24iKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBhID0gY29u
dmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAiYSIsICJUZXN0T2JqZWN0IiwgInRlc3RSZXR1cm5WYWx1ZU9w
dGltaXphdGlvbldpdGhFeGNlcHRpb24iLCAiTm9kZSIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAg
IGF1dG8gYiA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImIiLCAiVGVzdE9iamVjdCIsICJ0ZXN0
UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uIiwgIk5vZGUiKTsgfSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0
aEV4Y2VwdGlvbigqYSwgKmIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50
MC52YWx1ZSgpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3Rlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl90ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0aW9u
Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0ZXN0UmV0dXJuVmFsdWVP
cHRpbWl6YXRpb25XaXRoRXhjZXB0aW9uIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV2luZG93RnVuY3Rpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTkyMzQsOSArODc3MCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbigpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKCk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTI1MSw5ICs4Nzg1LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwotICAgIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKCk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MjY4LDkgKzg4
MDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVu
Y3Rpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRX
b3JrZXJGdW5jdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdv
cmtlckZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyODUsOSArODgxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmxlYWRpbmdI
eXBoZW5GdW5jdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubGVhZGluZ0h5cGhlbkZ1bmN0aW9uKCk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9kYXNoX2xlYWRpbmdfZGFzaF9oeXBoZW5fZGFzaF9mdW5jdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05
MzAyLDkgKzg4MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50cmFpbGluZ0h5cGhlbkZ1bmN0aW9uKCk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC50cmFpbGluZ0h5cGhlbkZ1bmN0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90cmFpbGluZ19kYXNo
X2h5cGhlbl9kYXNoX2Z1bmN0aW9uX2Rhc2hfLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkzMTksOSArODg0NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLmxlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubGVh
ZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9sZWFkaW5nX3VuZGVyc2NvcmVfZnVu
Y3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtOTMzNiw5ICs4ODYwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuX2RvdWJsZV9sZWFkaW5n
X3VuZGVyc2NvcmVfZnVuY3Rpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLl9kb3VibGVfbGVhZGluZ191
bmRlcnNjb3JlX2Z1bmN0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1
bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTkzNTMsOSArODg3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRyYWlsaW5nX3VuZGVy
c2NvcmVfZnVuY3Rpb25fKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50cmFpbGluZ191bmRlcnNjb3JlX2Z1
bmN0aW9uXygpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdHJhaWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl8sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
OTM3NSw3ICs4ODk1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gZGVzdGluYXRpb24gPSBjb252ZXJ0PElETEFsbG93
U2hhcmVkQWRhcHRvcjxJRExVaW50OEFycmF5Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJkZXN0aW5hdGlvbiIsICJUZXN0T2JqZWN0IiwgImVu
Y29kZUludG8iLCAiVWludDhBcnJheSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmVuY29kZUludG8o
ZGVzdGluYXRpb24ucmVsZWFzZU5vbk51bGwoKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmVuY29kZUludG8oZGVzdGluYXRpb24ucmVsZWFz
ZU5vbk51bGwoKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9lbmNvZGVJbnRvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkzOTAsNyArODkxMCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVVNWU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkp
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbC5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5NSw5ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5ub25Db25kaXRpb25hbE9wZXJhdGlv
bigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwubm9uQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJv
dG90eXBlRnVuY3Rpb25fbm9uQ29uZGl0aW9uYWxPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjE1LDkgKzIx
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLmNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5j
b25kaXRpb25hbE9wZXJhdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25h
bE9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJv
bWlzZVJlamVjCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMQW55Pj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwucHJvbWlzZSgp
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9taXNl
PElETEFueT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnByb21p
c2UoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudF9wcm9taXNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oZm9yd2FyZEdldFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRHZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25fZ2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KGZvcndhcmRIYXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkSGFzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uX2hhcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fZW50
cmllcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkS2V5c1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fa2V5cywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBA
IC0yNzcsNyArMjc3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
QW55Pihmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGZvcndhcmRWYWx1ZXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX3ZhbHVlcywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yOTYs
NyArMjk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRGb3JFYWNoVG9N
YXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RG
TW92ZShjYWxsYmFjaykpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2Zv
ckVhY2gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9TZXRMaWtlKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEhhc1Rv
U2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdU
Rk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFk
T25seVNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9oYXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjI4LDcgKzIyOCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJp
ZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlz
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEVu
dHJpZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRU
aGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5U2V0
TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb1Nl
dExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb1Nl
dExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5U2V0TGlrZVByb3Rv
dHlwZUZ1bmN0aW9uX2tleXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvU2V0TGlrZSgqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkVmFsdWVzVG9TZXRMaWtlKCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5j
dGlvbl92YWx1ZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtMjc1LDcgKzI3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEZvckVhY2hUb1NldExpa2UoKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxi
YWNrKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seVNl
dExpa2VQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIzLDkgKzMyMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExTZXJpYWxpemVkU2Ny
aXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZnVu
Y3Rpb24oV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuZnVuY3Rpb24oV1RGTW92ZSh2
YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fZnVuY3Rpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtMzQwLDcgKzMzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2VyaWFs
aXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZnVuY3Rpb25SZXR1cm5pbmco
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIGltcGwuZnVuY3Rpb25SZXR1cm5pbmcoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uX2Z1bmN0aW9uUmV0dXJuaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvU2V0TGlrZSgqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFu
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRIYXNUb1NldExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtl
eSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVByb3Rv
dHlwZUZ1bmN0aW9uX2hhcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRW50cmllc1RvU2V0TGlrZSgqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1RvU2V0TGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2Vu
dHJpZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZEtleXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEtleXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9rZXlzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI2Miw3
ICsyNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZv
cndhcmRWYWx1ZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpj
YXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
Zm9yd2FyZFZhbHVlc1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
KmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0
TGlrZVByb3RvdHlwZUZ1bmN0aW9uX3ZhbHVlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yODEsNyArMjgxLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRGb3JFYWNoVG9TZXRMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykp
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9y
RWFjaFRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMsIFdURk1vdmUoY2FsbGJhY2spKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNoLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMwMCw3ICsz
MDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRBZGRUb1NldExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtl
eSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJk
QWRkVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhp
cywgV1RGTW92ZShrZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9hZGQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzE0LDkgKzMxNCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgZm9yd2FyZENsZWFyVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAqY2FzdGVkVGhpcyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2Fy
ZENsZWFyVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVk
VGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlUHJv
dG90eXBlRnVuY3Rpb25fY2xlYXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzM1LDcgKzMzMyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtl
eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZERlbGV0ZVRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmREZWxldGVUb1NldExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtl
eSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVByb3Rv
dHlwZUZ1bmN0aW9uX2RlbGV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw5ICsy
NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5kZWxldGUoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmRlbGV0ZSgpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2RlbGV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNzAsNyArMjY4
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9TZXRMaWtlKCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkp
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEhh
c1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMs
IFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25faGFzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTI4NCw3ICsyODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KGZvcndhcmRFbnRyaWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25f
ZW50cmllcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC0yOTgsNyArMjk2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkS2V5c1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uX2tleXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtMzEyLDcgKzMxMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvU2V0TGlrZSgqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkVmFsdWVzVG9TZXRMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJv
dG90eXBlRnVuY3Rpb25fdmFsdWVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMzMSw3ICszMjksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb1NldExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRGb3JFYWNoVG9T
ZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RG
TW92ZShjYWxsYmFjaykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2ZvckVhY2gs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpAQCAtMzQ1LDkgKzM0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgZm9yd2FyZENsZWFyVG9TZXRMaWtl
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcyk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZENsZWFyVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBl
RnVuY3Rpb25fY2xlYXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpbXBsLnRvU3RyaW5nKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwudG9TdHJpbmcoKSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLnRvU3Ry
aW5nKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwudG9TdHJpbmcoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmlkZW50aWZpZXIoKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pZGVu
dGlmaWVyKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25faWRlbnRpZmllciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0x
OTUsNyArMTk1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmlkZW50aWZpZXIoKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pZGVudGlmaWVyKCkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmFsdGVybmF0ZUlkZW50aWZp
ZXIoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5hbHRlcm5hdGVJZGVudGlmaWVyKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5j
dGlvbl9pZGVudGlmaWVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuYWx0
ZXJuYXRlSWRlbnRpZmllcigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmFsdGVybmF0ZUlkZW50aWZpZXIoKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC50b1N0cmluZygpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnRvU3RyaW5nKCkp
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuaWRlbnRpZmllcigpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZp
ZXIoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5j
cHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuaWRlbnRpZmllcigpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50
aWZpZXIoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw3ICs4MCw2IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdFQKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25fc3RyaW5nU2VxdWVuY2VGdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX3N0cmluZ1Nl
cXVlbmNlRnVuY3Rpb24yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0lu
Y2x1ZGUpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uKTsKIAogLy8gQXR0cmlidXRlcwog
CkBAIC0yMjMsNyArMjIyLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5
cGVkZQogICAgIHsgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25fc3RyaW5nU2VxdWVuY2VGdW5jdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwK
ICAgICB7ICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbl9zdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMiksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAg
ICB7ICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbl9jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSksIChp
bnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJtZXRob2RXaXRoRXhjZXB0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb24pLCAoaW50cHRyX3QpICgw
KSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3RUeXBlZGVmcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUpIH07CkBAIC00OTks
OSArNDk3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGF1dG8geCA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0
ZXI8SURMU2VxdWVuY2U8SURMTG9uZz4+OjpSZXR1cm5UeXBleyB9IDogY29udmVydDxJRExTZXF1
ZW5jZTxJRExMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZnVuYyhXVEZNb3ZlKHgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLmZ1bmMoV1RGTW92ZSh4KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX2Z1bmMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
NTMzLDkgKzUyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQ0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCg0KTsKICAgICBhdXRvIGFscGhhID0gYXJndW1lbnQ0LnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/
IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KCkg
OiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETFVucmVzdHJpY3RlZEZsb2F0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQ0LnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuc2V0U2hh
ZG93KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1ciksIFdURk1v
dmUoY29sb3IpLCBXVEZNb3ZlKGFscGhhKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5zZXRTaGFkb3coV1RG
TW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyKSwgV1RGTW92ZShjb2xv
ciksIFdURk1vdmUoYWxwaGEpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fc2V0U2hhZG93LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU1NSw3
ICs1NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURM
U2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuc2lnbmVkTG9uZ0xvbmc+KGltcGwu
bWV0aG9kV2l0aFNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWdu
ZWRMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubWV0aG9k
V2l0aFNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aFNlcXVlbmNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTU3NSw5ICs1NjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzZXF1ZW5jZUFy
ZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLm51bGxhYmxlU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwubnVsbGFibGVTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJn
KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uX251bGxhYmxlU2VxdWVuY2VBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTk3LDkgKzU4OSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExOdWxsYWJs
ZTxJRExET01TdHJpbmc+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuc2VxdWVuY2VPZk51bGxhYmxl
c0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5zZXF1ZW5jZU9mTnVs
bGFibGVzQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fc2VxdWVuY2VPZk51
bGxhYmxlc0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC02MTksOSArNjA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc2VxdWVuY2VBcmcg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETE51bGxhYmxlPElETERPTVN0cmlu
Zz4+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJn
KFdURk1vdmUoc2VxdWVuY2VBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VP
Zk51bGxhYmxlc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX251bGxhYmxl
U2VxdWVuY2VPZk51bGxhYmxlc0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NDEsOSArNjI5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
c2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETFVuaW9uPElE
TERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4+Pj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwubnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVl
bmNlQXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX251bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBA
IC02NjMsOSArNjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdW5pb25BcmcgPSBjb252ZXJ0PElETFVuaW9uPElE
TERPTVN0cmluZywgSURMTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnVuaW9uQXJnKFdURk1v
dmUodW5pb25BcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnVuaW9uQXJnKFdURk1vdmUodW5pb25Bcmcp
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25fdW5pb25BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjg4LDkgKzY3Miw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBhdXRvIGFyZzIgPSBh
cmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETENs
YW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25h
bDxDb252ZXJ0ZXI8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pjo6UmV0dXJu
VHlwZT4oY29udmVydDxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5mdW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJn
MikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuZnVuY1dpdGhDbGFtcChXVEZNb3ZlKGFyZzEpLCBXVEZNb3Zl
KGFyZzIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25fZnVuY1dpdGhDbGFtcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MTAsOSArNjkyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwogICAgIGF1dG8gYXJnID0gY29udmVydDxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLmZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoV1RGTW92ZShhcmcpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLmZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYoV1RGTW92ZShhcmcpKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25fZnVuY1dpdGhDbGFtcEluVHlwZWRlZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MjcsNyArNzA3LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBvaW50RnVu
Y3Rpb24oKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5wb2ludEZ1bmN0
aW9uKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uX3BvaW50RnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzg3LDcgKzc2Nyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVz
dEV2ZW50VGFyZ2V0Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQm9vbGVhbj4oaW1wbC5jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShXVEZN
b3ZlKHNlcXVlbmNlQXJnKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKFdURk1v
dmUoc2VxdWVuY2VBcmcpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0lu
Y2x1ZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNzk1LDIzICs3NzUsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0VHlwZWRlZnNQCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46
OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9jYWxsV2l0aFNlcXVlbmNlVGhh
dFJlcXVpcmVzSW5jbHVkZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
Y2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fbWV0
aG9kV2l0aEV4Y2VwdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKLXsKLSAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgcHJvcGFnYXRl
RXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1ldGhvZFdp
dGhFeGNlcHRpb24oKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFR5cGVkZWZzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw2IEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwogICAg
IEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBDU1NHcm91cGluZ1J1bGUgOiBDU1NSdWxlIHsK
ICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IGNzc1J1bGVz
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKENTU09N
U3RyaW5nIHJ1bGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShDU1NPTVN0cmluZyBydWxlLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgdW5kZWZpbmVkIGRlbGV0ZVJ1bGUodW5z
aWduZWQgbG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBA
CiAgICAgRE9NU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5KTsKICAg
ICAvLyBGSVhNRTogVGhlIHJldHVybiB2YWx1ZSBvZiAnZ2V0UHJvcGVydHlQcmlvcml0eScgc2hv
dWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHko
RE9NU3RyaW5nIHByb3BlcnR5KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5LCBbTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0
eSk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHBy
b3BlcnR5LCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9u
YWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7Cisg
ICAgW0NFUmVhY3Rpb25zXSBET01TdHJpbmcgcmVtb3ZlUHJvcGVydHkoRE9NU3RyaW5nIHByb3Bl
cnR5KTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZT8gcGFyZW50UnVsZTsKICAgICBb
Q0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBjc3NGbG9hdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiwxMSArMjIsMTEgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXSBp
bnRlcmZhY2UgQ1NTU3R5bGVTaGVldCA6IFN0eWxlU2hlZXQgewogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBDU1NSdWxlIG93bmVyUnVsZTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9Y3NzUnVsZXNGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0
IGNzc1J1bGVzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRS
dWxlKERPTVN0cmluZyBydWxlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25n
IGluZGV4KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1jc3NSdWxlc0ZvckJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7CisgICAgdW5zaWduZWQgbG9uZyBpbnNl
cnRSdWxlKERPTVN0cmluZyBydWxlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7
CisgICAgdW5kZWZpbmVkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9cnVsZXNGb3JCaW5kaW5nc10gcmVhZG9u
bHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IHJ1bGVzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
bG9uZyBhZGRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBv
cHRpb25hbCBET01TdHJpbmcgc3R5bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlUnVs
ZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgW0ltcGxlbWVudGVkQXM9
cnVsZXNGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IHJ1bGVzOwor
ICAgIGxvbmcgYWRkUnVsZShvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0b3IgPSAidW5kZWZpbmVk
Iiwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0eWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIHVuZGVmaW5lZCByZW1vdmVSdWxlKG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgaW5kZXggPSAwKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
TmFtZXNwYWNlK0NTU1Byb3BlcnRpZXNhbmRWYWx1ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UrQ1NTUHJvcGVydGllc2FuZFZhbHVlcy5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2Ur
Q1NTUHJvcGVydGllc2FuZFZhbHVlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDUgKzI4LDUg
QEAKICAgICBFbmFibGVkQnlTZXR0aW5nPUNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXMsCiAg
ICAgSW1wbGVtZW50ZWRCeT1ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5CiBdIHBhcnRpYWwg
aW50ZXJmYWNlIERPTUNTU05hbWVzcGFjZSB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlU
aHJvd0V4Y2VwdGlvbl0gc3RhdGljIHVuZGVmaW5lZCByZWdpc3RlclByb3BlcnR5KERPTUNTU0N1
c3RvbVByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1l
bnRdIHN0YXRpYyB1bmRlZmluZWQgcmVnaXN0ZXJQcm9wZXJ0eShET01DU1NDdXN0b21Qcm9wZXJ0
eURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiBdIGludGVyZmFjZSBET01NYXRyaXgg
OiBET01NYXRyaXhSZWFkT25seSB7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIChET01TdHJpbmcgb3Igc2VxdWVuY2U8dW5yZXN0cmlj
dGVkIGRvdWJsZT4pIGluaXQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3Rd
IHN0YXRpYyBET01NYXRyaXggZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVy
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBm
cm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQ2NEFycmF5KEZsb2F0
NjRBcnJheSBhcnJheTY0KTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21N
YXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgW05ld09iamVjdF0gc3Rh
dGljIERPTU1hdHJpeCBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKKyAg
ICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFy
cmF5IGFycmF5NjQpOwogCiAgICAgLy8gVGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFz
ZXMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhlIDR4NCBtYXRyaXgKICAgICBpbmhlcml0IGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGE7IC8vIEFsaWFzIGZvciBtMTEuCkBAIC02Miw4
ICs2Miw4IEBACiAgICAgaW5oZXJpdCBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBtNDQ7
CiAKICAgICAvLyBNdXRhYmxlIHRyYW5zZm9ybSBtZXRob2RzCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBET01NYXRyaXggbXVsdGlwbHlTZWxmKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NTWF0cml4IHByZU11bHRpcGx5U2VsZihvcHRp
b25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBET01NYXRyaXggbXVsdGlwbHlTZWxmKG9w
dGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOworICAgIERPTU1hdHJpeCBwcmVNdWx0aXBseVNl
bGYob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CiAgICAgRE9NTWF0cml4IHRyYW5zbGF0
ZVNlbGYob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB0eCA9IDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB0eSA9IDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB0eiA9
IDApOwpAQCAtOTAsNSArOTAsNSBAQAogICAgIERPTU1hdHJpeCBza2V3WVNlbGYob3B0aW9uYWwg
dW5yZXN0cmljdGVkIGRvdWJsZSBzeSA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAg
IERPTU1hdHJpeCBpbnZlcnRTZWxmKCk7CiAKLSAgICBbRXhwb3NlZD1XaW5kb3csIE1heVRocm93
RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXNldE1hdHJpeFZhbHVlRm9yQmluZGluZ3NdIERPTU1h
dHJpeCBzZXRNYXRyaXhWYWx1ZShET01TdHJpbmcgdHJhbnNmb3JtTGlzdCk7CisgICAgW0V4cG9z
ZWQ9V2luZG93LCBJbXBsZW1lbnRlZEFzPXNldE1hdHJpeFZhbHVlRm9yQmluZGluZ3NdIERPTU1h
dHJpeCBzZXRNYXRyaXhWYWx1ZShET01TdHJpbmcgdHJhbnNmb3JtTGlzdCk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw5ICszMCw5IEBACiBdIGludGVyZmFjZSBET01NYXRyaXhSZWFkT25seSB7CiAg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFs
IChET01TdHJpbmcgb3Igc2VxdWVuY2U8dW5yZXN0cmljdGVkIGRvdWJsZT4pIGluaXQpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25s
eSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0
MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBO
ZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQ2NEFycmF5KEZsb2F0
NjRBcnJheSBhcnJheTY0KTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9u
bHkgZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBbTmV3T2Jq
ZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJy
YXkgYXJyYXkzMik7CisgICAgW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZy
b21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOwogCiAgICAgLy8gVGhlc2UgYXR0
cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFzZXMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhlIDR4
NCBtYXRyaXgKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAv
LyBBbGlhcyBmb3IgbTExLgpAQCAtODcsMTUgKzg3LDE1IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIGFuZ2xl
ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4
IHNrZXdYKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgc3ggPSAwKTsgLy8gQW5nbGUgaXMg
aW4gZGVncmVlcy4KICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggc2tld1kob3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBzeSA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBET01NYXRyaXggbXVsdGlwbHkob3B0aW9uYWwg
RE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgW05ld09iamVjdF0gRE9NTWF0cml4IG11bHRpcGx5
KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwogICAgIFtOZXdPYmplY3RdIERPTU1hdHJp
eCBmbGlwWCgpOwogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBmbGlwWSgpOwogICAgIFtOZXdP
YmplY3RdIERPTU1hdHJpeCBpbnZlcnNlKCk7CiAKICAgICBbTmV3T2JqZWN0XSBET01Qb2ludCB0
cmFuc2Zvcm1Qb2ludChvcHRpb25hbCBET01Qb2ludEluaXQgcG9pbnQpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRmxvYXQzMkFycmF5IHRvRmxvYXQzMkFycmF5KCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBGbG9hdDY0QXJyYXkgdG9GbG9hdDY0QXJyYXkoKTsKKyAgICBGbG9hdDMyQXJy
YXkgdG9GbG9hdDMyQXJyYXkoKTsKKyAgICBGbG9hdDY0QXJyYXkgdG9GbG9hdDY0QXJyYXkoKTsK
IAotICAgIFtFeHBvc2VkPVdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHN0cmluZ2lmaWVyOwor
ICAgIFtFeHBvc2VkPVdpbmRvd10gc3RyaW5naWZpZXI7CiAgICAgW0RlZmF1bHRdIG9iamVjdCB0
b0pTT04oKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDEzICs1NiwxMyBAQAogICAgIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBzaG9ydCBwcmltaXRpdmVUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgc2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDAs
IG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRGbG9hdFZhbHVlKG9wdGlvbmFs
IHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCk7CisgICAgdW5kZWZpbmVkIHNldEZsb2F0VmFs
dWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwLCBvcHRpb25hbCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9IE5hTik7CisgICAgdW5yZXN0cmljdGVkIGZsb2F0IGdl
dEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN0cmluZ1ZhbHVlKG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nVmFs
dWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCk7
CisgICAgdW5kZWZpbmVkIHNldFN0cmluZ1ZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0
cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nVmFsdWUpOworICAgIERPTVN0
cmluZyBnZXRTdHJpbmdWYWx1ZSgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBEZXByZWNh
dGVkQ1NTT01Db3VudGVyIGdldENvdW50ZXJWYWx1ZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gRGVwcmVjYXRlZENTU09NUmVjdCBnZXRSZWN0VmFsdWUoKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yIGdldFJHQkNvbG9yVmFsdWUoKTsKKyAgICBE
ZXByZWNhdGVkQ1NTT01Db3VudGVyIGdldENvdW50ZXJWYWx1ZSgpOworICAgIERlcHJlY2F0ZWRD
U1NPTVJlY3QgZ2V0UmVjdFZhbHVlKCk7CisgICAgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IgZ2V0
UkdCQ29sb3JWYWx1ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNl
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBlbnVtIEZvbnRGYWNlU2V0TG9hZFN0YXR1
cyB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmxvYWRpbmdlcnJvcjsKIAogICAgIFBy
b21pc2U8c2VxdWVuY2U8Rm9udEZhY2U+PiBsb2FkKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBE
T01TdHJpbmcgdGV4dCA9ICIgIik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGNo
ZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIgIik7CisgICAg
Ym9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAi
ICIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8Rm9udEZhY2VTZXQ+IHJlYWR5
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGb250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw2
IEBACiAKICAgICBnZXR0ZXIgRE9NU3RyaW5nPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlTWVkaXVtKERPTVN0cmlu
ZyBvbGRNZWRpdW0pOworICAgIHVuZGVmaW5lZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9sZE1l
ZGl1bSk7CiAgICAgdW5kZWZpbmVkIGFwcGVuZE1lZGl1bShET01TdHJpbmcgbmV3TWVkaXVtKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BYm9ydFNpZ25hbC5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BYm9ydFNpZ25hbC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICAgICBQcml2YXRlSWRlbnRpZmllciwKICAgICBQdWJsaWNJZGVudGlm
aWVyCiBdIGludGVyZmFjZSBBYm9ydFNpZ25hbCA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbIFByaXZh
dGVJZGVudGlmaWVyIF0gc3RhdGljIHVuZGVmaW5lZCB3aGVuU2lnbmFsQWJvcnRlZChBYm9ydFNp
Z25hbCBvYmplY3QsIEFib3J0QWxnb3JpdGhtIGFsZ29yaXRobSk7CisgICAgW1ByaXZhdGVJZGVu
dGlmaWVyXSBzdGF0aWMgYm9vbGVhbiB3aGVuU2lnbmFsQWJvcnRlZChBYm9ydFNpZ25hbCBvYmpl
Y3QsIEFib3J0QWxnb3JpdGhtIGFsZ29yaXRobSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBhYm9ydGVkOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjIsMTEgKzIyLDExIEBACiBdIGludGVyZmFjZSBDaGFyYWN0ZXJEYXRhIDogTm9kZSB7CiAgICAg
YXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVu
c2lnbmVkIGxvbmcgY291bnQpOworICAgIERPTVN0cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVk
IGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKICAgICB1bmRlZmluZWQgYXBwZW5k
RGF0YShET01TdHJpbmcgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
aW5zZXJ0RGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgRE9NU3RyaW5nIGRhdGEpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0ZURhdGEodW5zaWduZWQgbG9uZyBvZmZz
ZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50
LCBET01TdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIGluc2VydERhdGEodW5zaWduZWQgbG9u
ZyBvZmZzZXQsIERPTVN0cmluZyBkYXRhKTsKKyAgICB1bmRlZmluZWQgZGVsZXRlRGF0YSh1bnNp
Z25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgdW5kZWZpbmVkIHJl
cGxhY2VEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50LCBET01T
dHJpbmcgZGF0YSk7CiB9OwogCiBDaGFyYWN0ZXJEYXRhIGluY2x1ZGVzIENoaWxkTm9kZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBA
QAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQogaW50ZXJmYWNl
IG1peGluIENoaWxkTm9kZSB7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVz
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rp
b25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcGxhY2VXaXRo
KChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0aW9ucywgVW5zY29w
YWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmUoKTsKKyAgICBbQ0VSZWFj
dGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCBiZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4u
LiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmluZWQgYWZ0ZXIo
KE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3Bh
YmxlXSB1bmRlZmluZWQgcmVwbGFjZVdpdGgoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7
CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmluZWQgcmVtb3ZlKCk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw2IEBACiBdIGludGVyZmFjZSBDdXN0
b21FbGVtZW50UmVnaXN0cnkgewogICAgIFtDRVJlYWN0aW9ucywgQ3VzdG9tXSB1bmRlZmluZWQg
ZGVmaW5lKERPTVN0cmluZyBuYW1lLCBGdW5jdGlvbiBjb25zdHJ1Y3Rvcik7CiAgICAgYW55IGdl
dChET01TdHJpbmcgbmFtZSk7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb24sIFJldHVy
bnNPd25Qcm9taXNlXSBQcm9taXNlPHVuZGVmaW5lZD4gd2hlbkRlZmluZWQoRE9NU3RyaW5nIG5h
bWUpOworICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNlPHVuZGVmaW5lZD4g
d2hlbkRlZmluZWQoRE9NU3RyaW5nIG5hbWUpOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVk
IHVwZ3JhZGUoTm9kZSByb290KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVy
ZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRp
b25dIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAgICBbTmV3T2Jq
ZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkksIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOworICAg
IFtOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKKyAg
ICBbTmV3T2JqZWN0XSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CiAgICAgW05ld09iamVj
dF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0
bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVzZWxlc3M7IGFsd2F5cyByZXR1
cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRSZWFkT25seS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRSZWFkT25seS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5yZXN0cmljdGVkIGRvdWJsZSB6OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHc7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVBvaW50IG1hdHJp
eFRyYW5zZm9ybShvcHRpb25hbCBET01NYXRyaXhJbml0IG1hdHJpeCk7CisgICAgRE9NUG9pbnQg
bWF0cml4VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgbWF0cml4KTsKIAogICAgIFtE
ZWZhdWx0XSBvYmplY3QgdG9KU09OKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwx
MCArMzgsMTAgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAgICAgZ2V0
dGVyIERhdGFUcmFuc2Zlckl0ZW0gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRGF0YVRyYW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRhLCBE
T01TdHJpbmcgdHlwZSk7CisgICAgRGF0YVRyYW5zZmVySXRlbT8gYWRkKERPTVN0cmluZyBkYXRh
LCBET01TdHJpbmcgdHlwZSk7CiAgICAgRGF0YVRyYW5zZmVySXRlbT8gYWRkKEZpbGUgZmlsZSk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmUodW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgdW5kZWZpbmVkIHJlbW92ZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAog
ICAgIHVuZGVmaW5lZCBjbGVhcigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudCtIVE1MLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQr
SFRNTC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dCtIVE1MLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTEgKzU4LDExIEBAIHBhcnRpYWwgaW50
ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhNRTogVGhlIEhUTUwgc3BlYyBzYXlzIHRoaXMg
c2hvdWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIuIFdlIHNob3VsZCBlbnN1
cmUKICAgICAvLyB0aGF0IHRoZSBjYWxsZXIgZG9jdW1lbnQgbWF0Y2hlcyB0aG9zZSBzZW1hbnRp
Y3MuIEl0IGlzIHBvc3NpYmxlIHdlIHNob3VsZCByZXBsYWNlIGl0IHdpdGgKICAgICAvLyB0aGUg
ZXhpc3RpbmcgJ2luY3VtYmVudCBkb2N1bWVudCcgY29uY2VwdC4KLSAgICBbQ0VSZWFjdGlvbnMs
IENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIEltcGxlbWVudGVkQXM9b3BlbkZvckJpbmRp
bmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01TdHJpbmcg
dW51c2VkMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHVudXNlZDIpOyAvLyBib3RoIGFyZ3VtZW50cyBh
cmUgaWdub3JlZC4KLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBs
ZW1lbnRlZEFzPW9wZW5Gb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIFdpbmRvd1Byb3h5
IG9wZW4oVVNWU3RyaW5nIHVybCwgRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyBmZWF0dXJlcyk7
Ci0gICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb3NlRm9yQmluZGluZ3MsIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xvc2UoKTsKLSAgICBbQ0VSZWFjdGlvbnMsIENhbGxX
aXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgd3Jp
dGUoRE9NU3RyaW5nLi4uIHRleHQpOwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9u
c2libGVEb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB3cml0ZWxuKERPTVN0
cmluZy4uLiB0ZXh0KTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9j
dW1lbnQsIEltcGxlbWVudGVkQXM9b3BlbkZvckJpbmRpbmdzXSBEb2N1bWVudCBvcGVuKG9wdGlv
bmFsIERPTVN0cmluZyB1bnVzZWQxLCBvcHRpb25hbCBET01TdHJpbmcgdW51c2VkMik7IC8vIGJv
dGggYXJndW1lbnRzIGFyZSBpZ25vcmVkLgorICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3csIEltcGxlbWVudGVkQXM9b3BlbkZvckJpbmRpbmdzXSBXaW5kb3dQcm94eSBvcGVu
KFVTVlN0cmluZyB1cmwsIERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMpOworICAg
IFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzXSB1bmRlZmluZWQg
Y2xvc2UoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnRd
IHVuZGVmaW5lZCB3cml0ZShET01TdHJpbmcuLi4gdGV4dCk7CisgICAgW0NFUmVhY3Rpb25zLCBD
YWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50XSB1bmRlZmluZWQgd3JpdGVsbihET01TdHJpbmcu
Li4gdGV4dCk7CiAKICAgICAvLyB1c2VyIGludGVyYWN0aW9uCiAgICAgW0ltcGxlbWVudGVkQXM9
d2luZG93UHJveHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gZGVmYXVsdFZpZXc7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQrU3RvcmFnZUFjY2Vzcy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50K1N0b3JhZ2VBY2Nlc3MuaWRs
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQrU3RvcmFn
ZUFjY2Vzcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDYgQEAKICAgICBFbmFibGVk
QnlTZXR0aW5nPXN0b3JhZ2VBY2Nlc3NBUEksCiAgICAgSW1wbGVtZW50ZWRCeT1Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MKIF0gcGFydGlhbCBpbnRlcmZhY2UgRG9jdW1lbnQgewotICAgIFByb21pc2U8
Ym9vbD4gaGFzU3RvcmFnZUFjY2VzcygpOworICAgIFByb21pc2U8Ym9vbGVhbj4gaGFzU3RvcmFn
ZUFjY2VzcygpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiByZXF1ZXN0U3RvcmFnZUFjY2Vzcygp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEsMjEg
KzYxLDIxIEBAIHR5cGVkZWYgKEhUTUxTY3JpcHRFbGVtZW50IG9yIFNWR1NjcmlwdEUKICAgICBI
VE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKERPTVN0cmluZyBjbGFzc05hbWVzKTsKIAotICAgIFtOZXdPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5nc10g
RWxlbWVudCBjcmVhdGVFbGVtZW50KERPTVN0cmluZyBsb2NhbE5hbWUpOyAvLyBGSVhNRTogbWlz
c2luZyBvcHRpb25zIHBhcmFtZXRlci4KLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0
cmluZyBxdWFsaWZpZWROYW1lKTsgLy8gRklYTUU6IG1pc3Npbmcgb3B0aW9ucyBwYXJhbWV0ZXIu
CisgICAgW05ld09iamVjdCwgSW1wbGVtZW50ZWRBcz1jcmVhdGVFbGVtZW50Rm9yQmluZGluZ3Nd
IEVsZW1lbnQgY3JlYXRlRWxlbWVudChET01TdHJpbmcgbG9jYWxOYW1lKTsgLy8gRklYTUU6IG1p
c3Npbmcgb3B0aW9ucyBwYXJhbWV0ZXIuCisgICAgW05ld09iamVjdF0gRWxlbWVudCBjcmVhdGVF
bGVtZW50TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
KTsgLy8gRklYTUU6IG1pc3Npbmcgb3B0aW9ucyBwYXJhbWV0ZXIuCiAgICAgW05ld09iamVjdF0g
RG9jdW1lbnRGcmFnbWVudCBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgW05ld09iamVj
dF0gVGV4dCBjcmVhdGVUZXh0Tm9kZShET01TdHJpbmcgZGF0YSk7Ci0gICAgW05ld09iamVjdCwg
TWF5VGhyb3dFeGNlcHRpb25dIENEQVRBU2VjdGlvbiBjcmVhdGVDREFUQVNlY3Rpb24oRE9NU3Ry
aW5nIGRhdGEpOworICAgIFtOZXdPYmplY3RdIENEQVRBU2VjdGlvbiBjcmVhdGVDREFUQVNlY3Rp
b24oRE9NU3RyaW5nIGRhdGEpOwogICAgIFtOZXdPYmplY3RdIENvbW1lbnQgY3JlYXRlQ29tbWVu
dChET01TdHJpbmcgZGF0YSk7Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRE9NU3RyaW5n
IHRhcmdldCwgRE9NU3RyaW5nIGRhdGEpOworICAgIFtOZXdPYmplY3RdIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRE9NU3RyaW5nIHRhcmdldCwgRE9N
U3RyaW5nIGRhdGEpOwogCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3
T2JqZWN0XSBOb2RlIGltcG9ydE5vZGUoTm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGRlZXAg
PSBmYWxzZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSBhZG9w
dE5vZGUoTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVjdF0gTm9kZSBpbXBv
cnROb2RlKE5vZGUgbm9kZSwgb3B0aW9uYWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOworICAgIFtD
RVJlYWN0aW9uc10gTm9kZSBhZG9wdE5vZGUoTm9kZSBub2RlKTsKIAotICAgIFtOZXdPYmplY3Qs
IE1heVRocm93RXhjZXB0aW9uXSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZShET01TdHJpbmcgbG9jYWxO
YW1lKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciBjcmVhdGVBdHRy
aWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUp
OworICAgIFtOZXdPYmplY3RdIEF0dHIgY3JlYXRlQXR0cmlidXRlKERPTVN0cmluZyBsb2NhbE5h
bWUpOworICAgIFtOZXdPYmplY3RdIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBu
YW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbiwgTmV3T2JqZWN0XSBFdmVudCBjcmVhdGVFdmVudChET01TdHJpbmcgdHlwZSk7Cisg
ICAgW05ld09iamVjdF0gRXZlbnQgY3JlYXRlRXZlbnQoRE9NU3RyaW5nIHR5cGUpOwogCiAgICAg
W05ld09iamVjdF0gUmFuZ2UgY3JlYXRlUmFuZ2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQrRE9NUGFyc2luZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQrRE9NUGFyc2luZy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw1
ICsyNiw1IEBACiAvLyBodHRwczovL3czYy5naXRodWIuaW8vRE9NLVBhcnNpbmcvI2V4dGVuc2lv
bnMtdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlCiBwYXJ0aWFsIGludGVyZmFjZSBFbGVtZW50IHsK
ICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyBvdXRlckhUTUw7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIGluc2VydEFkamFjZW50SFRNTChET01TdHJpbmcgcG9zaXRpb24sIERPTVN0cmlu
ZyB0ZXh0KTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBpbnNlcnRBZGphY2VudEhUTUwo
RE9NU3RyaW5nIHBvc2l0aW9uLCBET01TdHJpbmcgdGV4dCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQrUG9pbnRlckV2ZW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQrUG9pbnRlckV2ZW50cy5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2lu
dGVyZXZlbnRzLyNleHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZQogcGFydGlhbCBp
bnRlcmZhY2UgRWxlbWVudCB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0
UG9pbnRlckNhcHR1cmUgKGxvbmcgcG9pbnRlcklkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCByZWxlYXNlUG9pbnRlckNhcHR1cmUgKGxvbmcgcG9pbnRlcklkKTsKKyAgICB1
bmRlZmluZWQgc2V0UG9pbnRlckNhcHR1cmUgKGxvbmcgcG9pbnRlcklkKTsKKyAgICB1bmRlZmlu
ZWQgcmVsZWFzZVBvaW50ZXJDYXB0dXJlIChsb25nIHBvaW50ZXJJZCk7CiAgICAgYm9vbGVhbiBo
YXNQb2ludGVyQ2FwdHVyZSAobG9uZyBwb2ludGVySWQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5h
bWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgQXRv
bVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpOworICAg
IC8vIEJpbmRpbmdzIHZhcmlhbnRzIG9mIHRoZSBhYm92ZSB0d28gZnVuY3Rpb25zIHRoYXQgaGF2
ZSB0aGUgY29ycmVjdCByZXR1cm4gdHlwZS4KKyAgICBpbmxpbmUgdm9pZCByZW1vdmVBdHRyaWJ1
dGVGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKSB7IHJlbW92ZUF0
dHJpYnV0ZShxdWFsaWZpZWROYW1lKTsgfQorICAgIGlubGluZSB2b2lkIHJlbW92ZUF0dHJpYnV0
ZU5TRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbE5hbWUpIHsgcmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2Nh
bE5hbWUpOyB9CiAKICAgICBSZWY8QXR0cj4gZGV0YWNoQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MiwzMyArNDIs
MzMgQEAKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IGdldEF0dHJpYnV0ZU5hbWVzKCk7CiAgICAg
W0RPTUpJVD1SZWFkRE9NXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlm
aWVkTmFtZSk7CiAgICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgRE9NU3RyaW5nIHZhbHVlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0
cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwotICAgIFtDRVJlYWN0aW9uc10g
dW5kZWZpbmVkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7Ci0gICAg
W0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgcmVtb3ZlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIGJvb2xlYW4gdG9nZ2xlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5l
ZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgc2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBu
YW1lc3BhY2VVUkksIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwor
ICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1yZW1vdmVBdHRyaWJ1dGVGb3JCaW5kaW5n
c10gdW5kZWZpbmVkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7Cisg
ICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPXJlbW92ZUF0dHJpYnV0ZU5TRm9yQmluZGlu
Z3NdIHVuZGVmaW5lZCByZW1vdmVBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwg
RE9NU3RyaW5nIGxvY2FsTmFtZSk7CisgICAgW0NFUmVhY3Rpb25zXSBib29sZWFuIHRvZ2dsZUF0
dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgb3B0aW9uYWwgYm9vbGVhbiBmb3JjZSk7
CiAgICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAg
IGJvb2xlYW4gaGFzQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmlu
ZyBsb2NhbE5hbWUpOwogCiAgICAgW0RPTUpJVD1SZWFkRE9NXSBBdHRyPyBnZXRBdHRyaWJ1dGVO
b2RlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2Rl
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtD
RVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0
ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXRB
dHRyaWJ1dGVOb2RlTlMoQXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFj
dGlvbnNdIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlv
bnNdIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyIGF0dHIpOworICAgIFtDRVJlYWN0aW9u
c10gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKEF0dHIgYXR0cik7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFNoYWRvd1Jvb3QgYXR0YWNoU2hhZG93KFNoYWRvd1Jvb3RJbml0IGluaXQpOwor
ICAgIFNoYWRvd1Jvb3QgYXR0YWNoU2hhZG93KFNoYWRvd1Jvb3RJbml0IGluaXQpOwogICAgIFtJ
bXBsZW1lbnRlZEFzPXNoYWRvd1Jvb3RGb3JCaW5kaW5ncywgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSByZWFkb25seSBhdHRyaWJ1dGUgU2hhZG93Um9vdD8gc2hhZG93Um9vdDsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gbWF0Y2hlcyhET01TdHJpbmcgc2VsZWN0b3Jz
KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVh
biB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7IC8vIEhpc3Rvcmlj
YWwgYWxpYXMgb2YgLm1hdGNoZXMuCisgICAgRWxlbWVudD8gY2xvc2VzdChET01TdHJpbmcgc2Vs
ZWN0b3JzKTsKKyAgICBib29sZWFuIG1hdGNoZXMoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAg
W0ltcGxlbWVudGVkQXM9bWF0Y2hlc10gYm9vbGVhbiB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoRE9N
U3RyaW5nIHNlbGVjdG9ycyk7IC8vIEhpc3RvcmljYWwgYWxpYXMgb2YgLm1hdGNoZXMuCiAKICAg
ICBbRE9NSklUPVJlYWRET01dIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERP
TVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5
VGFnTmFtZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsK
ICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKERPTVN0cmluZyBuYW1l
KTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVsZW1lbnQ/IGluc2Vy
dEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhp
c3RvcmljYWwuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNl
bnRUZXh0KERPTVN0cmluZyB3aGVyZSwgRE9NU3RyaW5nIGRhdGEpOyAvLyBIaXN0b3JpY2FsLgor
ICAgIFtDRVJlYWN0aW9uc10gRWxlbWVudD8gaW5zZXJ0QWRqYWNlbnRFbGVtZW50KERPTVN0cmlu
ZyB3aGVyZSwgRWxlbWVudCBlbGVtZW50KTsgLy8gSGlzdG9yaWNhbC4KKyAgICB1bmRlZmluZWQg
aW5zZXJ0QWRqYWNlbnRUZXh0KERPTVN0cmluZyB3aGVyZSwgRE9NU3RyaW5nIGRhdGEpOyAvLyBI
aXN0b3JpY2FsLgogCiAgICAgCiAgICAgLy8gRklYTUU6IE1vc3Qgb2YgdGhlIGZvbGxvd2luZyBu
b24tc3RhbmRhcmQgZXZlbnQgaGFuZGxlcnMgcHJvYmFibHkgbWFrZSBtb3JlIHNlbnNlIGFzIHBh
cnQgb2YgdGhlIEdsb2JhbEV2ZW50SGFuZGxlcnMgbWl4aW4uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAKIAogICAgIFtJ
bXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nc10gdW5kZWZpbmVkIGFkZEV2
ZW50TGlzdGVuZXIoW0F0b21TdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBj
YWxsYmFjaywgb3B0aW9uYWwgKEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9w
dGlvbnMgPSBmYWxzZSk7CiAgICAgW0ltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0ZW5lckZv
ckJpbmRpbmdzXSB1bmRlZmluZWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbVN0cmluZ10gRE9N
U3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGNhbGxiYWNrLCBvcHRpb25hbCAoRXZlbnRMaXN0
ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsKLSAgICBbSW1wbGVtZW50
ZWRBcz1kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MsIE1heVRocm93RXhjZXB0aW9uXSBib29sZWFu
IGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOworICAgIFtJbXBsZW1lbnRlZEFzPWRpc3BhdGNo
RXZlbnRGb3JCaW5kaW5nc10gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDggQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgSlNDdXN0b21N
YXJrRnVuY3Rpb24sCiBdIGludGVyZmFjZSBNZXNzYWdlUG9ydCA6IEV2ZW50VGFyZ2V0IHsKLSAg
ICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBv
c3RNZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsKLSAgICBb
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RN
ZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7
CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBt
ZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RN
ZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKICAgICB1bmRlZmluZWQgc3RhcnQoKTsKICAgICB1bmRl
ZmluZWQgY2xvc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiBdIGludGVyZmFjZSBN
dXRhdGlvbk9ic2VydmVyIHsKICAgICBjb25zdHJ1Y3RvcihNdXRhdGlvbkNhbGxiYWNrIGNhbGxi
YWNrKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG9ic2VydmUoTm9kZSB0
YXJnZXQsIG9wdGlvbmFsIE11dGF0aW9uT2JzZXJ2ZXJJbml0IG9wdGlvbnMpOworICAgIHVuZGVm
aW5lZCBvYnNlcnZlKE5vZGUgdGFyZ2V0LCBvcHRpb25hbCBNdXRhdGlvbk9ic2VydmVySW5pdCBv
cHRpb25zKTsKICAgICB1bmRlZmluZWQgZGlzY29ubmVjdCgpOwogICAgIFtSZXN1bHRGaWVsZD1y
ZWNvcmRzXSBzZXF1ZW5jZTxNdXRhdGlvblJlY29yZD4gdGFrZVJlY29yZHMoKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDgg
KzI5LDggQEAKICAgICBnZXR0ZXIgQXR0cj8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAg
ICBnZXR0ZXIgQXR0cj8gZ2V0TmFtZWRJdGVtKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKICAg
ICBBdHRyPyBnZXROYW1lZEl0ZW1OUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5n
IGxvY2FsTmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8g
c2V0TmFtZWRJdGVtKEF0dHIgYXR0cik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbiwgSW1wbGVtZW50ZWRBcz1zZXROYW1lZEl0ZW1dIEF0dHI/IHNldE5hbWVkSXRlbU5TKEF0
dHIgYXR0cik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciByZW1v
dmVOYW1lZEl0ZW0oRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwotICAgIFtDRVJlYWN0aW9ucywg
TWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlTmFtZWRJdGVtTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOworICAgIFtDRVJlYWN0aW9uc10gQXR0cj8g
c2V0TmFtZWRJdGVtKEF0dHIgYXR0cik7CisgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFz
PXNldE5hbWVkSXRlbV0gQXR0cj8gc2V0TmFtZWRJdGVtTlMoQXR0ciBhdHRyKTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIEF0dHIgcmVtb3ZlTmFtZWRJdGVtKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsK
KyAgICBbQ0VSZWFjdGlvbnNdIEF0dHIgcmVtb3ZlTmFtZWRJdGVtTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIERP
TVN0cmluZz8gdGV4dENvbnRlbnQ7CiAgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgbm9ybWFs
aXplKCk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9Y2xvbmVOb2RlRm9yQmlu
ZGluZ3MsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIE5vZGUgY2xvbmVOb2RlKG9wdGlv
bmFsIGJvb2xlYW4gZGVlcCA9IGZhbHNlKTsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVk
QXM9Y2xvbmVOb2RlRm9yQmluZGluZ3MsIE5ld09iamVjdF0gTm9kZSBjbG9uZU5vZGUob3B0aW9u
YWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOwogICAgIGJvb2xlYW4gaXNFcXVhbE5vZGUoTm9kZT8g
b3RoZXIpOwogICAgIGJvb2xlYW4gaXNTYW1lTm9kZShOb2RlPyBvdGhlcik7IC8vIEhpc3Rvcmlj
YWwgYWxpYXMgb2YgPT09LgogCkBAIC03OCwxMCArNzgsMTAgQEAKICAgICBET01TdHJpbmc/IGxv
b2t1cE5hbWVzcGFjZVVSSShET01TdHJpbmc/IHByZWZpeCk7CiAgICAgYm9vbGVhbiBpc0RlZmF1
bHROYW1lc3BhY2UoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkkpOwogCi0gICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSBpbnNlcnRCZWZvcmUoW1JldHVyblZhbHVlXSBOb2Rl
IG5vZGUsIE5vZGU/IGNoaWxkKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSBOb2RlIGFwcGVuZENoaWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBub2RlKTsKLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2RlIHJlcGxhY2VDaGlsZChOb2RlIG5vZGUsIFtS
ZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gTm9kZSByZW1vdmVDaGlsZChbUmV0dXJuVmFsdWVdIE5vZGUgY2hpbGQpOworICAgIFtD
RVJlYWN0aW9uc10gTm9kZSBpbnNlcnRCZWZvcmUoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUsIE5v
ZGU/IGNoaWxkKTsKKyAgICBbQ0VSZWFjdGlvbnNdIE5vZGUgYXBwZW5kQ2hpbGQoW1JldHVyblZh
bHVlXSBOb2RlIG5vZGUpOworICAgIFtDRVJlYWN0aW9uc10gTm9kZSByZXBsYWNlQ2hpbGQoTm9k
ZSBub2RlLCBbUmV0dXJuVmFsdWVdIE5vZGUgY2hpbGQpOworICAgIFtDRVJlYWN0aW9uc10gTm9k
ZSByZW1vdmVDaGlsZChbUmV0dXJuVmFsdWVdIE5vZGUgY2hpbGQpOwogfTsKIAogZGljdGlvbmFy
eSBHZXRSb290Tm9kZU9wdGlvbnMgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9k
ZUZpbHRlcj8gZmlsdGVyOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBuZXh0Tm9k
ZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcHJldmlvdXNOb2RlKCk7CisgICAg
Tm9kZT8gbmV4dE5vZGUoKTsKKyAgICBOb2RlPyBwcmV2aW91c05vZGUoKTsKIAogICAgIHVuZGVm
aW5lZCBkZXRhY2goKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQCBpbnRlcmZhY2UgbWl4aW4gUGFyZW50Tm9kZSB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAKLSAg
ICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMs
IFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYXBwZW5kKChOb2RlIG9y
IERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXBsYWNlQ2hpbGRyZW4oKE5vZGUgb3IgRE9NU3Ry
aW5nKS4uLiBub2Rlcyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmluZWQg
cHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMs
IFVuc2NvcGFibGVdIHVuZGVmaW5lZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rl
cyk7CisgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmluZWQgcmVwbGFjZUNoaWxk
cmVuKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBFbGVtZW50PyBxdWVyeVNlbGVjdG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKERP
TVN0cmluZyBzZWxlY3RvcnMpOworICAgIEVsZW1lbnQ/IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5n
IHNlbGVjdG9ycyk7CisgICAgW05ld09iamVjdF0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChE
T01TdHJpbmcgc2VsZWN0b3JzKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Ur
RE9NUGFyc2luZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlK0RP
TVBhcnNpbmcuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UrRE9NUGFyc2luZy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDUgQEAKIAogLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNpb25zLXRvLXRoZS1yYW5n
ZS1pbnRlcmZhY2UKIHBhcnRpYWwgaW50ZXJmYWNlIFJhbmdlIHsKLSAgICBbQ0VSZWFjdGlvbnMs
IE5ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50RnJhZ21lbnQgY3JlYXRlQ29u
dGV4dHVhbEZyYWdtZW50KERPTVN0cmluZyBmcmFnbWVudCk7CisgICAgW0NFUmVhY3Rpb25zLCBO
ZXdPYmplY3RdIERvY3VtZW50RnJhZ21lbnQgY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KERPTVN0
cmluZyBmcmFnbWVudCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaWRsCShyZXZpc2lvbiAyNzQ3
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw0MyArMjgsNDMgQEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlIGNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3Rh
cnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2V0RW5kKE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN0YXJ0QmVmb3JlKE5vZGUgbm9k
ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3RhcnRBZnRlcihOb2Rl
IG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEVuZEJlZm9yZShO
b2RlIG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEVuZEFmdGVy
KE5vZGUgbm9kZSk7CisgICAgdW5kZWZpbmVkIHNldFN0YXJ0KE5vZGUgbm9kZSwgdW5zaWduZWQg
bG9uZyBvZmZzZXQpOworICAgIHVuZGVmaW5lZCBzZXRFbmQoTm9kZSBub2RlLCB1bnNpZ25lZCBs
b25nIG9mZnNldCk7CisgICAgdW5kZWZpbmVkIHNldFN0YXJ0QmVmb3JlKE5vZGUgbm9kZSk7Cisg
ICAgdW5kZWZpbmVkIHNldFN0YXJ0QWZ0ZXIoTm9kZSBub2RlKTsKKyAgICB1bmRlZmluZWQgc2V0
RW5kQmVmb3JlKE5vZGUgbm9kZSk7CisgICAgdW5kZWZpbmVkIHNldEVuZEFmdGVyKE5vZGUgbm9k
ZSk7CiAgICAgdW5kZWZpbmVkIGNvbGxhcHNlKG9wdGlvbmFsIGJvb2xlYW4gdG9TdGFydCA9IGZh
bHNlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZWxlY3ROb2RlKE5vZGUg
bm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VsZWN0Tm9kZUNvbnRl
bnRzKE5vZGUgbm9kZSk7CisgICAgdW5kZWZpbmVkIHNlbGVjdE5vZGUoTm9kZSBub2RlKTsKKyAg
ICB1bmRlZmluZWQgc2VsZWN0Tm9kZUNvbnRlbnRzKE5vZGUgbm9kZSk7CiAKICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBTVEFSVF9UT19TVEFSVCA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgU1RBUlRfVE9fRU5EID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fRU5E
ID0gMjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRfVE9fU1RBUlQgPSAzOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gc2hvcnQgY29tcGFyZUJvdW5kYXJ5UG9pbnRzKHVuc2lnbmVkIHNo
b3J0IGhvdywgUmFuZ2Ugc291cmNlUmFuZ2UpOworICAgIHNob3J0IGNvbXBhcmVCb3VuZGFyeVBv
aW50cyh1bnNpZ25lZCBzaG9ydCBob3csIFJhbmdlIHNvdXJjZVJhbmdlKTsKIAotICAgIFtDRVJl
YWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVDb250ZW50cygpOwot
ICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRG
cmFnbWVudCBleHRyYWN0Q29udGVudHMoKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50RnJhZ21lbnQgY2xvbmVDb250ZW50cygpOwotICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBpbnNlcnROb2RlKE5v
ZGUgbm9kZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHN1cnJvdW5kQ29udGVudHMoTm9kZSBuZXdQYXJlbnQpOworICAgIFtDRVJlYWN0aW9uc10gdW5k
ZWZpbmVkIGRlbGV0ZUNvbnRlbnRzKCk7CisgICAgW0NFUmVhY3Rpb25zLCBOZXdPYmplY3RdIERv
Y3VtZW50RnJhZ21lbnQgZXh0cmFjdENvbnRlbnRzKCk7CisgICAgW0NFUmVhY3Rpb25zLCBOZXdP
YmplY3RdIERvY3VtZW50RnJhZ21lbnQgY2xvbmVDb250ZW50cygpOworICAgIFtDRVJlYWN0aW9u
c10gdW5kZWZpbmVkIGluc2VydE5vZGUoTm9kZSBub2RlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVu
ZGVmaW5lZCBzdXJyb3VuZENvbnRlbnRzKE5vZGUgbmV3UGFyZW50KTsKIAogICAgIFtOZXdPYmpl
Y3RdIFJhbmdlIGNsb25lUmFuZ2UoKTsKICAgICB1bmRlZmluZWQgZGV0YWNoKCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNQb2ludEluUmFuZ2UoTm9kZSBub2RlLCB1bnNp
Z25lZCBsb25nIG9mZnNldCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJl
UG9pbnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgYm9vbGVhbiBpc1Bv
aW50SW5SYW5nZShOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBzaG9ydCBj
b21wYXJlUG9pbnQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAKICAgICBib29s
ZWFuIGludGVyc2VjdHNOb2RlKE5vZGUgbm9kZSk7CiAKICAgICBzdHJpbmdpZmllcjsKIAogICAg
IC8vIE5vbi1zdGFuZGFyZDogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgZHJvcCB0aGlzIHNpbmNlIG5v
IG90aGVyIGJyb3dzZXIgc3VwcG9ydHMgaXQKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBleHBhbmQob3B0aW9uYWwgRE9NU3RyaW5nIHVuaXQpOworICAgIHVuZGVmaW5lZCBleHBh
bmQob3B0aW9uYWwgRE9NU3RyaW5nIHVuaXQpOwogCiAgICAgLy8gTm9uLXN0YW5kYXJkOiBXZSBz
aG91bGQgbGlrZWx5IGRyb3AgdGhpcyBzaW5jZSB3ZSBhZGRlZCBpdCBmb3IgRmlyZWZveCBpbnRl
cm9wZXJhYmlsaXR5LCBidXQgbm93IG5vIG90aGVyIGJyb3dzZXIgc3VwcG9ydHMgaXQuCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJlTm9kZShOb2RlIG5vZGUpOworICAgIHNo
b3J0IGNvbXBhcmVOb2RlKE5vZGUgbm9kZSk7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9E
RV9CRUZPUkUgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQUZURVIgPSAxOwog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PREVfQkVGT1JFX0FORF9BRlRFUiA9IDI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIF0gaW50ZXJmYWNlIFRl
eHQgOiBDaGFyYWN0ZXJEYXRhIHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIGNvbnN0cnVjdG9y
KG9wdGlvbmFsIERPTVN0cmluZyBkYXRhID0gIiIpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBUZXh0IHNwbGl0VGV4dCh1bnNpZ25lZCBsb25nIG9mZnNldCk7CisgICAgVGV4dCBzcGxpdFRl
eHQodW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgd2hvbGVUZXh0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw1ICs0MSw1IEBAIGRpY3Rpb25hcnkgVGV4dERlY29kZU9wdGlv
bnMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZmF0YWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gaWdub3JlQk9NOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVVNWU3RyaW5nIGRlY29k
ZShvcHRpb25hbCBbQWxsb3dTaGFyZWRdIEJ1ZmZlclNvdXJjZT8gaW5wdXQsIG9wdGlvbmFsIFRl
eHREZWNvZGVPcHRpb25zIG9wdGlvbnMpOworICAgIFVTVlN0cmluZyBkZWNvZGUob3B0aW9uYWwg
W0FsbG93U2hhcmVkXSBCdWZmZXJTb3VyY2U/IGlucHV0LCBvcHRpb25hbCBUZXh0RGVjb2RlT3B0
aW9ucyBvcHRpb25zKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXJT
dHJlYW1EZWNvZGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERl
Y29kZXJTdHJlYW1EZWNvZGVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDYgQEAKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgbGFiZWwsIGJvb2xlYW4gZmF0
YWwsIGJvb2xlYW4gaWdub3JlQk9NKTsKIAogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gRE9NU3Ry
aW5nIGVuY29kaW5nKCk7Ci0gICAgW1ByaXZhdGVJZGVudGlmaWVyLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIGRlY29kZShbQWxsb3dTaGFyZWRdIEJ1ZmZlclNvdXJjZSBzb3VyY2UpOwot
ICAgIFtQcml2YXRlSWRlbnRpZmllciwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBmbHVz
aCgpOworICAgIFtQcml2YXRlSWRlbnRpZmllcl0gRE9NU3RyaW5nIGRlY29kZShbQWxsb3dTaGFy
ZWRdIEJ1ZmZlclNvdXJjZSBzb3VyY2UpOworICAgIFtQcml2YXRlSWRlbnRpZmllcl0gRE9NU3Ry
aW5nIGZsdXNoKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUZp
bHRlcj8gZmlsdGVyOwogICAgIGF0dHJpYnV0ZSBOb2RlIGN1cnJlbnROb2RlOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBOb2RlPyBwYXJlbnROb2RlKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBOb2RlPyBmaXJzdENoaWxkKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBs
YXN0Q2hpbGQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IHByZXZpb3VzU2libGlu
ZygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gbmV4dFNpYmxpbmcoKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IHByZXZpb3VzTm9kZSgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gTm9kZT8gbmV4dE5vZGUoKTsKKyAgICBOb2RlPyBwYXJlbnROb2RlKCk7CisgICAg
Tm9kZT8gZmlyc3RDaGlsZCgpOworICAgIE5vZGU/IGxhc3RDaGlsZCgpOworICAgIE5vZGU/IHBy
ZXZpb3VzU2libGluZygpOworICAgIE5vZGU/IG5leHRTaWJsaW5nKCk7CisgICAgTm9kZT8gcHJl
dmlvdXNOb2RlKCk7CisgICAgTm9kZT8gbmV4dE5vZGUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiAoQnVmZmVy
U291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaQogCiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIEJsb2Igc2xpY2Uob3B0aW9uYWwgbG9uZyBsb25nIHN0YXJ0ID0gMCwgb3B0aW9u
YWwgbG9uZyBsb25nIGVuZCA9IDB4N0ZGRkZGRkZGRkZGRkZGRiwgb3B0aW9uYWwgRE9NU3RyaW5n
IGNvbnRlbnRUeXBlID0gIiIpOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIFJlYWRhYmxlU3RyZWFtIHN0cmVhbSgp
OworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFJlYWRh
YmxlU3RyZWFtIHN0cmVhbSgpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIFByb21pc2U8VVNWU3RyaW5nPiB0ZXh0KCk7CiAgICAgW05ld09iamVjdCwg
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0MywxMCBAQAogCiAgICAgLy8gRklYTUU6IElu
IGFsbCBmb3VyIG1ldGhvZHMgZm91bmQgYmVsb3csIHRoZSBibG9iIHBhcmFtZXRlciBzaG91bGQg
bm90IGJlIG51bGxhYmxlLgogICAgIC8vIGFzeW5jIHJlYWQgbWV0aG9kcwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlYWRBc0FycmF5QnVmZmVyKEJsb2I/IGJsb2IpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlYWRBc0JpbmFyeVN0cmluZyhCbG9iPyBi
bG9iKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWFkQXNUZXh0KEJsb2I/
IGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgcmVhZEFzRGF0YVVSTChCbG9iPyBibG9iKTsKKyAgICB1bmRlZmluZWQg
cmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7CisgICAgdW5kZWZpbmVkIHJlYWRBc0JpbmFy
eVN0cmluZyhCbG9iPyBibG9iKTsKKyAgICB1bmRlZmluZWQgcmVhZEFzVGV4dChCbG9iPyBibG9i
LCBvcHRpb25hbCBET01TdHJpbmcgZW5jb2RpbmcpOworICAgIHVuZGVmaW5lZCByZWFkQXNEYXRh
VVJMKEJsb2I/IGJsb2IpOwogCiAgICAgdW5kZWZpbmVkIGFib3J0KCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzQsOCArMzQsOCBAQAogXSBpbnRlcmZhY2UgRmlsZVJlYWRlclN5bmMgewogICAgIGNv
bnN0cnVjdG9yKCk7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5
VGhyb3dFeGNlcHRpb25dIEFycmF5QnVmZmVyIHJlYWRBc0FycmF5QnVmZmVyKEJsb2IgYmxvYik7
Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9u
XSBET01TdHJpbmcgcmVhZEFzQmluYXJ5U3RyaW5nKEJsb2IgYmxvYik7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVh
ZEFzVGV4dChCbG9iIGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyA9ICIiKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyByZWFkQXNEYXRhVVJMKEJsb2IgYmxvYik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIEFycmF5QnVmZmVyIHJlYWRBc0FycmF5QnVmZmVyKEJsb2IgYmxvYik7
CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIERPTVN0cmluZyByZWFkQXNC
aW5hcnlTdHJpbmcoQmxvYiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gRE9NU3RyaW5nIHJlYWRBc1RleHQoQmxvYiBibG9iLCBvcHRpb25hbCBET01TdHJpbmcg
ZW5jb2RpbmcgPSAiIik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIERP
TVN0cmluZyByZWFkQXNEYXRhVVJMKEJsb2IgYmxvYik7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVG9rZW5MaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Ub2tlbkxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTEgQEAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVy
IERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICBib29sZWFuIGNvbnRh
aW5zKERPTVN0cmluZyB0b2tlbik7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGFkZChET01TdHJpbmcuLi4gdG9rZW5zKTsKLSAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlKERPTVN0cmluZy4uLiB0b2tlbnMp
OwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gdG9nZ2xlKERP
TVN0cmluZyB0b2tlbiwgb3B0aW9uYWwgYm9vbGVhbiBmb3JjZSk7Ci0gICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiByZXBsYWNlKERPTVN0cmluZyB0b2tlbiwgRE9N
U3RyaW5nIG5ld1Rva2VuKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gc3VwcG9y
dHMoRE9NU3RyaW5nIHRva2VuKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBhZGQoRE9N
U3RyaW5nLi4uIHRva2Vucyk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgcmVtb3ZlKERP
TVN0cmluZy4uLiB0b2tlbnMpOworICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiB0b2dnbGUoRE9N
U3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKKyAgICBbQ0VSZWFjdGlvbnNd
IGJvb2xlYW4gcmVwbGFjZShET01TdHJpbmcgdG9rZW4sIERPTVN0cmluZyBuZXdUb2tlbik7Cisg
ICAgYm9vbGVhbiBzdXBwb3J0cyhET01TdHJpbmcgdG9rZW4pOwogICAgIFtDRVJlYWN0aW9uc10g
c3RyaW5naWZpZXIgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKICAgICBpdGVyYWJsZTxET01T
dHJpbmc+OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDExIEBAIHR5cGVkZWYgKAog
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIENhbGxUcmFjZXI9SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyXSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBN
YXlUaHJvd0V4Y2VwdGlvbl0gUmVuZGVyaW5nQ29udGV4dD8gZ2V0Q29udGV4dChET01TdHJpbmcg
Y29udGV4dElkLCBhbnkuLi4gYXJndW1lbnRzKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFueS4u
LiBhcmd1bWVudHMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9EYXRh
VVJMKG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgdG9CbG9iKEJsb2JDYWxsYmFjayBjYWxsYmFjaywgb3B0aW9uYWwgRE9NU3RyaW5nIHR5
cGUsIG9wdGlvbmFsIGFueSBxdWFsaXR5KTsKLSAgICBbQ29uZGl0aW9uYWw9T0ZGU0NSRUVOX0NB
TlZBUywgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25d
IE9mZnNjcmVlbkNhbnZhcyB0cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpOworICAgIERPTVN0
cmluZyB0b0RhdGFVUkwob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsIG9wdGlvbmFsIGFueSBxdWFs
aXR5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdW5kZWZpbmVkIHRv
QmxvYihCbG9iQ2FsbGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRp
b25hbCBhbnkgcXVhbGl0eSk7CisgICAgW0NvbmRpdGlvbmFsPU9GRlNDUkVFTl9DQU5WQVMsIENh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIE9mZnNjcmVlbkNhbnZhcyB0cmFuc2ZlckNv
bnRyb2xUb09mZnNjcmVlbigpOwogCi0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgQ2Fs
bFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIE1lZGlhU3RyZWFt
IGNhcHR1cmVTdHJlYW0ob3B0aW9uYWwgZG91YmxlIGZyYW1lUmVxdWVzdFJhdGUpOworICAgIFtD
b25kaXRpb25hbD1NRURJQV9TVFJFQU0sIENhbGxXaXRoPURvY3VtZW50LCBOZXdPYmplY3RdIE1l
ZGlhU3RyZWFtIGNhcHR1cmVTdHJlYW0ob3B0aW9uYWwgZG91YmxlIGZyYW1lUmVxdWVzdFJhdGUp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNiBAQAogICAgIFtDRVJlYWN0aW9ucywg
UmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gb3BlbjsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHJldHVyblZhbHVlOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHNob3coKTsKLSAgICBb
Q0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2hvd01vZGFsKCk7Cisg
ICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgc2hvd01vZGFsKCk7CiAgICAgW0NFUmVhY3Rpb25z
XSB1bmRlZmluZWQgY2xvc2Uob3B0aW9uYWwgRE9NU3RyaW5nIHJldHVyblZhbHVlKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDUgKzI5LDUgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB3aWR0aDsKIAotICAgIFtDaGVja1Nl
Y3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50
KCk7CisgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBtYXJnaW5IZWlnaHQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0g
YXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRo
OwogCi0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1l
bnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50
IGdldFNWR0RvY3VtZW50KCk7CiAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBoZWlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBjb250ZW50V2luZG93Owog
Ci0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQg
Z2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdl
dFNWR0RvY3VtZW50KCk7CiAKICAgICBbRW5hYmxlZEJ5U2V0dGluZz1SZWZlcnJlclBvbGljeUF0
dHJpYnV0ZSwgSW1wbGVtZW50ZWRBcz1yZWZlcnJlclBvbGljeUZvckJpbmRpbmdzLCBDRVJlYWN0
aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgcmVmZXJyZXJQb2xpY3k7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQAogICAgIGF0dHJpYnV0ZSBEYXRlPyB2YWx1ZUFzRGF0
ZTsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSB2YWx1ZUFzTnVtYmVyOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc3RlcFVwKG9wdGlvbmFsIGxvbmcgbiA9
IDEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHN0ZXBEb3duKG9wdGlvbmFs
IGxvbmcgbiA9IDEpOworICAgIHVuZGVmaW5lZCBzdGVwVXAob3B0aW9uYWwgbG9uZyBuID0gMSk7
CisgICAgdW5kZWZpbmVkIHN0ZXBEb3duKG9wdGlvbmFsIGxvbmcgbiA9IDEpOwogCiAgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwpAQCAtODIsMTAgKzgyLDEw
IEBACiAgICAgW0ltcGxlbWVudGVkQXM9c2VsZWN0aW9uRW5kRm9yQmluZGluZ3NdIGF0dHJpYnV0
ZSBsb25nIHNlbGVjdGlvbkVuZDsKICAgICBbSW1wbGVtZW50ZWRBcz1zZWxlY3Rpb25EaXJlY3Rp
b25Gb3JCaW5kaW5nc10gYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Rpb25EaXJlY3Rpb247CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5n
IHJlcGxhY2VtZW50KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRSYW5n
ZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50LCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l
ZCBsb25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUpOworICAgIHVuZGVm
aW5lZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKKyAgICB1bmRlZmluZWQg
c2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQgbG9uZyBzdGFydCwg
dW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rpb25Nb2RlKTsKIAot
ICAgIFtJbXBsZW1lbnRlZEFzPXNldFNlbGVjdGlvblJhbmdlRm9yQmluZGluZ3MsIE1heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2VsZWN0aW9uUmFuZ2UobG9uZyBzdGFydCwgbG9uZyBl
bmQsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOworICAgIFtJbXBsZW1lbnRlZEFzPXNl
dFNlbGVjdGlvblJhbmdlRm9yQmluZGluZ3NdIHVuZGVmaW5lZCBzZXRTZWxlY3Rpb25SYW5nZShs
b25nIHN0YXJ0LCBsb25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CiAKICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFs
aWduOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01T
dHJpbmcgdXNlTWFwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgdHlwZWRlZiAoCiAg
ICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgRW5hYmxlZEJ5U2V0dGluZz1FbmNyeXB0
ZWRNZWRpYUFQSSwgRGlzYWJsZWRCeVF1aXJrPWhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3Vw
cG9ydF0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbndhaXRpbmdmb3JrZXk7CiAgICAgW0NvbmRp
dGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgRW5hYmxlZEJ5U2V0dGluZz1FbmNyeXB0ZWRNZWRpYUFQ
SSwgRGlzYWJsZWRCeVF1aXJrPWhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydF0gUHJv
bWlzZTx1bmRlZmluZWQ+IHNldE1lZGlhS2V5cyhNZWRpYUtleXM/IG1lZGlhS2V5cyk7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFRleHRUcmFjayBhZGRUZXh0VHJhY2soRE9NU3RyaW5nIGtp
bmQsIG9wdGlvbmFsIERPTVN0cmluZyBsYWJlbCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgbGFu
Z3VhZ2UgPSAiIik7CisgICAgVGV4dFRyYWNrIGFkZFRleHRUcmFjayhET01TdHJpbmcga2luZCwg
b3B0aW9uYWwgRE9NU3RyaW5nIGxhYmVsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyBsYW5ndWFn
ZSA9ICIiKTsKICAgICBbSW1wbGVtZW50ZWRBcz1lbnN1cmVBdWRpb1RyYWNrc10gcmVhZG9ubHkg
YXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOwogICAgIFtJbXBsZW1lbnRlZEFz
PWVuc3VyZVRleHRUcmFja3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRU
cmFja3M7CiAgICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlVmlkZW9UcmFja3NdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBWaWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDks
NSArNDksNSBAQAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRl
IERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93
UHJveHkgY29udGVudFdpbmRvdzsKIAotICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhy
b3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CisgICAgW0NoZWNrU2VjdXJp
dHlGb3JOb2RlXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uIDogSFRNTENvbGxlY3Rpb24gewogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtDRVJlYWN0aW9uc10gc2V0dGVyIHVuZGVmaW5lZCAo
dW5zaWduZWQgbG9uZyBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQ/IG9wdGlvbik7Ci0gICAgW0NF
UmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFkZCgoSFRNTE9wdGlvbkVs
ZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxFbGVt
ZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5l
ZCBhZGQoKEhUTUxPcHRpb25FbGVtZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQs
IG9wdGlvbmFsIChIVE1MRWxlbWVudCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CiAgICAgW0NF
UmVhY3Rpb25zXSB1bmRlZmluZWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwogCiAgICAgYXR0cmlidXRl
IGxvbmcgc2VsZWN0ZWRJbmRleDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQAogICAg
IFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRl
ciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsgLy8gRklYTUU6
IFRoZSBzcGVjIGhhcyB0aGlzIHJldHVybmluZyBFbGVtZW50Py4KICAgICBIVE1MT3B0aW9uRWxl
bWVudD8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5h
bWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZGQo
KEhUTUxPcHRpb25FbGVtZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlv
bmFsIChIVE1MRWxlbWVudCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7Ci0gICAgW0NFUmVhY3Rp
b25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUg
b3ZlcmxvYWQKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBhZGQoKEhUTUxPcHRpb25FbGVt
ZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVu
dCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQg
cmVtb3ZlKCk7IC8vIENoaWxkTm9kZSBvdmVybG9hZAogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZp
bmVkIHJlbW92ZShsb25nIGluZGV4KTsKICAgICBbQ0VSZWFjdGlvbnNdIHNldHRlciB1bmRlZmlu
ZWQgKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50PyBvcHRpb24pOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDYgKzQ3LDYgQEAKICAgICBIVE1MRWxlbWVudCBjcmVhdGVDYXB0aW9u
KCk7CiAgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgZGVsZXRlQ2FwdGlvbigpOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0aW9uYWwgbG9uZyBp
bmRleCA9IC0xKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgZGVsZXRlUm93KGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRp
b25hbCBsb25nIGluZGV4ID0gLTEpOworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGRlbGV0
ZVJvdyhsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDYg
QEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWNoYXJdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY2g7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyb2Zm
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoT2ZmOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdkFsaWduOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gSFRNTEVsZW1lbnQgaW5zZXJ0Q2VsbChvcHRpb25hbCBsb25nIGluZGV4ID0gLTEpOwot
ICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVDZWxs
KGxvbmcgaW5kZXgpOworICAgIEhUTUxFbGVtZW50IGluc2VydENlbGwob3B0aW9uYWwgbG9uZyBp
bmRleCA9IC0xKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBkZWxldGVDZWxsKGxvbmcg
aW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NiBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9mZl0gYXR0cmli
dXRlIERPTVN0cmluZyBjaE9mZjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRN
TENvbGxlY3Rpb24gcm93czsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEhUTUxFbGVtZW50IGlu
c2VydFJvdyhvcHRpb25hbCBsb25nIGluZGV4ID0gLTEpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CisgICAgSFRN
TEVsZW1lbnQgaW5zZXJ0Um93KG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7CisgICAgW0NFUmVh
Y3Rpb25zXSB1bmRlZmluZWQgZGVsZXRlUm93KGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsOCArNTUsOCBAQAogICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGlvbkVu
ZDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlbGVjdGlvbkRpcmVjdGlvbjsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFj
ZW1lbnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFJhbmdlVGV4dChE
T01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcg
ZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CisgICAgdW5kZWZpbmVkIHNl
dFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQpOworICAgIHVuZGVmaW5lZCBzZXRSYW5n
ZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50LCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l
ZCBsb25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUpOwogCiAgICAgdW5k
ZWZpbmVkIHNldFNlbGVjdGlvblJhbmdlKG9wdGlvbmFsIGxvbmcgc3RhcnQgPSAwLCBvcHRpb25h
bCBsb25nIGVuZCA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEyICszOSwxMiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdl
YmtpdFN1cHBvcnRzRnVsbHNjcmVlbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3
ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHdlYmtpdEVudGVyRnVsbHNjcmVlbigpOworICAgIHVuZGVmaW5lZCB3ZWJraXRFbnRl
ckZ1bGxzY3JlZW4oKTsKICAgICB1bmRlZmluZWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKIAog
ICAgIC8vIE1haW50YWluICJGdWxsU2NyZWVuIiBjYXBpdGFsaXphdGlvbiBzY2hlbWUgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjA4MQotICAgIFtJbXBsZW1lbnRlZEFzPXdlYmtpdEVudGVyRnVsbHNj
cmVlbiwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB3ZWJraXRFbnRlckZ1bGxTY3JlZW4o
KTsKKyAgICBbSW1wbGVtZW50ZWRBcz13ZWJraXRFbnRlckZ1bGxzY3JlZW5dIHVuZGVmaW5lZCB3
ZWJraXRFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBbSW1wbGVtZW50ZWRBcz13ZWJraXRFeGl0RnVs
bHNjcmVlbl0gdW5kZWZpbmVkIHdlYmtpdEV4aXRGdWxsU2NyZWVuKCk7CiAKICAgICBbQ29uZGl0
aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBl
bnVtIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlCiAgICAgYXR0cmlidXRlIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgYXR0cmlidXRlIFtFbmZvcmNlUmFuZ2Vd
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoT2Zm
c2NyZWVuUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIGFueS4uLiBhcmd1bWVudHMp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSW1hZ2VCaXRtYXAgdHJhbnNmZXJUb0ltYWdlQml0
bWFwKCk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gT2Zmc2NyZWVuUmVuZGVyaW5nQ29u
dGV4dD8gZ2V0Q29udGV4dChPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlw
ZSwgYW55Li4uIGFyZ3VtZW50cyk7CisgICAgSW1hZ2VCaXRtYXAgdHJhbnNmZXJUb0ltYWdlQml0
bWFwKCk7CiAgICAgUHJvbWlzZTxCbG9iPiBjb252ZXJ0VG9CbG9iKG9wdGlvbmFsIEltYWdlRW5j
b2RlT3B0aW9ucyBvcHRpb25zKTsKIAogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNiBAQAogICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBUaW1lUmFuZ2VzIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsZW5ndGg7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZG91
YmxlIHN0YXJ0KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5yZXN0cmljdGVkIGRvdWJsZSBlbmQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdW5yZXN0
cmljdGVkIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB1bnJlc3RyaWN0
ZWQgZG91YmxlIGVuZCh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3SW1hZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgaW50ZXJmYWNlIG1peGluIENhbnZhc0RyYXdJ
bWFnZSB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50
cyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCiAKICAgICAvLyBkcmF3aW5n
IGltYWdlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRyYXdJbWFnZShDYW52
YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVk
IGRvdWJsZSBkeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZHJhd0ltYWdl
KENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR4LCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGR5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR3LCB1bnJlc3RyaWN0ZWQgZG91
YmxlIGRoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkcmF3SW1hZ2UoQ2Fu
dmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgc3gsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgc3ksIHVucmVzdHJpY3RlZCBkb3VibGUgc3csIHVucmVzdHJpY3RlZCBkb3VibGUg
c2gsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHksIHVucmVz
dHJpY3RlZCBkb3VibGUgZHcsIHVucmVzdHJpY3RlZCBkb3VibGUgZGgpOworICAgIHVuZGVmaW5l
ZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUg
ZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHkpOworICAgIHVuZGVmaW5lZCBkcmF3SW1hZ2UoQ2Fu
dmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgZHksIHVucmVzdHJpY3RlZCBkb3VibGUgZHcsIHVucmVzdHJpY3RlZCBkb3VibGUg
ZGgpOworICAgIHVuZGVmaW5lZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVu
cmVzdHJpY3RlZCBkb3VibGUgc3gsIHVucmVzdHJpY3RlZCBkb3VibGUgc3ksIHVucmVzdHJpY3Rl
ZCBkb3VibGUgc3csIHVucmVzdHJpY3RlZCBkb3VibGUgc2gsIHVucmVzdHJpY3RlZCBkb3VibGUg
ZHgsIHVucmVzdHJpY3RlZCBkb3VibGUgZHksIHVucmVzdHJpY3RlZCBkb3VibGUgZHcsIHVucmVz
dHJpY3RlZCBkb3VibGUgZGgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBpbnRlcmZhY2UgbWl4aW4gQ2FudmFz
RmlsbFN0cm9rZVN0eWxlcyB7CiAgICAgYXR0cmlidXRlIChET01TdHJpbmcgb3IgQ2FudmFzR3Jh
ZGllbnQgb3IgQ2FudmFzUGF0dGVybikgZmlsbFN0eWxlOyAvLyAoZGVmYXVsdCBibGFjaykKIAog
ICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxkIGJlIGRv
dWJsZXMuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5l
YXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChm
bG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIx
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4o
Q2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIHJlcGV0aXRpb24pOworICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50
KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKKyAgICBDYW52YXNHcmFk
aWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBm
bG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKKyAgICBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQ
YXR0ZXJuKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdd
IERPTVN0cmluZyByZXBldGl0aW9uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNHcmFkaWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDUgKzMxLDUgQEAKICAgICAvLyBGSVhNRTogVGhlIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cg
c2hvdWxkIGJlIGEgZG91YmxlLgogCiAgICAgLy8gb3BhcXVlIG9iamVjdAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFkZENvbG9yU3RvcChmbG9hdCBvZmZzZXQsIERPTVN0cmlu
ZyBjb2xvcik7CisgICAgdW5kZWZpbmVkIGFkZENvbG9yU3RvcChmbG9hdCBvZmZzZXQsIERPTVN0
cmluZyBjb2xvcik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
SW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNJbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsy
OCw5IEBAIGludGVyZmFjZSBtaXhpbiBDYW52YXNJbWFnZURhdGEgewogICAgIC8vIEZJWE1FOiBB
bGwgdGhlIGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91bGQgYmUgbG9uZ3MuCiAKICAgICAvLyBw
aXhlbCBtYW5pcHVsYXRpb24KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVh
dGVJbWFnZURhdGEoZmxvYXQgc3csIGZsb2F0IHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRlSW1h
Z2VEYXRhKGZsb2F0IHN3LCBmbG9hdCBzaCk7CiAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0
YShJbWFnZURhdGEgaW1hZ2VkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0
YSBnZXRJbWFnZURhdGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOwor
ICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywg
ZmxvYXQgc2gpOwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhIGltYWdlZGF0
YSwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VEYXRhKEltYWdl
RGF0YSBpbWFnZWRhdGEsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZGlydHlYLCBmbG9hdCBk
aXJ0eVksIGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0IGRpcnR5SGVpZ2h0KTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDExICszMywxMSBAQCBpbnRlcmZhY2UgbWl4aW4gQ2FudmFzUGF0aCB7CiAg
ICAgdW5kZWZpbmVkIGxpbmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBk
b3VibGUgeSk7CiAgICAgdW5kZWZpbmVkIHF1YWRyYXRpY0N1cnZlVG8odW5yZXN0cmljdGVkIGRv
dWJsZSBjcHgsIHVucmVzdHJpY3RlZCBkb3VibGUgY3B5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgs
IHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CiAgICAgdW5kZWZpbmVkIGJlemllckN1cnZlVG8odW5y
ZXN0cmljdGVkIGRvdWJsZSBjcDF4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXksIHVucmVzdHJp
Y3RlZCBkb3VibGUgY3AyeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDJ5LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5yZXN0cmljdGVkIGRv
dWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5yZXN0cmljdGVkIGRvdWJsZSB5Miwg
dW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMpOwotICAgIC8vIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUgeDEsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgeTEsIHVucmVzdHJpY3RlZCBkb3VibGUgeDIsIHVucmVzdHJpY3RlZCBkb3VibGUgeTIsIHVu
cmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNZLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uKTsKKyAgICB1bmRlZmluZWQgYXJjVG8odW5yZXN0
cmljdGVkIGRvdWJsZSB4MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRv
dWJsZSB4MiwgdW5yZXN0cmljdGVkIGRvdWJsZSB5MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRp
dXMpOworICAgIC8vIHVuZGVmaW5lZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbik7CiAgICAgdW5kZWZpbmVk
IHJlY3QodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVz
dHJpY3RlZCBkb3VibGUgdywgdW5yZXN0cmljdGVkIGRvdWJsZSBoKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBhcmModW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJv
b2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBlbGxpcHNlKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbiwgdW5yZXN0cmljdGVkIGRvdWJsZSBz
dGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFu
IGFudGljbG9ja3dpc2UgPSBmYWxzZSk7CisgICAgdW5kZWZpbmVkIGFyYyh1bnJlc3RyaWN0ZWQg
ZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRp
dXMsIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBl
bmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOworICAgIHVu
ZGVmaW5lZCBlbGxpcHNlKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFk
aXVzWSwgdW5yZXN0cmljdGVkIGRvdWJsZSByb3RhdGlvbiwgdW5yZXN0cmljdGVkIGRvdWJsZSBz
dGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFu
IGFudGljbG9ja3dpc2UgPSBmYWxzZSk7CiAKICAgICBbRW5hYmxlZEF0UnVudGltZT1JbnNwZWN0
b3JBZGRpdGlvbnNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBjdXJyZW50WDsKICAgICBbRW5h
YmxlZEF0UnVudGltZT1JbnNwZWN0b3JBZGRpdGlvbnNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9h
dCBjdXJyZW50WTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXR0ZXJuLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIENhbnZhc1BhdHRlcm4gewog
ICAgIC8vIG9wYXF1ZSBvYmplY3QKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBz
ZXRUcmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdW5k
ZWZpbmVkIHNldFRyYW5zZm9ybShvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNmb3JtKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUcmFuc2Zvcm0uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9y
bS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDYgQEAgaW50ZXJm
YWNlIG1peGluIENhbnZhc1RyYW5zZm9ybSB7CiAKICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXgg
Z2V0VHJhbnNmb3JtKCk7CiAgICAgdW5kZWZpbmVkIHNldFRyYW5zZm9ybSh1bnJlc3RyaWN0ZWQg
ZmxvYXQgYSwgdW5yZXN0cmljdGVkIGZsb2F0IGIsIHVucmVzdHJpY3RlZCBmbG9hdCBjLCB1bnJl
c3RyaWN0ZWQgZmxvYXQgZCwgdW5yZXN0cmljdGVkIGZsb2F0IGUsIHVucmVzdHJpY3RlZCBmbG9h
dCBmKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRUcmFuc2Zvcm0ob3B0
aW9uYWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CisgICAgdW5kZWZpbmVkIHNldFRyYW5z
Zm9ybShvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNmb3JtKTsKICAgICB1bmRlZmluZWQg
cmVzZXRUcmFuc2Zvcm0oKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9J
bWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9u
IDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVy
aW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDYgQEAKIF0gaW50ZXJm
YWNlIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEhUTUxDYW52YXNFbGVtZW50IGNhbnZhczsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHRyYW5zZmVyRnJvbUltYWdlQml0bWFwKEltYWdlQml0bWFwPyBiaXRtYXApOworICAg
IHVuZGVmaW5lZCB0cmFuc2ZlckZyb21JbWFnZUJpdG1hcChJbWFnZUJpdG1hcD8gYml0bWFwKTsK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0aDJELmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0aDJELmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogICAgIC8vIGNvbnN0cnVjdG9yKHNlcXVlbmNlPFBh
dGgyRD4gcGF0aHMsIG9wdGlvbmFsIENhbnZhc0ZpbGxSdWxlIGZpbGxSdWxlID0gIm5vbnplcm8i
KTsKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBhZGRQYXRoKFBhdGgyRCBwYXRoLCBvcHRpb25hbCBET01NYXRyaXgyRElu
aXQgdHJhbnNmb3JtKTsKKyAgICB1bmRlZmluZWQgYWRkUGF0aChQYXRoMkQgcGF0aCwgb3B0aW9u
YWwgRE9NTWF0cml4MkRJbml0IHRyYW5zZm9ybSk7CiB9OwogCiBQYXRoMkQgaW5jbHVkZXMgQ2Fu
dmFzUGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDY5LDExICs0NjksMTEgQEAgdHlwZWRlZiAoSW1hZ2VCaXRtYXAgb3IgSW1hZ2VEYXRh
IG9yIEhUTQogICAgIC8vIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgQVBJLgogCiAgICAgdW5kZWZp
bmVkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFs
Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnRwdHIgcGJvT2Zmc2V0KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNl
IHNvdXJjZSk7CisgICAgdW5kZWZpbmVkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3Vy
Y2Ugc291cmNlKTsKICAgICB1bmRlZmluZWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBbQWxsb3dTaGFy
ZWRdIEFycmF5QnVmZmVyVmlldyBzcmNEYXRhLCBHTHVpbnQgc3JjT2Zmc2V0KTsKIAogICAgIHVu
ZGVmaW5lZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIHBib09mZnNldCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSBz
b3VyY2UpOworICAgIHVuZGVmaW5lZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlIHNv
dXJjZSk7CiAgICAgdW5kZWZpbmVkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgW0FsbG93U2hhcmVkXSBBcnJh
eUJ1ZmZlclZpZXcgc3JjRGF0YSwgR0x1aW50IHNyY09mZnNldCk7CiAKICAgICB1bmRlZmluZWQg
Y29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRl
ciwgR0xzaXplaSBpbWFnZVNpemUsIEdMaW50cHRyIG9mZnNldCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTUwOCwxMCArNTA4
LDEwIEBAIHR5cGVkZWYgKEhUTUxDYW52YXNFbGVtZW50KSBXZWJHTENhbnZhczsKICAgICB1bmRl
ZmluZWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciBzaGFkZXIpOwogCiAgICAgdW5kZWZpbmVk
IHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIFtBbGxvd1NoYXJlZF0gQXJyYXlCdWZmZXJWaWV3PyBwaXhl
bHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlIHNvdXJjZSk7CisgICAgdW5kZWZpbmVkIHRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlIHNvdXJjZSk7CiAK
ICAgICB1bmRlZmluZWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBbQWxsb3dTaGFyZWRdIEFycmF5QnVmZmVy
Vmlldz8gcGl4ZWxzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB0ZXhTdWJJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2Ugc291cmNl
KTsKKyAgICB1bmRlZmluZWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIFRleEltYWdlU291cmNlIHNvdXJjZSk7CiAKICAgICB1bmRlZmluZWQgY29tcHJlc3NlZFRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgW0FsbG93U2hh
cmVkXSBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CiAgICAgdW5kZWZpbmVkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
W0FsbG93U2hhcmVkXSBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0
NSwxMiBAQCBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0bGVzIiwgImNhcHRpCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0N1ZUxpc3Q/IGN1ZXM7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFRleHRUcmFja0N1ZUxpc3Q/IGFjdGl2ZUN1ZXM7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhZGRDdWUoVGV4dFRyYWNrQ3VlIGN1ZSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSBjdWUpOworICAgIHVu
ZGVmaW5lZCBhZGRDdWUoVGV4dFRyYWNrQ3VlIGN1ZSk7CisgICAgdW5kZWZpbmVkIHJlbW92ZUN1
ZShUZXh0VHJhY2tDdWUgY3VlKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jdWVj
aGFuZ2U7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVlRUUmVnaW9uTGlzdCByZWdpb25zOwog
ICAgIHVuZGVmaW5lZCBhZGRSZWdpb24oVlRUUmVnaW9uIHJlZ2lvbik7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlUmVnaW9uKFZUVFJlZ2lvbiByZWdpb24pOworICAg
IHVuZGVmaW5lZCByZW1vdmVSZWdpb24oVlRUUmVnaW9uIHJlZ2lvbik7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxNyArMjgsMTcgQEAKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwK
ICAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdCB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4gZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShET01TdHJp
bmcgcm9sZSwgb3B0aW9uYWwgTm9kZT8gY29udGFpbmVyKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1l
bnRdIHNlcXVlbmNlPE5vZGU+IGdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoRE9NU3RyaW5nIHJv
bGUsIG9wdGlvbmFsIE5vZGU/IGNvbnRhaW5lcik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IE5vZGU/IGdldEFjdGl2ZURlc2NlbmRhbnQoTm9kZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHNlcXVlbmNlPE5vZGU+PyBnZXRDaGlsZE5vZGVzKE5vZGUgbm9kZSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBDb21wdXRlZFByb3BlcnRpZXM/IGdldENvbXB1dGVkUHJvcGVydGll
cyhOb2RlIG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4/IGdl
dENvbnRyb2xsZWROb2RlcyhOb2RlIG5vZGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2Vx
dWVuY2U8Tm9kZT4/IGdldEZsb3dlZE5vZGVzKE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBOb2RlPyBnZXRNb3VzZUV2ZW50Tm9kZShOb2RlIG5vZGUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4/IGdldE93bmVkTm9kZXMoTm9kZSBub2RlKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IGdldFBhcmVudE5vZGUoTm9kZSBub2RlKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHNlcXVlbmNlPE5vZGU+PyBnZXRTZWxlY3RlZENoaWxkTm9k
ZXMoTm9kZSBub2RlKTsKKyAgICBOb2RlPyBnZXRBY3RpdmVEZXNjZW5kYW50KE5vZGUgbm9kZSk7
CisgICAgc2VxdWVuY2U8Tm9kZT4/IGdldENoaWxkTm9kZXMoTm9kZSBub2RlKTsKKyAgICBDb21w
dXRlZFByb3BlcnRpZXM/IGdldENvbXB1dGVkUHJvcGVydGllcyhOb2RlIG5vZGUpOworICAgIHNl
cXVlbmNlPE5vZGU+PyBnZXRDb250cm9sbGVkTm9kZXMoTm9kZSBub2RlKTsKKyAgICBzZXF1ZW5j
ZTxOb2RlPj8gZ2V0Rmxvd2VkTm9kZXMoTm9kZSBub2RlKTsKKyAgICBOb2RlPyBnZXRNb3VzZUV2
ZW50Tm9kZShOb2RlIG5vZGUpOworICAgIHNlcXVlbmNlPE5vZGU+PyBnZXRPd25lZE5vZGVzKE5v
ZGUgbm9kZSk7CisgICAgTm9kZT8gZ2V0UGFyZW50Tm9kZShOb2RlIG5vZGUpOworICAgIHNlcXVl
bmNlPE5vZGU+PyBnZXRTZWxlY3RlZENoaWxkTm9kZXMoTm9kZSBub2RlKTsKIH07CiAKIFsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9N
T2JqZWN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgs
NSBAQAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRET01PYmplY3QgewotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXNFdmVudExpc3RlbmVycyhOb2RlIG5vZGUsIG9wdGlvbmFs
IERPTVN0cmluZyB0eXBlKTsKKyAgICBib29sZWFuIGhhc0V2ZW50TGlzdGVuZXJzKE5vZGUgbm9k
ZSwgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0Lmlk
bAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBA
QAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QgewotICAgIFtDYWxs
V2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHNlcXVlbmNlPFJlc291cmNlPiBnZXRS
ZXNvdXJjZXMoKTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBS
ZXNvdXJjZUNvbnRlbnQgZ2V0UmVzb3VyY2VDb250ZW50KERPTVN0cmluZyBpZCk7CisgICAgW0Nh
bGxXaXRoPURvY3VtZW50XSBzZXF1ZW5jZTxSZXNvdXJjZT4gZ2V0UmVzb3VyY2VzKCk7CisgICAg
W0NhbGxXaXRoPURvY3VtZW50XSBSZXNvdXJjZUNvbnRlbnQgZ2V0UmVzb3VyY2VDb250ZW50KERP
TVN0cmluZyBpZCk7CiB9OwogCiBbCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAKICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBPQlNPTEVURSA9IDU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0
IHN0YXR1czsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHVwZGF0ZSgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHN3YXBDYWNoZSgpOworICAgIHVuZGVm
aW5lZCB1cGRhdGUoKTsKKyAgICB1bmRlZmluZWQgc3dhcENhY2hlKCk7CiAgICAgdW5kZWZpbmVk
IGFib3J0KCk7CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY2hlY2tpbmc7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NyeXB0by5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDUgKzMyLDUgQEAKICAgICBH
ZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0CiBdIGludGVyZmFj
ZSBDcnlwdG8gewogICAgIFtDb25kaXRpb25hbD1XRUJfQ1JZUFRPXSByZWFkb25seSBhdHRyaWJ1
dGUgU3VidGxlQ3J5cHRvIHN1YnRsZTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEFycmF5QnVm
ZmVyVmlldyBnZXRSYW5kb21WYWx1ZXMoW1JldHVyblZhbHVlXSBBcnJheUJ1ZmZlclZpZXcgYXJy
YXkpOworICAgIEFycmF5QnVmZmVyVmlldyBnZXRSYW5kb21WYWx1ZXMoW1JldHVyblZhbHVlXSBB
cnJheUJ1ZmZlclZpZXcgYXJyYXkpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjMgKzQ0LDIzIEBACiAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFJhbmdlIGdldFJhbmdlQXQodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgUmFuZ2UgZ2V0UmFu
Z2VBdCh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB1bmRlZmluZWQgYWRkUmFuZ2UoUmFuZ2Ug
cmFuZ2UpOwotICAgIFtFbmFibGVkQnlTZXR0aW5nPUxpdmVSYW5nZVNlbGVjdGlvbiwgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmVSYW5nZShSYW5nZSByYW5nZSk7CisgICAgW0Vu
YWJsZWRCeVNldHRpbmc9TGl2ZVJhbmdlU2VsZWN0aW9uXSB1bmRlZmluZWQgcmVtb3ZlUmFuZ2Uo
UmFuZ2UgcmFuZ2UpOwogICAgIHVuZGVmaW5lZCByZW1vdmVBbGxSYW5nZXMoKTsKIAogICAgIHVu
ZGVmaW5lZCBlbXB0eSgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29s
bGFwc2UoTm9kZT8gbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3NpdGlvbihOb2RlPyBub2RlLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIHVuZGVmaW5lZCBjb2xsYXBz
ZShOb2RlPyBub2RlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIHVu
ZGVmaW5lZCBzZXRQb3NpdGlvbihOb2RlPyBub2RlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9m
ZnNldCA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29sbGFwc2VU
b1N0YXJ0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29sbGFwc2VUb0Vu
ZCgpOworICAgIHVuZGVmaW5lZCBjb2xsYXBzZVRvU3RhcnQoKTsKKyAgICB1bmRlZmluZWQgY29s
bGFwc2VUb0VuZCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZXh0ZW5k
KE5vZGUgbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAgICB1bmRl
ZmluZWQgZXh0ZW5kKE5vZGUgbm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAw
KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEJhc2VBbmRFeHRlbnQo
Tm9kZT8gYmFzZU5vZGUsIHVuc2lnbmVkIGxvbmcgYmFzZU9mZnNldCwgTm9kZT8gZXh0ZW50Tm9k
ZSwgdW5zaWduZWQgbG9uZyBleHRlbnRPZmZzZXQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNlbGVjdEFsbENoaWxkcmVuKE5vZGUgbm9kZSk7CisgICAgdW5kZWZpbmVkIHNl
dEJhc2VBbmRFeHRlbnQoTm9kZT8gYmFzZU5vZGUsIHVuc2lnbmVkIGxvbmcgYmFzZU9mZnNldCwg
Tm9kZT8gZXh0ZW50Tm9kZSwgdW5zaWduZWQgbG9uZyBleHRlbnRPZmZzZXQpOworICAgIHVuZGVm
aW5lZCBzZWxlY3RBbGxDaGlsZHJlbihOb2RlIG5vZGUpOwogCiAgICAgW0NFUmVhY3Rpb25zXSB1
bmRlZmluZWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CiAgICAgYm9vbGVhbiBjb250YWluc05vZGUo
Tm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGFsbG93UGFydGlhbENvbnRhaW5tZW50ID0gZmFs
c2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBACiAgICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21TZXR0
ZXJdIGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZSwgRG9O
b3RDaGVja1NlY3VyaXR5T25HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8g
cGFyZW50OwogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IGZyYW1lRWxlbWVudDsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2lu
ZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2luZG93UHJveHk/IG9wZW4ob3B0aW9uYWwgVVNWU3Ry
aW5nIHVybCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdGFyZ2V0ID0gIl9ibGFuayIsIG9wdGlv
bmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGZlYXR1cmVzID0gIiIpOwor
ICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIFdpbmRvd1Byb3h5PyBvcGVu
KG9wdGlvbmFsIFVTVlN0cmluZyB1cmwgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHRhcmdldCA9
ICJfYmxhbmsiLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBm
ZWF0dXJlcyA9ICIiKTsKIAogICAgIC8vIHRoZSB1c2VyIGFnZW50CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIE5hdmlnYXRvciBuYXZpZ2F0b3I7CkBAIC05MSw4ICs5MSw4IEBACiAgICAgRE9NU3Ry
aW5nPyBwcm9tcHQob3B0aW9uYWwgRE9NU3RyaW5nIG1lc3NhZ2UgPSAiIiwgb3B0aW9uYWwgRE9N
U3RyaW5nIGRlZmF1bHRWYWx1ZSA9ICIiKTsKICAgICB1bmRlZmluZWQgcHJpbnQoKTsKIAotICAg
IFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJp
dHksIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2Us
IFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNm
ZXIgPSBbXSk7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERv
Tm90Q2hlY2tTZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2Fn
ZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMp
OworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNr
U2VjdXJpdHldIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRh
cmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAg
ICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3Vy
aXR5XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFdpbmRvd1Bv
c3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKIAogCiAgICAgLy8gT2Jzb2xldGU6IFN0aWxsIHBh
cnQgb2YgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy8jV2luZG93LXBhcnRpYWwpLgpAQCAtMTMwLDggKzEzMCw4IEBACiAgICAgV2ViS2l0UG9pbnQg
d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2Uob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51
bGwsIG9wdGlvbmFsIFdlYktpdFBvaW50PyBwID0gbnVsbCk7CiAKICAgICAvLyBJbnRlcm5hbCBv
cGVyYXRpb25zLCBub3QgZXhwb3NlZCB0byB0aGUgV2ViLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgRW5hYmxlZEZvcldvcmxkPXNoYWRvd1Jvb3RJc0Fsd2F5c09wZW5dIE5vZGVMaXN0IGNvbGxl
Y3RNYXRjaGluZ0VsZW1lbnRzSW5GbGF0VHJlZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0
b3JzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEVuYWJsZWRGb3JXb3JsZD1zaGFkb3dSb290
SXNBbHdheXNPcGVuXSBFbGVtZW50PyBtYXRjaGluZ0VsZW1lbnRJbkZsYXRUcmVlKE5vZGUgc2Nv
cGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9v
dElzQWx3YXlzT3Blbl0gTm9kZUxpc3QgY29sbGVjdE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVl
KE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtFbmFibGVkRm9yV29ybGQ9
c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gRWxlbWVudD8gbWF0Y2hpbmdFbGVtZW50SW5GbGF0VHJl
ZShOb2RlIHNjb3BlLCBET01TdHJpbmcgc2VsZWN0b3JzKTsKIH07CiAKIFsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9IaXN0b3J5LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9IaXN0b3J5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQAogICAgIFtDYWxs
V2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGdvKG9wdGlvbmFsIGxvbmcgZGVsdGEgPSAwKTsKIAog
ICAgIC8vIEZJWE1FOiB0aXRsZSBzaG91bGQgbm90IGJlIG51bGxhYmxlIGFzIHBlciB0aGUgSFRN
TCBzcGVjaWZpY2F0aW9uLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHB1c2hT
dGF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgRE9NU3RyaW5nPyB0aXRsZSwgb3B0aW9u
YWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCByZXBsYWNlU3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIERPTVN0cmluZz8g
dGl0bGUsIG9wdGlvbmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CisgICAgdW5kZWZpbmVkIHB1
c2hTdGF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgRE9NU3RyaW5nPyB0aXRsZSwgb3B0
aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKKyAgICB1bmRlZmluZWQgcmVwbGFjZVN0YXRl
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxlLCBvcHRpb25hbCBV
U1ZTdHJpbmc/IHVybCA9IG51bGwpOwogfTsKIAogZW51bSBTY3JvbGxSZXN0b3JhdGlvbiB7ICJh
dXRvIiwgIm1hbnVhbCIgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDUsOCArNDUsOCBAQAogXSBpbnRlcmZhY2UgTG9jYXRpb24gewogICAgIFtTZXR0
ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eU9u
U2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhyZWY7CiAKLSAgICBbQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxs
V2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZp
cnN0V2luZG93XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtEb05vdENo
ZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gdW5kZWZpbmVk
IHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CiAgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvd10gdW5k
ZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0cmlidXRlcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IrSXNMb2dnZWRJbi5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IrSXNMb2dnZWRJbi5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yK0lzTG9nZ2Vk
SW4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBACiBdIHBhcnRpYWwgaW50ZXJm
YWNlIE5hdmlnYXRvciB7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHNldExvZ2dlZEluKCk7CiAg
ICAgUHJvbWlzZTx1bmRlZmluZWQ+IHNldExvZ2dlZE91dCgpOwotICAgIFByb21pc2U8Ym9vbD4g
aXNMb2dnZWRJbigpOworICAgIFByb21pc2U8Ym9vbGVhbj4gaXNMb2dnZWRJbigpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNl
V29ya2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQAogICAgIENvbmRpdGlv
bmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2VydmljZVdvcmtlcgog
XSBpbnRlcmZhY2UgbWl4aW4gTmF2aWdhdG9yU2VydmljZVdvcmtlciB7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBTZWN1cmVDb250ZXh0
LCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckNvbnRhaW5lciBz
ZXJ2aWNlV29ya2VyOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBTZWN1
cmVDb250ZXh0LCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckNv
bnRhaW5lciBzZXJ2aWNlV29ya2VyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2UrVXNlclRpbWluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZStVc2VyVGltaW5nLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZStVc2VyVGltaW5nLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsOCArMjUsOCBAQAogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vdXNlci10aW1pbmcv
I2V4dGVuc2lvbnMtcGVyZm9ybWFuY2UtaW50ZXJmYWNlCiBwYXJ0aWFsIGludGVyZmFjZSBQZXJm
b3JtYW5jZSB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1HbG9iYWxPYmplY3Rd
IFBlcmZvcm1hbmNlTWFyayBtYXJrKERPTVN0cmluZyBtYXJrTmFtZSwgb3B0aW9uYWwgUGVyZm9y
bWFuY2VNYXJrT3B0aW9ucyBtYXJrT3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVj
dF0gUGVyZm9ybWFuY2VNYXJrIG1hcmsoRE9NU3RyaW5nIG1hcmtOYW1lLCBvcHRpb25hbCBQZXJm
b3JtYW5jZU1hcmtPcHRpb25zIG1hcmtPcHRpb25zKTsKICAgICB1bmRlZmluZWQgY2xlYXJNYXJr
cyhvcHRpb25hbCBET01TdHJpbmcgbWFya05hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBQZXJmb3JtYW5jZU1lYXN1cmUgbWVhc3VyZShET01TdHJp
bmcgbWVhc3VyZU5hbWUsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgUGVyZm9ybWFuY2VNZWFzdXJl
T3B0aW9ucykgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBvcHRpb25hbCBET01TdHJpbmcgZW5kTWFy
ayk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gUGVyZm9ybWFuY2VNZWFzdXJlIG1lYXN1
cmUoRE9NU3RyaW5nIG1lYXN1cmVOYW1lLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFBlcmZvcm1h
bmNlTWVhc3VyZU9wdGlvbnMpIHN0YXJ0T3JNZWFzdXJlT3B0aW9ucywgb3B0aW9uYWwgRE9NU3Ry
aW5nIGVuZE1hcmspOwogICAgIHVuZGVmaW5lZCBjbGVhck1lYXN1cmVzKG9wdGlvbmFsIERPTVN0
cmluZyBtZWFzdXJlTmFtZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU9ic2VydmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlT2JzZXJ2ZXIuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiBdIGludGVyZmFjZSBQZXJmb3JtYW5jZU9ic2VydmVyIHsKICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoUGVyZm9ybWFuY2VPYnNlcnZlckNhbGxi
YWNrIGNhbGxiYWNrKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG9ic2Vy
dmUoUGVyZm9ybWFuY2VPYnNlcnZlckluaXQgb3B0aW9ucyk7CisgICAgdW5kZWZpbmVkIG9ic2Vy
dmUoUGVyZm9ybWFuY2VPYnNlcnZlckluaXQgb3B0aW9ucyk7CiAgICAgdW5kZWZpbmVkIGRpc2Nv
bm5lY3QoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIHJl
YWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxET01TdHJpbmc+IHN1cHBvcnRlZEVudHJ5VHlw
ZXM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9VbmRvTWFuYWdlci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9VbmRvTWFuYWdlci5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVW5kb01hbmFnZXIuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw1ICsyOSw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRG9jdW1l
bnQsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFVuZG9NYW5hZ2VyIHsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZGRJdGVtKFVuZG9JdGVtIGl0ZW0pOworICAg
IHVuZGVmaW5lZCBhZGRJdGVtKFVuZG9JdGVtIGl0ZW0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNSArMzAsNSBAQAogICAgIENvbmRpdGlvbmFsPVVTRVJfTUVTU0FHRV9IQU5ETEVSUywK
ICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgVXNlck1lc3NhZ2VIYW5kbGVyIHsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFByb21pc2U8YW55PiBwb3N0TWVzc2FnZShTZXJpYWxpemVk
U2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAgUHJvbWlzZTxhbnk+IHBvc3RNZXNzYWdlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDE1ICs1MCwxNSBAQCBpbnRlcmZhY2UgbWl4aW4gV2luZG93T3JX
b3JrZXJHbG9iYWxTY29wCiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY3Jvc3NP
cmlnaW5Jc29sYXRlZDsKICAKICAgICAvLyBCYXNlNjQgdXRpbGl0eSBtZXRob2RzLgotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGF0b2IoRE9NU3RyaW5nIHN0cmluZyk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgYnRvYShET01TdHJpbmcgc3RyaW5nKTsKKyAg
ICBET01TdHJpbmcgYXRvYihET01TdHJpbmcgc3RyaW5nKTsKKyAgICBET01TdHJpbmcgYnRvYShE
T01TdHJpbmcgc3RyaW5nKTsKIAogICAgIC8vIFRpbWVycy4KICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdGFrZSBhIFRpbWVySGFuZGxlciAoYS5rLmEuIChET01TdHJpbmcgb3IgRnVuY3Rpb24p
KSByYXRoZXIgdGhhbiBhIFNjaGVkdWxlZEFjdGlvbi4KLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiBo
YW5kbGVyLCBvcHRpb25hbCBsb25nIHRpbWVvdXQgPSAwLCBhbnkuLi4gYXJndW1lbnRzKTsKKyAg
ICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBsb25nIHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9u
IGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOwog
ICAgIHVuZGVmaW5lZCBjbGVhclRpbWVvdXQob3B0aW9uYWwgbG9uZyBoYW5kbGUgPSAwKTsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIFRpbWVySGFuZGxlciAoYS5rLmEuIChET01T
dHJpbmcgb3IgRnVuY3Rpb24pKSByYXRoZXIgdGhhbiBhIFNjaGVkdWxlZEFjdGlvbi4KLSAgICBb
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBzZXRJbnRlcnZh
bChTY2hlZHVsZWRBY3Rpb24gaGFuZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55
Li4uIGFyZ3VtZW50cyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gbG9uZyBzZXRJbnRl
cnZhbChTY2hlZHVsZWRBY3Rpb24gaGFuZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwg
YW55Li4uIGFyZ3VtZW50cyk7CiAgICAgdW5kZWZpbmVkIGNsZWFySW50ZXJ2YWwob3B0aW9uYWwg
bG9uZyBoYW5kbGUgPSAwKTsKIAogICAgIC8vIG1pY3JvdGFzayBxdWV1aW5nLgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw1ICszMyw1IEBA
CiAgICAgZ2V0dGVyIERPTVN0cmluZz8gZ2V0SXRlbShET01TdHJpbmcga2V5KTsKICAgICBzZXR0
ZXIgdW5kZWZpbmVkIHNldEl0ZW0oRE9NU3RyaW5nIGtleSwgRE9NU3RyaW5nIGRhdGEpOwogICAg
IGRlbGV0ZXIgdW5kZWZpbmVkIHJlbW92ZUl0ZW0oRE9NU3RyaW5nIGtleSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xlYXIoKTsKKyAgICB1bmRlZmluZWQgY2xlYXIoKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDYgQEAKIAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWVBc1N0cmluZzsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWdu
ZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKKyAgICB1bmRlZmluZWQgbmV3VmFsdWVT
cGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0cmljdGVkIGZsb2F0
IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgdW5kZWZpbmVkIGNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDUgKzMxLDUgQEAKICAgICBib29sZWFuIGlzUG9pbnRJbkZpbGwob3B0aW9uYWwgRE9NUG9pbnRJ
bml0IHBvaW50KTsKICAgICBib29sZWFuIGlzUG9pbnRJblN0cm9rZShvcHRpb25hbCBET01Qb2lu
dEluaXQgcG9pbnQpOwogICAgIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRUb3RhbExlbmd0aCgpOwot
ICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCBnZXRQb2ludEF0TGVu
Z3RoKGZsb2F0IGRpc3RhbmNlKTsKKyAgICBbTmV3T2JqZWN0XSBTVkdQb2ludCBnZXRQb2ludEF0
TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKICAgICBbSW1wbGVtZW50ZWRBcz1nZXRTY3JlZW5DVE1Gb3JCaW5kaW5ncywgTmV3T2JqZWN0
XSBTVkdNYXRyaXggZ2V0U2NyZWVuQ1RNKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3Qg
aW4gdGhlIHNwZWNpZmljYXRpb24gYW5kIGhhcyBiZWVuIGRyb3BwZWQgYnkgQmxpbmsuCi0gICAg
W01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR01hdHJpeCBnZXRUcmFuc2Zvcm1Ub0Vs
ZW1lbnQob3B0aW9uYWwgU1ZHRWxlbWVudD8gZWxlbWVudCA9IG51bGwpOworICAgIFtOZXdPYmpl
Y3RdIFNWR01hdHJpeCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQob3B0aW9uYWwgU1ZHRWxlbWVudD8g
ZWxlbWVudCA9IG51bGwpOwogfTsKIAogU1ZHR3JhcGhpY3NFbGVtZW50IGluY2x1ZGVzIFNWR1Rl
c3RzOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw2IEBACiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1ZUluU3BlY2lm
aWVkVW5pdHM7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNp
Z25lZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRV
bml0cyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29udmVydFRvU3BlY2lm
aWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOworICAgIHVuZGVmaW5lZCBuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB1bmRlZmluZWQgY29udmVydFRvU3BlY2lm
aWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoTGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBA
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U1ZHTGVuZ3RoIGluaXRpYWxpemUoU1ZHTGVuZ3RoIG5ld0l0ZW0pOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gZ2V0dGVyIFNWR0xlbmd0aCBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIGluc2VydEl0ZW1CZWZvcmUoU1ZHTGVu
Z3RoIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU1ZHTGVuZ3RoIHJlcGxhY2VJdGVtKFNWR0xlbmd0aCBuZXdJdGVtLCB1bnNpZ25lZCBsb25n
IGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR0xlbmd0aCByZW1vdmVJdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIGFw
cGVuZEl0ZW0oU1ZHTGVuZ3RoIG5ld0l0ZW0pOworICAgIHVuZGVmaW5lZCBjbGVhcigpOworICAg
IFNWR0xlbmd0aCBpbml0aWFsaXplKFNWR0xlbmd0aCBuZXdJdGVtKTsKKyAgICBnZXR0ZXIgU1ZH
TGVuZ3RoIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHTGVuZ3RoIGluc2Vy
dEl0ZW1CZWZvcmUoU1ZHTGVuZ3RoIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IFNWR0xlbmd0aCByZXBsYWNlSXRlbShTVkdMZW5ndGggbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgU1ZHTGVuZ3RoIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgU1ZHTGVuZ3RoIGFwcGVuZEl0ZW0oU1ZHTGVuZ3RoIG5ld0l0ZW0pOwogICAgIHNldHRlciB1
bmRlZmluZWQgKHVuc2lnbmVkIGxvbmcgaW5kZXgsIFNWR0xlbmd0aCBuZXdJdGVtKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwx
MiBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGY7CiAKICAgICBbTmV3T2Jq
ZWN0XSBTVkdNYXRyaXggbXVsdGlwbHkoU1ZHTWF0cml4IHNlY29uZE1hdHJpeCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR01hdHJpeCBpbnZlcnNlKCk7CisgICAgW05l
d09iamVjdF0gU1ZHTWF0cml4IGludmVyc2UoKTsKICAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXgg
dHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CiAg
ICAgW05ld09iamVjdF0gU1ZHTWF0cml4IHNjYWxlKHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZh
Y3Rvcik7CiAgICAgW05ld09iamVjdF0gU1ZHTWF0cml4IHNjYWxlTm9uVW5pZm9ybSh1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3JYLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3JZ
KTsKICAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggcm90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBh
bmdsZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR01hdHJpeCByb3Rh
dGVGcm9tVmVjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7
CisgICAgW05ld09iamVjdF0gU1ZHTWF0cml4IHJvdGF0ZUZyb21WZWN0b3IodW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKICAgICBbTmV3T2JqZWN0XSBTVkdNYXRy
aXggZmxpcFgoKTsKICAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggZmxpcFkoKTsKICAgICBbTmV3
T2JqZWN0XSBTVkdNYXRyaXggc2tld1godW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTIgKzMwLDEyIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjbGVhcigpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gU1ZHTnVtYmVyIGluaXRpYWxpemUoU1ZHTnVtYmVyIG5ld0l0ZW0pOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gZ2V0dGVyIFNWR051bWJlciBnZXRJdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTnVtYmVyIGluc2VydEl0ZW1C
ZWZvcmUoU1ZHTnVtYmVyIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gU1ZHTnVtYmVyIHJlcGxhY2VJdGVtKFNWR051bWJlciBuZXdJdGVtLCB1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR051bWJlciBy
ZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
U1ZHTnVtYmVyIGFwcGVuZEl0ZW0oU1ZHTnVtYmVyIG5ld0l0ZW0pOworICAgIHVuZGVmaW5lZCBj
bGVhcigpOworICAgIFNWR051bWJlciBpbml0aWFsaXplKFNWR051bWJlciBuZXdJdGVtKTsKKyAg
ICBnZXR0ZXIgU1ZHTnVtYmVyIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZH
TnVtYmVyIGluc2VydEl0ZW1CZWZvcmUoU1ZHTnVtYmVyIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOworICAgIFNWR051bWJlciByZXBsYWNlSXRlbShTVkdOdW1iZXIgbmV3SXRlbSwgdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHTnVtYmVyIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgU1ZHTnVtYmVyIGFwcGVuZEl0ZW0oU1ZHTnVtYmVyIG5ld0l0ZW0pOwog
ICAgIHNldHRlciB1bmRlZmluZWQgKHVuc2lnbmVkIGxvbmcgaW5kZXgsIFNWR051bWJlciBuZXdJ
dGVtKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5pZGwJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxMiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xl
YXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BhdGhTZWcgaW5pdGlhbGl6ZShTVkdQ
YXRoU2VnIG5ld0l0ZW0pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZ2V0dGVyIFNWR1BhdGhT
ZWcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR1BhdGhTZWcgaW5zZXJ0SXRlbUJlZm9yZShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyByZXBsYWNl
SXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyBhcHBlbmRJdGVtKFNWR1BhdGhT
ZWcgbmV3SXRlbSk7CisgICAgdW5kZWZpbmVkIGNsZWFyKCk7CisgICAgU1ZHUGF0aFNlZyBpbml0
aWFsaXplKFNWR1BhdGhTZWcgbmV3SXRlbSk7CisgICAgZ2V0dGVyIFNWR1BhdGhTZWcgZ2V0SXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQYXRoU2VnIGluc2VydEl0ZW1CZWZvcmUo
U1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQYXRoU2Vn
IHJlcGxhY2VJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgU1ZHUGF0aFNlZyByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1Bh
dGhTZWcgYXBwZW5kSXRlbShTVkdQYXRoU2VnIG5ld0l0ZW0pOwogICAgIHNldHRlciB1bmRlZmlu
ZWQgKHVuc2lnbmVkIGxvbmcgaW5kZXgsIFNWR1BhdGhTZWcgbmV3SXRlbSk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiAr
MjksMTIgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBTVkdQb2ludCBpbml0aWFsaXplKFNWR1BvaW50IG5ld0l0ZW0pOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gZ2V0dGVyIFNWR1BvaW50IGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCBpbnNlcnRJdGVtQmVmb3JlKFNW
R1BvaW50IG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU1ZHUG9pbnQgcmVwbGFjZUl0ZW0oU1ZHUG9pbnQgbmV3SXRlbSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2ludCByZW1vdmVJdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUG9pbnQgYXBw
ZW5kSXRlbShTVkdQb2ludCBuZXdJdGVtKTsKKyAgICB1bmRlZmluZWQgY2xlYXIoKTsKKyAgICBT
VkdQb2ludCBpbml0aWFsaXplKFNWR1BvaW50IG5ld0l0ZW0pOworICAgIGdldHRlciBTVkdQb2lu
dCBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1BvaW50IGluc2VydEl0ZW1C
ZWZvcmUoU1ZHUG9pbnQgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9p
bnQgcmVwbGFjZUl0ZW0oU1ZHUG9pbnQgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgU1ZHUG9pbnQgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdQb2lu
dCBhcHBlbmRJdGVtKFNWR1BvaW50IG5ld0l0ZW0pOwogICAgIHNldHRlciB1bmRlZmluZWQgKHVu
c2lnbmVkIGxvbmcgaW5kZXgsIFNWR1BvaW50IG5ld0l0ZW0pOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RyaW5nTGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEy
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIGluaXRpYWxpemUoRE9NU3RyaW5nIG5ld0l0ZW0pOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gZ2V0dGVyIERPTVN0cmluZyBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGluc2VydEl0ZW1CZWZvcmUoRE9N
U3RyaW5nIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHJlcGxhY2VJdGVtKERPTVN0cmluZyBuZXdJdGVtLCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVJdGVt
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5n
IGFwcGVuZEl0ZW0oRE9NU3RyaW5nIG5ld0l0ZW0pOworICAgIHVuZGVmaW5lZCBjbGVhcigpOwor
ICAgIERPTVN0cmluZyBpbml0aWFsaXplKERPTVN0cmluZyBuZXdJdGVtKTsKKyAgICBnZXR0ZXIg
RE9NU3RyaW5nIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgRE9NU3RyaW5nIGlu
c2VydEl0ZW1CZWZvcmUoRE9NU3RyaW5nIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIERPTVN0cmluZyByZXBsYWNlSXRlbShET01TdHJpbmcgbmV3SXRlbSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgRE9NU3RyaW5nIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7
CisgICAgRE9NU3RyaW5nIGFwcGVuZEl0ZW0oRE9NU3RyaW5nIG5ld0l0ZW0pOwogICAgIHNldHRl
ciB1bmRlZmluZWQgKHVuc2lnbmVkIGxvbmcgaW5kZXgsIERPTVN0cmluZyBuZXdJdGVtKTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDExICszNiwxMSBAQAogCiAgICAgbG9uZyBn
ZXROdW1iZXJPZkNoYXJzKCk7CiAgICAgdW5yZXN0cmljdGVkIGZsb2F0IGdldENvbXB1dGVkVGV4
dExlbmd0aCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdl
dFN1YlN0cmluZ0xlbmd0aChvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAsIG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBO
ZXdPYmplY3RdIFNWR1BvaW50IGdldFN0YXJ0UG9zaXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBvZmZzZXQgPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0g
U1ZHUG9pbnQgZ2V0RW5kUG9zaXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZz
ZXQgPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUmVjdCBnZXRF
eHRlbnRPZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRSb3RhdGlvbk9mQ2hhcihvcHRp
b25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIHVucmVzdHJpY3RlZCBmbG9hdCBn
ZXRTdWJTdHJpbmdMZW5ndGgob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwLCBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGxlbmd0aCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50
IGdldFN0YXJ0UG9zaXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAw
KTsKKyAgICBbTmV3T2JqZWN0XSBTVkdQb2ludCBnZXRFbmRQb3NpdGlvbk9mQ2hhcihvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1JlY3QgZ2V0
RXh0ZW50T2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdW5y
ZXN0cmljdGVkIGZsb2F0IGdldFJvdGF0aW9uT2ZDaGFyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0ID0gMCk7CiAgICAgbG9uZyBnZXRDaGFyTnVtQXRQb3NpdGlvbihET01Qb2ludEluaXQg
cG9pbnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbGVjdFN1YlN0cmlu
ZyhvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoID0gMCk7CisgICAgdW5kZWZpbmVkIHNlbGVjdFN1YlN0cmluZyhvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG9mZnNldCA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0g
MCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwxMSArMzYsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHTWF0cml4
IG1hdHJpeDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xl
OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TWF0cml4KG9wdGlvbmFs
IERPTU1hdHJpeDJESW5pdCBtYXRyaXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHNldFRyYW5zbGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgdHgsIHVucmVzdHJpY3RlZCBmbG9h
dCB0eSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2NhbGUodW5yZXN0
cmljdGVkIGZsb2F0IHN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3kpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFJvdGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUsIHVu
cmVzdHJpY3RlZCBmbG9hdCBjeCwgdW5yZXN0cmljdGVkIGZsb2F0IGN5KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTa2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNrZXdZKHVucmVzdHJpY3Rl
ZCBmbG9hdCBhbmdsZSk7CisgICAgdW5kZWZpbmVkIHNldE1hdHJpeChvcHRpb25hbCBET01NYXRy
aXgyREluaXQgbWF0cml4KTsKKyAgICB1bmRlZmluZWQgc2V0VHJhbnNsYXRlKHVucmVzdHJpY3Rl
ZCBmbG9hdCB0eCwgdW5yZXN0cmljdGVkIGZsb2F0IHR5KTsKKyAgICB1bmRlZmluZWQgc2V0U2Nh
bGUodW5yZXN0cmljdGVkIGZsb2F0IHN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3kpOworICAgIHVu
ZGVmaW5lZCBzZXRSb3RhdGUodW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgY3gsIHVucmVzdHJpY3RlZCBmbG9hdCBjeSk7CisgICAgdW5kZWZpbmVkIHNldFNrZXdY
KHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7CisgICAgdW5kZWZpbmVkIHNldFNrZXdZKHVucmVz
dHJpY3RlZCBmbG9hdCBhbmdsZSk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNSBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xlYXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNW
R1RyYW5zZm9ybSBpbml0aWFsaXplKFNWR1RyYW5zZm9ybSBuZXdJdGVtKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGdldHRlciBTVkdUcmFuc2Zvcm0gZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBpbnNlcnRJdGVtQmVm
b3JlKFNWR1RyYW5zZm9ybSBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSByZXBsYWNlSXRlbShTVkdUcmFuc2Zvcm0gbmV3
SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdU
cmFuc2Zvcm0gcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFNWR1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBuZXdJdGVtKTsK
KyAgICB1bmRlZmluZWQgY2xlYXIoKTsKKyAgICBTVkdUcmFuc2Zvcm0gaW5pdGlhbGl6ZShTVkdU
cmFuc2Zvcm0gbmV3SXRlbSk7CisgICAgZ2V0dGVyIFNWR1RyYW5zZm9ybSBnZXRJdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5zZm9ybSBpbnNlcnRJdGVtQmVmb3JlKFNWR1Ry
YW5zZm9ybSBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdUcmFuc2Zvcm0g
cmVwbGFjZUl0ZW0oU1ZHVHJhbnNmb3JtIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFNWR1RyYW5zZm9ybSByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNW
R1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBuZXdJdGVtKTsKICAgICBzZXR0ZXIg
dW5kZWZpbmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBTVkdUcmFuc2Zvcm0gbmV3SXRlbSk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNyZWF0ZVNW
R1RyYW5zZm9ybUZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4MkRJbml0IG1hdHJpeCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gY29uc29saWRhdGUoKTsKKyAgICBb
TmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChvcHRp
b25hbCBET01NYXRyaXgyREluaXQgbWF0cml4KTsKKyAgICBTVkdUcmFuc2Zvcm0gY29uc29saWRh
dGUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI0ICs0MCwyNCBAQCBlbnVtIFVz
ZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgeyAiQ29uCiAgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBJbnRlcm5hbFNldHRpbmdzIDogSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZCB7CiAgICAgLy8gU2V0dGluZ3MKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWls
eSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
c2V0U2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHko
RE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2V0Rml4ZWRGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEN1cnNp
dmVGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEZhbnRhc3lGb250RmFtaWx5KERPTVN0cmlu
ZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmlu
ZyBzY3JpcHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEZvbnRMb2Fk
VGltaW5nT3ZlcnJpZGUoRm9udExvYWRUaW1pbmdPdmVycmlkZSBvdmVycmlkZSk7CisgICAgdW5k
ZWZpbmVkIHNldFN0YW5kYXJkRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcg
c2NyaXB0KTsKKyAgICB1bmRlZmluZWQgc2V0U2VyaWZGb250RmFtaWx5KERPTVN0cmluZyBmYW1p
bHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHVuZGVmaW5lZCBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHVuZGVmaW5lZCBz
ZXRGaXhlZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Cisg
ICAgdW5kZWZpbmVkIHNldEN1cnNpdmVGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOworICAgIHVuZGVmaW5lZCBzZXRGYW50YXN5Rm9udEZhbWlseShET01TdHJp
bmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKKyAgICB1bmRlZmluZWQgc2V0UGljdG9ncmFw
aEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdW5k
ZWZpbmVkIHNldEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUoRm9udExvYWRUaW1pbmdPdmVycmlkZSBv
dmVycmlkZSk7CiAgICAgLy8gRm9yd2FyZHMgdG8gVGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3Zl
cnJpZGVIZWlnaHQgYW5kIFRleHRBdXRvc2l6aW5nV2luZG93U2l6ZU92ZXJyaWRlV2lkdGguCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0VGV4dEF1dG9zaXppbmdXaW5kb3dT
aXplT3ZlcnJpZGUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0Nv
bnRyb2xzKHVucmVzdHJpY3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE1pbmltdW1UaW1lckludGVydmFsKHVucmVzdHJp
Y3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3JUeXBlIGJlaGF2aW9y
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1Bv
bGljeSBwb2xpY3kpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEZyYW1l
RmxhdHRlbmluZyhGcmFtZUZsYXR0ZW5pbmdWYWx1ZSBmcmFtZUZsYXR0ZW5pbmcpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3koVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSBwb2xpY3kpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN5c3RlbUxheW91dERpcmVjdGlvbihTeXN0ZW1MYXlvdXRE
aXJlY3Rpb24gZGlyZWN0aW9uKTsKKyAgICB1bmRlZmluZWQgc2V0VGV4dEF1dG9zaXppbmdXaW5k
b3dTaXplT3ZlcnJpZGUobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHVuZGVmaW5lZCBz
ZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyh1bnJlc3RyaWN0
ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsKKyAgICB1bmRlZmluZWQgc2V0TWluaW11bVRp
bWVySW50ZXJ2YWwodW5yZXN0cmljdGVkIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcyk7CisgICAg
dW5kZWZpbmVkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3JUeXBlIGJlaGF2aW9y
KTsKKyAgICB1bmRlZmluZWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSBwb2xpY3kpOworICAgIHVuZGVmaW5lZCBzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3ko
UERGSW1hZ2VDYWNoaW5nUG9saWN5IHBvbGljeSk7CisgICAgdW5kZWZpbmVkIHNldEZyYW1lRmxh
dHRlbmluZyhGcmFtZUZsYXR0ZW5pbmdWYWx1ZSBmcmFtZUZsYXR0ZW5pbmcpOworICAgIHVuZGVm
aW5lZCBzZXRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KFVzZXJJbnRlcmZhY2VEaXJlY3Rp
b25Qb2xpY3kgcG9saWN5KTsKKyAgICB1bmRlZmluZWQgc2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9u
KFN5c3RlbUxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24pOwogICAgIGF0dHJpYnV0ZSBGb3JjZWRB
Y2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRBY2Nlc3NpYmlsaXR5VmFs
dWU7CiAgICAgYXR0cmlidXRlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3JjZWREaXNwbGF5
SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlOwogICAgIGF0dHJpYnV0ZSBGb3JjZWRBY2Nl
c3NpYmlsaXR5VmFsdWUgZm9yY2VkUHJlZmVyc0NvbnRyYXN0QWNjZXNzaWJpbGl0eVZhbHVlOwpA
QCAtNjUsMzQgKzY1LDM0IEBAIGVudW0gVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSB7ICJD
b24KICAgICBhdHRyaWJ1dGUgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlIGZvcmNlZFN1cHBvcnRz
SGlnaER5bmFtaWNSYW5nZVZhbHVlOwogCiAgICAgLy8gUnVudGltZUVuYWJsZWRGZWF0dXJlcy4K
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRXZWJHTDJFbmFibGVkKGJvb2xl
YW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0V2ViR1BV
RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHNldEZldGNoQVBJS2VlcEFsaXZlRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxl
ZChib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRXZWJHTDJFbmFibGVkKGJvb2xl
YW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldFdlYkdQVUVuYWJsZWQoYm9vbGVhbiBlbmFi
bGVkKTsKKyAgICB1bmRlZmluZWQgc2V0RmV0Y2hBUElLZWVwQWxpdmVFbmFibGVkKGJvb2xlYW4g
ZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChi
b29sZWFuIGVuYWJsZWQpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdnA5RGVj
b2RlckVuYWJsZWQ7CiAKICAgICAvLyBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0
ZWdvcnkoYm9vbGVhbiBzaG91bGQpOworICAgIHVuZGVmaW5lZCBzZXRTaG91bGRNYW5hZ2VBdWRp
b1Nlc3Npb25DYXRlZ29yeShib29sZWFuIHNob3VsZCk7CiAKICAgICAvLyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2hvdWxkRGlz
cGxheVRyYWNrS2luZChUcmFja0tpbmQga2luZCwgYm9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gc2hvdWxkRGlzcGxheVRyYWNrS2luZChUcmFja0tpbmQg
a2luZCk7CisgICAgdW5kZWZpbmVkIHNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoVHJhY2tLaW5k
IGtpbmQsIGJvb2xlYW4gZW5hYmxlZCk7CisgICAgYm9vbGVhbiBzaG91bGREaXNwbGF5VHJhY2tL
aW5kKFRyYWNrS2luZCBraW5kKTsKIAogICAgIC8vIFBhZ2UKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBzZXRDYW5TdGFydE1lZGlhKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RWRpdGFibGVSZWdpb25FbmFibGVkKGJvb2xl
YW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0VXNlRGFy
a0FwcGVhcmFuY2UoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0Q2FuU3RhcnRN
ZWRpYShib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRFZGl0YWJsZVJlZ2lvbkVu
YWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0VXNlRGFya0FwcGVhcmFu
Y2UoYm9vbGVhbiBlbmFibGVkKTsKIAogICAgIC8vIFNjcm9sbFZpZXcKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRBbGxvd1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9uKGJvb2xl
YW4gYWxsb3dVbmNsYW1wZWQpOworICAgIHVuZGVmaW5lZCBzZXRBbGxvd1VuY2xhbXBlZFNjcm9s
bFBvc2l0aW9uKGJvb2xlYW4gYWxsb3dVbmNsYW1wZWQpOwogCiAgICAgLy8gUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNo
b3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24oYm9vbGVhbiBzaG91bGREZWFjdGl2YXRlKTsKKyAg
ICB1bmRlZmluZWQgc2V0U2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbihib29sZWFuIHNob3Vs
ZERlYWN0aXZhdGUpOwogCiAgICAgLy8gUmVuZGVyVGhlbWUvRm9udENhY2hlCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNj
ZXNzaWJpbGl0eShib29sZWFuIHNob3VsZE1vY2spOworICAgIHVuZGVmaW5lZCBzZXRTaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KGJvb2xlYW4gc2hvdWxkTW9jayk7CiAK
ICAgICAvLyBBdWRpb0NvbnRleHQKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBz
ZXREZWZhdWx0QXVkaW9Db250ZXh0U2FtcGxlUmF0ZShmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB1
bmRlZmluZWQgc2V0RGVmYXVsdEF1ZGlvQ29udGV4dFNhbXBsZVJhdGUoZmxvYXQgc2FtcGxlUmF0
ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yODAsNyArMjgwLDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgYm9vbGVhbiBp
c1BhaW50aW5nRnJlcXVlbnRseShFbGVtZW50IGVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBpbmNy
ZW1lbnRGcmVxdWVudFBhaW50Q291bnRlcihFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCBl
bGVtZW50KTsKKyAgICBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCBl
bGVtZW50KTsKICAgICBib29sZWFuIGlzUHJlbG9hZGVkKERPTVN0cmluZyB1cmwpOwogICAgIGJv
b2xlYW4gaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKERPTVN0cmluZyB1cmwpOwogICAgIERPTVN0
cmluZyBmZXRjaFJlc3BvbnNlU291cmNlKEZldGNoUmVzcG9uc2UgcmVzcG9uc2UpOwpAQCAtMzA5
LDIzICszMDksMjMgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgbG9uZyBkZWZlcnJlZEdyb3VwUnVs
ZXNDb3VudChTdHlsZVNoZWV0IHNoZWV0KTsKICAgICBsb25nIGRlZmVycmVkS2V5ZnJhbWVzUnVs
ZXNDb3VudChTdHlsZVNoZWV0IHNoZWV0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9N
U3RyaW5nIHNoYWRvd1Jvb3RUeXBlKE5vZGUgcm9vdCk7CisgICAgRE9NU3RyaW5nIHNoYWRvd1Jv
b3RUeXBlKE5vZGUgcm9vdCk7CiAgICAgRE9NU3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQg
ZWxlbWVudCk7CiAgICAgdW5kZWZpbmVkIHNldFNoYWRvd1BzZXVkb0lkKEVsZW1lbnQgZWxlbWVu
dCwgRE9NU3RyaW5nIGlkKTsKICAgICBOb2RlIHRyZWVTY29wZVJvb3ROb2RlKE5vZGUgbm9kZSk7
CiAgICAgTm9kZSBwYXJlbnRUcmVlU2NvcGUoTm9kZSBub2RlKTsKIAogICAgIC8vIFNwYXRpYWwg
TmF2aWdhdGlvbiB0ZXN0aW5nCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25n
IGxhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50KCk7CisgICAgdW5zaWduZWQgbG9u
ZyBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpOwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaW5mbGlnaHRCZWFjb25zQ291bnQ7CiAKICAgICAvLyBD
U1MgQW5pbWF0aW9uIHRlc3RpbmcuCiAgICAgYm9vbGVhbiBhbmltYXRpb25XaXRoSWRFeGlzdHMo
RE9NU3RyaW5nIGlkKTsKICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHN1c3BlbmRBbmltYXRpb25z
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVzdW1lQW5pbWF0aW9ucygp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBhbmltYXRpb25zQXJlU3VzcGVuZGVk
KCk7CisgICAgdW5kZWZpbmVkIHN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgdW5kZWZpbmVkIHJl
c3VtZUFuaW1hdGlvbnMoKTsKKyAgICBib29sZWFuIGFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKTsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFuaW1hdGlvbnNJbnRlcnZhbDsKIAogICAg
IC8vIFdlYiBBbmltYXRpb25zIHRlc3RpbmcuCkBAIC0zMzQsNTIgKzMzNCw1MiBAQCBlbnVtIFRy
ZWVUeXBlIHsKICAgICBkb3VibGUgdGltZVRvTmV4dEFuaW1hdGlvblRpY2soV2ViQW5pbWF0aW9u
IGFuaW1hdGlvbik7CiAKICAgICAvLyBGb3IgYW5pbWF0aW9ucyB0ZXN0aW5nLCB3ZSBuZWVkIGEg
d2F5IHRvIGdldCBhdCBwc2V1ZG8gZWxlbWVudHMuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBF
bGVtZW50PyBwc2V1ZG9FbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHBzZXVkb0lk
KTsKKyAgICBFbGVtZW50PyBwc2V1ZG9FbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5n
IHBzZXVkb0lkKTsKIAogICAgIERPTVN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCBl
bGVtZW50KTsKICAgICB1bmRlZmluZWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5w
dXRFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBjb2xvclZhbHVlKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHNlcXVlbmNlPERPTVN0cmluZz4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNI
aXN0b3J5SXRlbSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEZvcm1D
b250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oc2VxdWVuY2U8RE9NU3RyaW5nPiB2YWx1
ZXMpOworICAgIHNlcXVlbmNlPERPTVN0cmluZz4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNI
aXN0b3J5SXRlbSgpOworICAgIHVuZGVmaW5lZCBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91
c0hpc3RvcnlJdGVtKHNlcXVlbmNlPERPTVN0cmluZz4gdmFsdWVzKTsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRE9NUmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBib29sZWFuIGlzQ2FyZXRCbGlua2luZ1N1c3BlbmRlZCgpOworICAgIERPTVJl
Y3QgYWJzb2x1dGVDYXJldEJvdW5kcygpOworICAgIGJvb2xlYW4gaXNDYXJldEJsaW5raW5nU3Vz
cGVuZGVkKCk7CiAKICAgICBET01SZWN0IGJvdW5kaW5nQm94KEVsZW1lbnQgZWxlbWVudCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zcGVjdG9yR3JpZE92ZXJs
YXlDb3VudCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdExpc3QgaW5zcGVjdG9y
SGlnaGxpZ2h0UmVjdHMoKTsKKyAgICB1bnNpZ25lZCBsb25nIGluc3BlY3RvckdyaWRPdmVybGF5
Q291bnQoKTsKKyAgICBET01SZWN0TGlzdCBpbnNwZWN0b3JIaWdobGlnaHRSZWN0cygpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShO
b2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFJhbmdlPyBtYXJrZXJSYW5nZUZvck5vZGUoTm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlw
ZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJp
bmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5
cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIGR1bXBNYXJrZXJSZWN0cyhET01TdHJpbmcgbWFya2VyVHlwZSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChi
b29sZWFuIGZsYWcpOworICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUg
bm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUpOworICAgIFJhbmdlPyBtYXJrZXJSYW5nZUZvck5v
ZGUoTm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7
CisgICAgRE9NU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlIG5vZGUsIERPTVN0
cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcgZHVt
cE1hcmtlclJlY3RzKERPTVN0cmluZyBtYXJrZXJUeXBlKTsKKyAgICB1bmRlZmluZWQgc2V0TWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sZWFuIGZsYWcpOwogCiAgICAgdW5kZWZp
bmVkIGludmFsaWRhdGVGb250Q2FjaGUoKTsKICAgICB1bmRlZmluZWQgc2V0Rm9udFNtb290aGlu
Z0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihsb25nIHgsIGxvbmcgeSk7CisgICAgdW5kZWZp
bmVkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihsb25nIHgsIGxvbmcgeSk7CiAKICAgICAvLyBMaWtl
IEVsZW1lbnQuc2Nyb2xsVG8oKSwgYnV0IHdpdGhvdXQgY29uc3RhaW50cywgZm9yIHRlc3Rpbmcg
cnViYmVyLWJhbmRpbmcuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgdW5jb25z
dHJhaW5lZFNjcm9sbFRvKEVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHkpOworICAgIHVuZGVmaW5lZCB1bmNvbnN0cmFpbmVkU2Nyb2xs
VG8oRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBk
b3VibGUgeSk7CiAKICAgICAvLyBTY3JvbGxzIHRoZSBlbGVtZW50IGJ5IHRoZSBnaXZlbiBkZWx0
YSwgYXBwcm94aW1hdGluZyB0aGUgYXN5bmMgd2hlZWwgZXZlbnQgaGFuZGxpbmcgY29kZSBwYXRo
IHdoZXJlIGF2YWlsYWJsZS4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzY3Jv
bGxCeVNpbXVsYXRpbmdXaGVlbEV2ZW50KEVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGRv
dWJsZSBkZWx0YVgsIHVucmVzdHJpY3RlZCBkb3VibGUgZGVsdGFZKTsKKyAgICB1bmRlZmluZWQg
c2Nyb2xsQnlTaW11bGF0aW5nV2hlZWxFdmVudChFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgZGVsdGFYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGRlbHRhWSk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgbGF5b3V0Vmlld3BvcnRSZWN0KCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01SZWN0IHZpc3VhbFZpZXdwb3J0UmVjdCgpOworICAgIERPTVJlY3Qg
bGF5b3V0Vmlld3BvcnRSZWN0KCk7CisgICAgRE9NUmVjdCB2aXN1YWxWaWV3cG9ydFJlY3QoKTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFZpZXdJc1RyYW5zcGFyZW50
KGJvb2xlYW4gdHJuYXNwYXJlbnQpOworICAgIHVuZGVmaW5lZCBzZXRWaWV3SXNUcmFuc3BhcmVu
dChib29sZWFuIHRybmFzcGFyZW50KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIHZpZXdCYXNlQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgc2V0Vmlld0Jhc2VCYWNrZ3JvdW5kQ29sb3IoRE9NU3RyaW5nIGNvbG9yVmFsdWUp
OworICAgIERPTVN0cmluZyB2aWV3QmFzZUJhY2tncm91bmRDb2xvcigpOworICAgIHVuZGVmaW5l
ZCBzZXRWaWV3QmFzZUJhY2tncm91bmRDb2xvcihET01TdHJpbmcgY29sb3JWYWx1ZSk7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQYWdpbmF0aW9uKERPTVN0cmluZyBt
b2RlLCBsb25nIGdhcCwgb3B0aW9uYWwgbG9uZyBwYWdlTGVuZ3RoID0gMCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29s
ZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRQYWdpbmF0aW9uKERPTVN0cmluZyBtb2Rl
LCBsb25nIGdhcCwgb3B0aW9uYWwgbG9uZyBwYWdlTGVuZ3RoID0gMCk7CisgICAgdW5kZWZpbmVk
IHNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGNvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCh1bnJl
c3RyaWN0ZWQgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgbG9uZyBkZXZpY2VXaWR0aCwgbG9uZyBk
ZXZpY2VIZWlnaHQsIGxvbmcgYXZhaWxhYmxlV2lkdGgsIGxvbmcgYXZhaWxhYmxlSGVpZ2h0KTsK
KyAgICBET01TdHJpbmcgY29uZmlndXJhdGlvbkZvclZpZXdwb3J0KHVucmVzdHJpY3RlZCBmbG9h
dCBkZXZpY2VQaXhlbFJhdGlvLCBsb25nIGRldmljZVdpZHRoLCBsb25nIGRldmljZUhlaWdodCwg
bG9uZyBhdmFpbGFibGVXaWR0aCwgbG9uZyBhdmFpbGFibGVIZWlnaHQpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBib29sZWFuIHdhc0xhc3RDaGFuZ2VVc2VyRWRpdChFbGVtZW50IHRleHRG
aWVsZCk7CisgICAgYm9vbGVhbiB3YXNMYXN0Q2hhbmdlVXNlckVkaXQoRWxlbWVudCB0ZXh0Rmll
bGQpOwogICAgIGJvb2xlYW4gZWxlbWVudFNob3VsZEF1dG9Db21wbGV0ZShIVE1MSW5wdXRFbGVt
ZW50IGlucHV0RWxlbWVudCk7CiAgICAgdW5kZWZpbmVkIHNldEF1dG9maWxsZWQoSFRNTElucHV0
RWxlbWVudCBpbnB1dEVsZW1lbnQsIGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdW5kZWZpbmVkIHNl
dEF1dG9GaWxsZWRBbmRWaWV3YWJsZShIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgYm9v
bGVhbiBlbmFibGVkKTsKQEAgLTM5MiwxNiArMzkyLDE2IEBAIGVudW0gVHJlZVR5cGUgewogICAg
IEVsZW1lbnQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsK
ICAgICB1bmRlZmluZWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0
ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlv
bnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNG
b3JUZXh0KERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBE
T01TdHJpbmcgbWFya01hdGNoZXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQg
bG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+
IGZpbmRPcHRpb25zKTsKKyAgICBSYW5nZT8gcmFuZ2VPZlN0cmluZyhET01TdHJpbmcgdGV4dCwg
UmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsK
KyAgICB1bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNl
cXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7Cisg
ICAgdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5j
ZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9N
U3RyaW5nIGF1dG9maWxsRmllbGROYW1lKEVsZW1lbnQgZm9ybUNvbnRyb2xFbGVtZW50KTsKKyAg
ICBET01TdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCBmb3JtQ29udHJvbEVsZW1lbnQp
OwogICAgIGJvb2xlYW4gaXNTcGVsbGNoZWNrRGlzYWJsZWRFeGNlcHRUZXh0UmVwbGFjZW1lbnQo
SFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgaW52YWxpZGF0ZUNvbnRyb2xUaW50cygpOworICAgIHVuZGVmaW5lZCBpbnZh
bGlkYXRlQ29udHJvbFRpbnRzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxv
bmcgdywgbG9uZyBoKTsKKyAgICB1bmRlZmluZWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50
IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CiAKICAgICBSYW5nZT8g
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgdW5zaWduZWQgbG9uZyBy
YW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBs
b25nIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKQEAgLTQw
OSwxMyArNDA5LDEzIEBAIGVudW0gVHJlZVR5cGUgewogICAgIERPTVN0cmluZyByYW5nZUFzVGV4
dChSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNU
ZXh0SXRlcmF0b3IoUmFuZ2UgcmFuZ2UpOwogICAgIFJhbmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdl
LCB1bnNpZ25lZCBsb25nIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24obG9uZyB4LCBsb25nIHkpOworICAgIFJhbmdlPyByYW5nZUZvckRpY3Rpb25h
cnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFuZ2VPZlN0
cmluZ05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcgdGFyZ2V0
T2Zmc2V0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldERlbGVnYXRl
c1Njcm9sbGluZyhib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXREZWxlZ2F0ZXNT
Y3JvbGxpbmcoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5z
aWduZWQgbG9uZyBsb25nIGxhc3RTcGVsbENoZWNrUmVxdWVzdFNlcXVlbmNlKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdFNwZWxsQ2hlY2tQcm9jZXNz
ZWRTZXF1ZW5jZSgpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0U3BlbGxDaGVja1JlcXVl
c3RTZXF1ZW5jZSgpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0U3BlbGxDaGVja1Byb2Nl
c3NlZFNlcXVlbmNlKCk7CiAgICAgdW5kZWZpbmVkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZygp
OwogCiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CkBA
IC00MjQsMTMgKzQyNCwxMyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBzZXF1ZW5jZTxET01TdHJp
bmc+IHVzZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpOwogICAgIHVuZGVmaW5lZCBz
ZXRVc2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhET01TdHJpbmcgY2hhcmFjdGVyaXN0
aWMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIHdoZWVsRXZlbnRI
YW5kbGVyQ291bnQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgdG91
Y2hFdmVudEhhbmRsZXJDb3VudCgpOworICAgIHVuc2lnbmVkIGxvbmcgd2hlZWxFdmVudEhhbmRs
ZXJDb3VudCgpOworICAgIHVuc2lnbmVkIGxvbmcgdG91Y2hFdmVudEhhbmRsZXJDb3VudCgpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCB0b3VjaEV2ZW50UmVjdHNGb3JF
dmVudChET01TdHJpbmcgZXZlbnROYW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJl
Y3RMaXN0IHBhc3NpdmVUb3VjaEV2ZW50TGlzdGVuZXJSZWN0cygpOworICAgIERPTVJlY3RMaXN0
IHRvdWNoRXZlbnRSZWN0c0ZvckV2ZW50KERPTVN0cmluZyBldmVudE5hbWUpOworICAgIERPTVJl
Y3RMaXN0IHBhc3NpdmVUb3VjaEV2ZW50TGlzdGVuZXJSZWN0cygpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBOb2RlTGlzdD8gbm9kZXNGcm9tUmVjdChEb2N1bWVudCBkb2N1bWVudCwgbG9u
ZyB4LCBsb25nIHksCisgICAgTm9kZUxpc3Q/IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQgZG9jdW1l
bnQsIGxvbmcgeCwgbG9uZyB5LAogICAgICAgICB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIHVu
c2lnbmVkIGxvbmcgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcsIHVu
c2lnbmVkIGxvbmcgbGVmdFBhZGRpbmcsCiAgICAgICAgIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcs
IGJvb2xlYW4gYWxsb3dTaGFkb3dDb250ZW50LCBib29sZWFuIGFsbG93Q2hpbGRGcmFtZUNvbnRl
bnQpOwogCkBAIC00NjAsNyArNDYwLDcgQEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICB1bnNpZ25l
ZCBsb25nIG51bWJlck9mU2Nyb2xsYWJsZUFyZWFzKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIGJvb2xlYW4gaXNQYWdlQm94VmlzaWJsZShsb25nIHBhZ2VOdW1iZXIpOworICAgIGJvb2xl
YW4gaXNQYWdlQm94VmlzaWJsZShsb25nIHBhZ2VOdW1iZXIpOwogCiAgICAgdW5zaWduZWQgbG9u
ZyBpbWFnZUZyYW1lSW5kZXgoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICB1bnNpZ25l
ZCBsb25nIGltYWdlRnJhbWVDb3VudChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwpAQCAtNDgw
LDggKzQ4MCw4IEBAIGVudW0gVHJlZVR5cGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJbnRl
cm5hbFNldHRpbmdzIHNldHRpbmdzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHdvcmtlclRocmVhZENvdW50OwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBhcmVTVkdBbmltYXRpb25zUGF1c2VkOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gZG91YmxlIHN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVs
ZW1lbnQpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFyZVNWR0FuaW1hdGlvbnNQ
YXVzZWQ7CisgICAgZG91YmxlIHN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVs
ZW1lbnQpOwogCiAgICAgYm9vbGVhbiB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoKTsKIApAQCAtNDk3LDM3ICs0OTcsMzcgQEAgZW51bSBUcmVl
VHlwZSB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19ST09U
X0xBWUVSX1BST1BFUlRJRVMgPSAyNTY7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJf
VFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gPSA1MTI7CiAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgTEFZRVJfVFJFRV9JTkNMVURFU19ERUVQX0NPTE9SID0gMTAyNDsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoRG9jdW1lbnQgZG9jdW1lbnQsIG9w
dGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgRE9NU3RyaW5nIGxheWVyVHJl
ZUFzVGV4dChEb2N1bWVudCBkb2N1bWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3Mg
PSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBsb25nIGxheWVy
SURGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxh
eWVySURGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyBzY3JvbGxiYXJPdmVybGF5U3R5bGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9
IG51bGwpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzY3JvbGxiYXJVc2luZ0Rh
cmtBcHBlYXJhbmNlKG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUob3B0aW9uYWwgTm9k
ZT8gbm9kZSA9IG51bGwpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHZlcnRp
Y2FsU2Nyb2xsYmFyU3RhdGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOworICAgIERPTVN0
cmluZyBzY3JvbGxiYXJPdmVybGF5U3R5bGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwor
ICAgIGJvb2xlYW4gc2Nyb2xsYmFyVXNpbmdEYXJrQXBwZWFyYW5jZShvcHRpb25hbCBOb2RlPyBu
b2RlID0gbnVsbCk7CisgICAgRE9NU3RyaW5nIGhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShvcHRp
b25hbCBOb2RlPyBub2RlID0gbnVsbCk7CisgICAgRE9NU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFy
U3RhdGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nVHJlZUFzVGV4dCgpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRE9NU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCk7IC8vIEZJ
WE1FOiByZW5hbWUgdG8gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkuCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCBub25GYXN0U2Nyb2xsYWJsZVJlY3RzKCk7CisgICAg
RE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgIERPTVN0cmluZyBzY3Jv
bGxpbmdUcmVlQXNUZXh0KCk7CisgICAgRE9NU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zKCk7IC8vIEZJWE1FOiByZW5hbWUgdG8gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCku
CisgICAgRE9NUmVjdExpc3Qgbm9uRmFzdFNjcm9sbGFibGVSZWN0cygpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KCk7CisgICAgRE9NU3Ry
aW5nIHJlcGFpbnRSZWN0c0FzVGV4dCgpOwogCiAgICAgLy8gVGhlc2UgdGhyb3cgaWYgdGhlIGVs
ZW1lbnQgZG9lcyBub3QgaGF2ZSBhIGNvbXBvc2l0aW5nIGxheWVyLgotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEVsZW1lbnRVc2VzRGlzcGxheUxpc3REcmF3aW5nKEVsZW1l
bnQgZWxlbWVudCwgYm9vbGVhbiB1c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRFbGVtZW50VHJhY2tzRGlzcGxheUxpc3RSZXBsYXko
RWxlbWVudCBlbGVtZW50LCBib29sZWFuIHRyYWNrUmVwbGF5KTsKKyAgICB1bmRlZmluZWQgc2V0
RWxlbWVudFVzZXNEaXNwbGF5TGlzdERyYXdpbmcoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcpOworICAgIHVuZGVmaW5lZCBzZXRFbGVtZW50VHJhY2tzRGlz
cGxheUxpc3RSZXBsYXkoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIHRyYWNrUmVwbGF5KTsKIAog
ICAgIC8vIEZsYWdzIGZvciBkaXNwbGF5TGlzdEZvckVsZW1lbnQuCiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxOwog
ICAgIC8vIFJldHVybnMgdGhlIHJlY29yZGVkIGRpc3BsYXkgbGlzdC4KLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50
LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIERPTVN0cmluZyBkaXNw
bGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9y
dCBmbGFncyA9IDApOwogICAgIC8vIFJldHVybnMgdGhlIGRpc3BsYXkgbGlzdCB0aGF0IHdhcyBh
Y3R1YWxseSBwYWludGVkLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlcGxh
eURpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVk
IHNob3J0IGZsYWdzID0gMCk7CisgICAgRE9NU3RyaW5nIHJlcGxheURpc3BsYXlMaXN0Rm9yRWxl
bWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBnYXJiYWdlQ29sbGVjdERvY3Vt
ZW50UmVzb3VyY2VzKCk7CisgICAgdW5kZWZpbmVkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNv
dXJjZXMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGluc2VydEF1dGhv
ckNTUyhET01TdHJpbmcgY3NzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBp
bnNlcnRVc2VyQ1NTKERPTVN0cmluZyBjc3MpOworICAgIHVuZGVmaW5lZCBpbnNlcnRBdXRob3JD
U1MoRE9NU3RyaW5nIGNzcyk7CisgICAgdW5kZWZpbmVkIGluc2VydFVzZXJDU1MoRE9NU3RyaW5n
IGNzcyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1VuZGVyTWVtb3J5UHJl
c3N1cmU7CiAgICAgdW5kZWZpbmVkIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKQEAg
LTU0MiwyNiArNTQyLDI2IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbCA9IFJF
U0laRV9PQlNFUlZFUl0gdW5zaWduZWQgbG9uZyBudW1iZXJPZlJlc2l6ZU9ic2VydmVycyhEb2N1
bWVudCBkb2N1bWVudCk7CiAgICAgV2luZG93UHJveHk/IG9wZW5EdW1teUluc3BlY3RvckZyb250
ZW5kKERPTVN0cmluZyB1cmwpOwogICAgIHVuZGVmaW5lZCBjbG9zZUR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRJbnNwZWN0b3JJ
c1VuZGVyVGVzdChib29sZWFuIGlzVW5kZXJUZXN0KTsKKyAgICB1bmRlZmluZWQgc2V0SW5zcGVj
dG9ySXNVbmRlclRlc3QoYm9vbGVhbiBpc1VuZGVyVGVzdCk7CiAKICAgICBET01TdHJpbmcgY291
bnRlclZhbHVlKEVsZW1lbnQgZWxlbWVudCk7CiAgICAgbG9uZyBwYWdlTnVtYmVyKEVsZW1lbnQg
ZWxlbWVudCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHBhZ2VXaWR0aCA9IDgwMCwgb3B0
aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHBhZ2VIZWlnaHQgPSA2MDApOwogICAgIHNlcXVlbmNl
PERPTVN0cmluZz4gc2hvcnRjdXRJY29uVVJMcygpOwogICAgIGxvbmcgbnVtYmVyT2ZQYWdlcyhv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzID0gODAwLCBvcHRp
b25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscyA9IDYwMCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcGFnZVByb3BlcnR5KERPTVN0cmluZyBwcm9w
ZXJ0eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01T
dHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMobG9uZyBwYWdlSW5kZXgsIGxvbmcgd2lk
dGgsIGxvbmcgaGVpZ2h0LCBsb25nIG1hcmdpblRvcCwgbG9uZyBtYXJnaW5SaWdodCwgbG9uZyBt
YXJnaW5Cb3R0b20sIGxvbmcgbWFyZ2luTGVmdCk7CisgICAgRE9NU3RyaW5nIHBhZ2VQcm9wZXJ0
eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBsb25nIHBhZ2VOdW1iZXIpOworICAgIERPTVN0cmlu
ZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhsb25nIHBhZ2VJbmRleCwgbG9uZyB3aWR0aCwg
bG9uZyBoZWlnaHQsIGxvbmcgbWFyZ2luVG9wLCBsb25nIG1hcmdpblJpZ2h0LCBsb25nIG1hcmdp
bkJvdHRvbSwgbG9uZyBtYXJnaW5MZWZ0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHNldFBhZ2VTY2FsZUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3Is
IGxvbmcgeCwgbG9uZyB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcigpOworICAgIHVuZGVmaW5lZCBzZXRQYWdlU2NhbGVGYWN0b3IodW5yZXN0cmljdGVk
IGZsb2F0IHNjYWxlRmFjdG9yLCBsb25nIHgsIGxvbmcgeSk7CisgICAgZmxvYXQgcGFnZVNjYWxl
RmFjdG9yKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQYWdlWm9v
bUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgem9vbUZhY3Rvcik7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgc2V0VGV4dFpvb21GYWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHpv
b21GYWN0b3IpOworICAgIHVuZGVmaW5lZCBzZXRQYWdlWm9vbUZhY3Rvcih1bnJlc3RyaWN0ZWQg
ZmxvYXQgem9vbUZhY3Rvcik7CisgICAgdW5kZWZpbmVkIHNldFRleHRab29tRmFjdG9yKHVucmVz
dHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2xlYW4gdXNlRml4ZWRMYXlvdXQpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEZpeGVkTGF5b3V0U2l6ZShsb25nIHdpZHRo
LCBsb25nIGhlaWdodCk7CisgICAgdW5kZWZpbmVkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2xlYW4g
dXNlRml4ZWRMYXlvdXQpOworICAgIHVuZGVmaW5lZCBzZXRGaXhlZExheW91dFNpemUobG9uZyB3
aWR0aCwgbG9uZyBoZWlnaHQpOwogICAgIHVuZGVmaW5lZCBzZXRQcmludGluZyhsb25nIHdpZHRo
LCBsb25nIGhlaWdodCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRW
aWV3RXhwb3NlZFJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQpOwor
ICAgIHVuZGVmaW5lZCBzZXRWaWV3RXhwb3NlZFJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVu
cmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBoZWlnaHQpOwogCiAgICAgdW5kZWZpbmVkIHNldEhlYWRlckhlaWdodCh1bnJlc3Ry
aWN0ZWQgZmxvYXQgaGVpZ2h0KTsKICAgICB1bmRlZmluZWQgc2V0Rm9vdGVySGVpZ2h0KHVucmVz
dHJpY3RlZCBmbG9hdCBoZWlnaHQpOwpAQCAtNTk2LDM1ICs1OTYsMzUgQEAgZW51bSBUcmVlVHlw
ZSB7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYm90aCByZXNldCB0aGUgdHJhY2tlZCByZXBh
aW50IHJlY3RzLiBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHRoZSBmb2xsb3dpbmcg
b3JkZXI6CiAgICAgLy8gIHN0YXJ0VHJhY2tpbmdSZXBhaW50cywgcmVwYWludFJlY3RzQXNUZXh0
LCBzdG9wVHJhY2tpbmdSZXBhaW50cy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBzdGFydFRyYWNraW5nUmVwYWludHMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIHVuZGVmaW5lZCBzdGFydFRyYWNraW5n
UmVwYWludHMoKTsKKyAgICB1bmRlZmluZWQgc3RvcFRyYWNraW5nUmVwYWludHMoKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdMYXllckZsdXNoZXMo
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbGF5ZXJGbHVzaENvdW50
KCk7CisgICAgdW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdMYXllckZsdXNoZXMoKTsKKyAgICB1bnNp
Z25lZCBsb25nIGxheWVyRmx1c2hDb3VudCgpOwogCiAgICAgLy8gUXVlcnkgaWYgYSB0aW1lciBp
cyBjdXJyZW50bHkgdGhyb3R0bGVkLCB0byBkZWJ1ZyB0aW1lciB0aHJvdHRsaW5nLgotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1RpbWVyVGhyb3R0bGVkKGxvbmcgdGltZXJIYW5k
bGUpOworICAgIGJvb2xlYW4gaXNUaW1lclRocm90dGxlZChsb25nIHRpbWVySGFuZGxlKTsKIAog
ICAgIERPTVN0cmluZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsaW5nUmVhc29ucygpOwog
ICAgIGJvb2xlYW4gYXJlVGltZXJzVGhyb3R0bGVkKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBzZXRMb3dQb3dlck1vZGVFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0
bGluZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0TG93UG93ZXJN
b2RlRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRPdXRzaWRlVmll
d3BvcnRUaHJvdHRsaW5nRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW50ZXJ2YWw7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gc2NyaXB0ZWRBbmltYXRpb25zQXJlU3VzcGVuZGVkOwogCiAg
ICAgLy8gT3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIFdlYlBhZ2U6OmV2ZW50VGhyb3R0bGluZ0Rl
bGF5KCksIHdoaWNoIG9ubHkgYWZmZWN0cyBpT1MuCiAgICAgYXR0cmlidXRlIEV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yPyBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBzdHlsZVJlY2FsY0NvdW50KCk7
CisgICAgdW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdTdHlsZVJlY2FsY3MoKTsKKyAgICB1bnNpZ25l
ZCBsb25nIHN0eWxlUmVjYWxjQ291bnQoKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsYXN0U3R5bGVVcGRhdGVTaXplOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgc3RhcnRUcmFja2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCk7CisgICAg
dW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0ZXMoKTsKKyAgICB1bnNpZ25l
ZCBsb25nIGNvbXBvc2l0aW5nVXBkYXRlQ291bnQoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdSZW5kZXJpbmdVcGRhdGVzKCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIHJlbmRlcmluZ1VwZGF0ZUNvdW50KCk7CisgICAg
dW5kZWZpbmVkIHN0YXJ0VHJhY2tpbmdSZW5kZXJpbmdVcGRhdGVzKCk7CisgICAgdW5zaWduZWQg
bG9uZyByZW5kZXJpbmdVcGRhdGVDb3VudCgpOwogCiAgICAgYXR0cmlidXRlIENvbXBvc2l0aW5n
UG9saWN5PyBjb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlOwogCkBAIC02MzMsMTIgKzYzMywxMiBA
QCBlbnVtIFRyZWVUeXBlIHsKICAgICAvLyB8bm9kZXwgc2hvdWxkIGJlIERvY3VtZW50LCBIVE1M
SUZyYW1lRWxlbWVudCwgb3IgdW5zcGVjaWZpZWQuCiAgICAgLy8gSWYgfG5vZGV8IGlzIGFuIEhU
TUxJRnJhbWVFbGVtZW50LCBpdCBhc3N1bWVzIG5vZGUuY29udGVudERvY3VtZW50IGlzCiAgICAg
Ly8gc3BlY2lmaWVkIHdpdGhvdXQgc2VjdXJpdHkgY2hlY2tzLiBVbnNwZWNpZmllZCBvciBudWxs
IG1lYW5zIHRoaXMgZG9jdW1lbnQuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQW5kUnVuUG9zdExheW91dFRhc2tz
KG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKKyAgICB1bmRlZmluZWQgdXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQW5kUnVuUG9zdExheW91dFRhc2tzKG9wdGlvbmFsIE5v
ZGU/IG5vZGUgPSBudWxsKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxheW91dENvdW50OwogCiAgICAgLy8gUmV0dXJucyBhIHN0cmluZyB3aXRoIGluZm9ybWF0aW9u
IGFib3V0IHRoZSBtb3VzZSBjdXJzb3IgdXNlZCBhdCB0aGUgc3BlY2lmaWVkIGNsaWVudCBsb2Nh
dGlvbi4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBnZXRDdXJyZW50Q3Vyc29y
SW5mbygpOworICAgIERPTVN0cmluZyBnZXRDdXJyZW50Q3Vyc29ySW5mbygpOwogCiAgICAgRE9N
U3RyaW5nIG1hcmtlclRleHRGb3JMaXN0SXRlbShFbGVtZW50IGVsZW1lbnQpOwogCkBAIC02NjIs
NyArNjYyLDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBzZXF1
ZW5jZTxET01TdHJpbmc+IG1lZGlhUmVzcG9uc2VTb3VyY2VzKEhUTUxNZWRpYUVsZW1lbnQgbWVk
aWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gc2VxdWVuY2U8RE9NU3RyaW5nPiBtZWRpYVJl
c3BvbnNlQ29udGVudFJhbmdlcyhIVE1MTWVkaWFFbGVtZW50IG1lZGlhKTsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKEhUTUxNZWRp
YUVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gYm9vbGVhbiBtZWRpYUVsZW1lbnRIYXNDaGFyYWN0ZXJpc3RpYyhIVE1MTWVkaWFFbGVt
ZW50IGVsZW1lbnQsIERPTVN0cmluZyBjaGFyYWN0ZXJpc3RpYyk7CisgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSBib29sZWFuIG1lZGlhRWxlbWVudEhhc0NoYXJhY3RlcmlzdGljKEhUTUxNZWRpYUVs
ZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGNoYXJhY3RlcmlzdGljKTsKICAgICBbQ29uZGl0aW9u
YWw9VklERU9dIHVuZGVmaW5lZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcihIVE1MTWVkaWFFbGVt
ZW50IG1lZGlhKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBlbmRTaW11bGF0
ZWRIRENQRXJyb3IoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSk7CiAKQEAgLTY3MCw5ICs2NzAsOSBA
QCBlbnVtIFRyZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBlbGVt
ZW50QnVmZmVyaW5nUG9saWN5KEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEpOwogICAgIFtDb25kaXRp
b25hbD1WSURFT10gZG91YmxlIHByaXZhdGVQbGF5ZXJWb2x1bWUoSFRNTE1lZGlhRWxlbWVudCBt
ZWRpYSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIHByaXZhdGVQbGF5ZXJNdXRl
ZChIVE1MTWVkaWFFbGVtZW50IG1lZGlhKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0T3ZlcnJpZGVQcmVmZXJyZWREeW5hbWljUmFuZ2VN
b2RlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEsIERPTVN0cmluZyBtb2RlKTsKKyAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRPdmVycmlkZVByZWZlcnJlZER5bmFtaWNSYW5nZU1v
ZGUoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSwgRE9NU3RyaW5nIG1vZGUpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShv
cHRpb25hbCBib29sZWFuPyBpc1BsYXlpbmcgPSBudWxsKTsKKyAgICB1bmRlZmluZWQgc2V0SXNQ
bGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShvcHRpb25hbCBib29sZWFuPyBpc1BsYXlpbmcgPSBu
dWxsKTsKIAogICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBXSB1bmRlZmlu
ZWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElB
XSBNb2NrQ0RNRmFjdG9yeSByZWdpc3Rlck1vY2tDRE0oKTsKQEAgLTY4MiwxMiArNjgyLDEyIEBA
IGVudW0gVHJlZVR5cGUgewogCiAgICAgRE9NU3RyaW5nIGdldEltYWdlU291cmNlVVJMKEVsZW1l
bnQgZWxlbWVudCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9u
XSBET01TdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKLSAgICBbQ29uZGl0aW9u
YWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Q2FwdGlvbnNTdHlsZVNo
ZWV0T3ZlcnJpZGUoRE9NU3RyaW5nIG92ZXJyaWRlKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8s
IE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFn
ZU92ZXJyaWRlKERPTVN0cmluZyBsYW5ndWFnZSk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldENhcHRpb25EaXNwbGF5TW9kZShET01TdHJp
bmcgbW9kZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01TdHJpbmcgY2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRD
YXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShET01TdHJpbmcgb3ZlcnJpZGUpOworICAgIFtDb25k
aXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVy
cmlkZShET01TdHJpbmcgbGFuZ3VhZ2UpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZp
bmVkIHNldENhcHRpb25EaXNwbGF5TW9kZShET01TdHJpbmcgbW9kZSk7CiAgICAgW0NvbmRpdGlv
bmFsPVZJREVPXSBUZXh0VHJhY2tDdWVHZW5lcmljIGNyZWF0ZUdlbmVyaWNDdWUoZG91YmxlIHN0
YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIERPTVN0cmluZyB0ZXh0KTsKLSAgICBbQ29uZGl0aW9u
YWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdGV4dFRyYWNrQkNQNDdMYW5n
dWFnZShUZXh0VHJhY2sgdHJhY2spOworICAgIFtDb25kaXRpb25hbD1WSURFT10gRE9NU3RyaW5n
IHRleHRUcmFja0JDUDQ3TGFuZ3VhZ2UoVGV4dFRyYWNrIHRyYWNrKTsKIAogICAgIFtDb25kaXRp
b25hbD1WSURFT10gVGltZVJhbmdlcyBjcmVhdGVUaW1lUmFuZ2VzKEZsb2F0MzJBcnJheSBzdGFy
dFRpbWVzLCBGbG9hdDMyQXJyYXkKICAgICAgZW5kVGltZXMpOwpAQCAtNjk1LDEyICs2OTUsMTIg
QEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICBib29sZWFuIGlzU2VsZWN0UG9wdXBWaXNpYmxlKEhU
TUxTZWxlY3RFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29s
ZWFuIGlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50IGVsZW1l
bnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHVuYXZhaWxhYmxlUGx1Z2lu
UmVwbGFjZW1lbnRUZXh0KEVsZW1lbnQgZWxlbWVudCk7CisgICAgYm9vbGVhbiBpc1BsdWdpblVu
YXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCBlbGVtZW50KTsKKyAgICBET01T
dHJpbmcgdW5hdmFpbGFibGVQbHVnaW5SZXBsYWNlbWVudFRleHQoRWxlbWVudCBlbGVtZW50KTsK
ICAgICBib29sZWFuIGlzUGx1Z2luU25hcHNob3R0ZWQoRWxlbWVudCBlbGVtZW50KTsKICAgICBi
b29sZWFuIHBsdWdpbklzQmVsb3dTaXplVGhyZXNob2xkKEVsZW1lbnQgZWxlbWVudCk7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3Qgc2VsZWN0aW9uQm91bmRzKCk7CisgICAgRE9N
UmVjdCBzZWxlY3Rpb25Cb3VuZHMoKTsKICAgICB1bmRlZmluZWQgc2V0U2VsZWN0aW9uV2l0aG91
dFZhbGlkYXRpb24oTm9kZSBiYXNlTm9kZSwgdW5zaWduZWQgbG9uZyBiYXNlT2Zmc2V0LCBOb2Rl
PyBleHRlbnROb2RlLCB1bnNpZ25lZCBsb25nIGV4dGVudE9mZnNldCk7CiAKICAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU09VUkNFXSB1bmRlZmluZWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgp
OwpAQCAtNzEwLDE5ICs3MTAsMTkgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NPVVJDRV0gZG91YmxlIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JU
cmFja0lEKFNvdXJjZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lEKTsKICAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU09VUkNFXSB1bmRlZmluZWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JU
cmFja0lEKFNvdXJjZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lELCB1bnNpZ25lZCBs
b25nIG1heFF1ZXVlRGVwdGgpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmlu
ZyBpbnRlcnJ1cHRpb25UeXBlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBi
ZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgaW50ZXJydXB0aW9uVHlwZSk7
CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgZW5kTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uKERPTVN0cmluZyBmbGFncyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmlu
ZWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICBbQ29uZGl0aW9uYWw9VklE
RU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogICAgIFtDb25kaXRp
b25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChvcHRp
b25hbCBib29sZWFuIHN1c3BlbmRlZFVuZGVyTG9jayA9IGZhbHNlKTsKICAgICBbQ29uZGl0aW9u
YWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChvcHRpb25h
bCBib29sZWFuIHN1c3BlbmRlZFVuZGVyTG9jayA9IGZhbHNlKTsKLSAgICBbQ29uZGl0aW9uYWw9
VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJp
Y3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAg
IFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNl
c3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CisgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSB1bmRlZmluZWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBt
ZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOworICAgIFtDb25kaXRpb25hbD1WSURF
T10gRE9NU3RyaW5nIG1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBl
KTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYUVsZW1lbnRSZXN0
cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcmVzdHJpY3Rpb25z
KTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0QXVkaW9Db250ZXh0
UmVzdHJpY3Rpb25zKChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0
LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKERPTVN0cmlu
ZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQgPSAwKTsKKyAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQo
RE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9
IDApOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHVuZGVmaW5l
ZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbGVhbiBlbmFibGVk
KTsKLSAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VULCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
RE9NU3RyaW5nIGRldmljZU5hbWUsIERPTVN0cmluZyBkZXZpY2VTdGF0ZSk7CisgICAgW0NvbmRp
dGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdW5kZWZpbmVkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoRE9NU3RyaW5nIGRldmljZU5hbWUsIERPTVN0cmluZyBk
ZXZpY2VTdGF0ZSk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0g
dW5kZWZpbmVkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAg
ICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdW5kZWZpbmVkIHNldEN1c3RvbVByaXZhdGVS
ZWNvcmRlckNyZWF0b3IoKTsKIApAQCAtNzQxLDE0ICs3NDEsMTQgQEAgZW51bSBUcmVlVHlwZSB7
CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2ltdWxhdGVTeXN0ZW1XYWtlKCk7
CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxh
eVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIE1vY2tQYWdlT3ZlcmxheSBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlw
ZSB0eXBlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYWdlT3ZlcmxheUxh
eWVyVHJlZUFzVGV4dChvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIE1v
Y2tQYWdlT3ZlcmxheSBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSB0eXBl
KTsKKyAgICBET01TdHJpbmcgcGFnZU92ZXJsYXlMYXllclRyZWVBc1RleHQob3B0aW9uYWwgdW5z
aWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAogICAgIHVuZGVmaW5lZCBzZXRQYWdlTXV0ZWQoRE9N
U3RyaW5nIG11dGVkU3RhdGUpOwogICAgIERPTVN0cmluZyBwYWdlTWVkaWFTdGF0ZSgpOwogCiAg
ICAgdW5kZWZpbmVkIHNldFBhZ2VEZWZlcnNMb2FkaW5nKGJvb2xlYW4gZGVmZXJzTG9hZGluZyk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHBhZ2VEZWZlcnNMb2FkaW5nKCk7Cisg
ICAgYm9vbGVhbiBwYWdlRGVmZXJzTG9hZGluZygpOwogCiAgICAgRmlsZT8gY3JlYXRlRmlsZShE
T01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgcXVldWVNaWNyb1Rhc2sobG9uZyB0ZXN0TnVt
YmVyKTsKQEAgLTc1NiwxMSArNzU2LDExIEBAIGVudW0gVHJlZVR5cGUgewogCiAgICAgW0NvbmRp
dGlvbmFsPUNPTlRFTlRfRklMVEVSSU5HXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogCi0gICAgW0NvbmRpdGlv
bmFsPUNTU19TQ1JPTExfU05BUCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxT
bmFwT2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xM
X1NOQVAsIE1heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3Mo
RWxlbWVudCBlbGVtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQXSBET01T
dHJpbmcgc2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCBlbGVtZW50KTsKKyAgICBbQ29uZGl0aW9u
YWw9Q1NTX1NDUk9MTF9TTkFQXSBib29sZWFuIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoRWxlbWVu
dCBlbGVtZW50KTsKICAgICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQXSB1bmRlZmluZWQg
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2xlYW4gZW5h
YmxlZCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYXRoU3RyaW5nV2l0
aFNocmlua1dyYXBwZWRSZWN0cyhzZXF1ZW5jZTxkb3VibGU+IHJlY3RDb21wb25lbnRzLCBkb3Vi
bGUgcmFkaXVzKTsKKyAgICBET01TdHJpbmcgcGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVj
dHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91YmxlIHJhZGl1cyk7CiAKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBnZXRDdXJyZW50TWVkaWFDb250cm9sc1N0
YXR1c0ZvckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKIApAQCAtNzc0LDcgKzc3
NCw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIERPTVN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRm9yVVJMKERPTVVSTCB1cmwpOwogICAgIHVuZGVmaW5lZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sZWFuIGVuYWJsZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sZWFuIGFsbG93KTsK
KyAgICB1bmRlZmluZWQgc2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxv
dyk7CiAKICAgICBET01TdHJpbmcgY29tcG9zZWRUcmVlQXNUZXh0KE5vZGUgcGFyZW50KTsKIApA
QCAtODg3LDkgKzg4Nyw5IEBAIGVudW0gVHJlZVR5cGUgewogICAgIGJvb2xlYW4gdXNpbmdHU3Ry
ZWFtZXIoKTsKIAogICAgIHVuZGVmaW5lZCBwb3N0VGFzayhWb2lkQ2FsbGJhY2sgY2FsbGJhY2sp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHF1ZXVlVGFzayhET01TdHJpbmcgc291cmNlLCBWb2lkQ2FsbGJhY2sgY2Fs
bGJhY2spOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB1bmRlZmluZWQg
cXVldWVUYXNrKERPTVN0cmluZyBzb3VyY2UsIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7CiAgICAg
W0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgcXVldWVUYXNrVG9RdWV1ZU1pY3JvdGFzayhE
T01TdHJpbmcgc291cmNlLCBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gYm9vbGVhbiBoYXNTYW1lRXZlbnRMb29wQXMoV2luZG93UHJveHkgd2luZG93UHJv
eHkpOworICAgIGJvb2xlYW4gaGFzU2FtZUV2ZW50TG9vcEFzKFdpbmRvd1Byb3h5IHdpbmRvd1By
b3h5KTsKIAogICAgIERPTVN0cmluZyB3aW5kb3dMb2NhdGlvbkhvc3QoRE9NV2luZG93IHdpbmRv
dyk7CiAKQEAgLTg5NywxMyArODk3LDEzIEBAIGVudW0gVHJlZVR5cGUgewogCiAgICAgdW5kZWZp
bmVkIHNldE1heENhbnZhc1BpeGVsTWVtb3J5KHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKLSAgICBb
Q29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUg
Tm93UGxheWluZ1N0YXRlIG5vd1BsYXlpbmdTdGF0ZTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9d
IHJlYWRvbmx5IGF0dHJpYnV0ZSBOb3dQbGF5aW5nU3RhdGUgbm93UGxheWluZ1N0YXRlOwogCiAg
ICAgW0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MTWVkaWFFbGVtZW50IGJlc3RNZWRpYUVsZW1lbnRG
b3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoUGxheWJhY2tDb250cm9sc1B1cnBvc2Ug
cHVycG9zZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYVNlc3Npb25TdGF0ZSBtZWRp
YVNlc3Npb25TdGF0ZShIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlv
bmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFVc2FnZVN0YXRlIG1lZGlhVXNhZ2VT
dGF0ZShIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gZWxlbWVudFNob3VsZERpc3BsYXlQb3N0ZXJJbWFn
ZShIVE1MVmlkZW9FbGVtZW50IGVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gTWVk
aWFVc2FnZVN0YXRlIG1lZGlhVXNhZ2VTdGF0ZShIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwor
ICAgIFtDb25kaXRpb25hbD1WSURFT10gYm9vbGVhbiBlbGVtZW50U2hvdWxkRGlzcGxheVBvc3Rl
ckltYWdlKEhUTUxWaWRlb0VsZW1lbnQgZWxlbWVudCk7CiAKICAgICBET01TdHJpbmcgb25nb2lu
Z0xvYWRzRGVzY3JpcHRpb25zKCk7CiAgICAgdW5kZWZpbmVkIHNldENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CkBAIC05NzgsMTcgKzk3OCwxNyBA
QCBlbnVtIFRyZWVUeXBlIHsKICAgICAKICAgICBbQ29uZGl0aW9uYWw9QVBQX0hJR0hMSUdIVFNd
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZBcHBIaWdobGlnaHRzKCk7CiAKLSAgICBbQ29uZGl0aW9u
YWw9V0VCWFIsIE1heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJUZXN0
IHhyVGVzdDsKKyAgICBbQ29uZGl0aW9uYWw9V0VCWFJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJY
UlRlc3QgeHJUZXN0OwogCiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV0gdW5zaWdu
ZWQgbG9uZyBtZWRpYUtleXNJbnRlcm5hbEluc3RhbmNlT2JqZWN0UmVmQ291bnQoTWVkaWFLZXlz
IG1lZGlhS2V5cyk7CiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV0gdW5zaWduZWQg
bG9uZyBtZWRpYUtleVNlc3Npb25JbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50
KE1lZGlhS2V5U2Vzc2lvbiBzZXNzaW9uKTsKIAogICAgIHVuZGVmaW5lZCBzZXRDb250ZW50U2l6
ZUNhdGVnb3J5KENvbnRlbnRTaXplQ2F0ZWdvcnkgY2F0ZWdvcnkpOwogCi0gICAgW0NvbmRpdGlv
bmFsPUFUVEFDSE1FTlRfRUxFTUVOVCwgTWF5VGhyb3dFeGNlcHRpb25dIEF0dGFjaG1lbnRUaHVt
Ym5haWxJbmZvIGF0dGFjaG1lbnRUaHVtYm5haWxJbmZvKEhUTUxBdHRhY2htZW50RWxlbWVudCBl
bGVtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9QVRUQUNITUVOVF9FTEVNRU5UXSBBdHRhY2htZW50
VGh1bWJuYWlsSW5mbyBhdHRhY2htZW50VGh1bWJuYWlsSW5mbyhIVE1MQXR0YWNobWVudEVsZW1l
bnQgZWxlbWVudCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwgTWF5VGhyb3dF
eGNlcHRpb25dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24oTWVkaWFTZXNzaW9u
IHNlc3Npb24pOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uIHNlc3Np
b24sIE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9uRGV0YWlscyk7CisgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NFU1NJT05dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24o
TWVkaWFTZXNzaW9uIHNlc3Npb24pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSB1
bmRlZmluZWQgc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbiwgTWVk
aWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25EZXRhaWxzKTsKICAgICBbQ29uZGl0aW9uYWw9
TUVESUFfU0VTU0lPTl0gUHJvbWlzZTxJbWFnZURhdGE+IGxvYWRBcnR3b3JrSW1hZ2UoRE9NU3Ry
aW5nIHVybCk7CiAgICAgCiAgICAgRE9NU3RyaW5nIHRyZWVPcmRlcihOb2RlIGEsIE5vZGUgYiwg
b3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMgewogICAgIHVuZGVmaW5l
ZCBzZXRPbmxpbmUoYm9vbGVhbiBpc09ubGluZSk7Ci0gICAgUHJvbWlzZTxSZXNwb25zZT4gd2Fp
dEZvckZldGNoRXZlbnRUb0ZpbmlzaChGZXRjaEV2ZW50IGV2ZW50KTsKKyAgICBQcm9taXNlPEZl
dGNoUmVzcG9uc2U+IHdhaXRGb3JGZXRjaEV2ZW50VG9GaW5pc2goRmV0Y2hFdmVudCBldmVudCk7
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIEZldGNoRXZlbnQgY3JlYXRl
QmVpbmdEaXNwYXRjaGVkRmV0Y2hFdmVudCgpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBGZXRjaFJlc3BvbnNlIGNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNl
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzksOCArMzksOCBAQAogXSBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUg
OiBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG5hbWU7CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxv
YmplY3Q+IHRyYW5zZmVyKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0
TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5k
ZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVy
KTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55
IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKIAogICAgIHVu
ZGVmaW5lZCBjbG9zZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIAogICAgIHVuZGVmaW5lZCB0ZXJtaW5hdGUoKTsK
IAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOwot
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRp
b25zKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2Uo
YW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOworICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwg
UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25tZXNzYWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtlckdsb2JhbFNjb3BlIHNlbGY7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFdvcmtlckxvY2F0aW9uIGxvY2F0aW9uOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBXb3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGltcG9ydFNjcmlwdHMoVVNWU3RyaW5nLi4uIHVybHMpOworICAgIHVuZGVm
aW5lZCBpbXBvcnRTY3JpcHRzKFVTVlN0cmluZy4uLiB1cmxzKTsKIAogICAgIC8vIEZJWE1FOiBU
aGUgc3BlYyAnb25lcnJvcicgc2hvdWxkIGJlIG9mIHR5cGUgJ09uRXJyb3JFdmVudEhhbmRsZXIn
LgogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaWRsCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQAogXSBpbnRlcmZhY2UgRXh0
ZW5kYWJsZUV2ZW50IDogRXZlbnQgewogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBv
cHRpb25hbCBFeHRlbmRhYmxlRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgd2FpdFVudGlsKFByb21pc2U8YW55PiBmKTsKKyAgICB1
bmRlZmluZWQgd2FpdFVudGlsKFByb21pc2U8YW55PiBmKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHJlc2VydmVkQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0
YXJnZXRDbGllbnRJZDsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlc3Bv
bmRXaXRoKFByb21pc2U8RmV0Y2hSZXNwb25zZT4gcik7CisgICAgdW5kZWZpbmVkIHJlc3BvbmRX
aXRoKFByb21pc2U8RmV0Y2hSZXNwb25zZT4gcik7CiB9OwogCiBkaWN0aW9uYXJ5IEZldGNoRXZl
bnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXIgOiBF
dmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBzY3JpcHRVUkw7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZTsKLSAgICBb
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RN
ZXNzYWdlKGFueSBtZXNzYWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsKLSAgICBbQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNz
YWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7Cisg
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNz
YWdlLCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNz
YWdlT3B0aW9ucyBvcHRpb25zKTsKIAogICAgIC8vIGV2ZW50CiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbnN0YXRlY2hhbmdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBpZDsKIAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVj
dD4gdHJhbnNmZXIpOwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNz
YWdlT3B0aW9ucyBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmlu
ZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOwor
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVz
c2FnZSwgb3B0aW9uYWwgUG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogfTsKIAogZW51bSBG
cmFtZVR5cGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiBdIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyQ2xp
ZW50cyB7CiAgICAgLy8gVGhlIG9iamVjdHMgcmV0dXJuZWQgd2lsbCBiZSBuZXcgaW5zdGFuY2Vz
IGV2ZXJ5IHRpbWUKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBQcm9taXNlPGFueT4gZ2V0KERPTVN0cmluZyBpZCk7Ci0gICAgW05ld09iamVjdCwgQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxzZXF1ZW5jZTxDbGllbnQ+PiBt
YXRjaEFsbChvcHRpb25hbCBDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7Ci0gICAgW05ld09i
amVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxXaW5kb3dDbGll
bnQ/PiBvcGVuV2luZG93KFVTVlN0cmluZyB1cmwpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8c2VxdWVuY2U8U2VydmljZVdvcmtlckNs
aWVudD4+IG1hdGNoQWxsKG9wdGlvbmFsIENsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKKyAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPFNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ/PiBvcGVuV2luZG93KFVTVlN0cmluZyB1cmwpOwogICAg
IFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8dW5k
ZWZpbmVkPiBjbGFpbSgpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw2IEBACiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGU7CiAg
ICAgW0ltcGxlbWVudGVkQXM9aXNGb2N1c2VkXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBm
b2N1c2VkOwogCi0gICAgW05ld09iamVjdF0gUHJvbWlzZTxXaW5kb3dDbGllbnQ+IGZvY3VzKCk7
Ci0gICAgW05ld09iamVjdF0gUHJvbWlzZTxXaW5kb3dDbGllbnQ+IG5hdmlnYXRlKFVTVlN0cmlu
ZyB1cmwpOworICAgIFtOZXdPYmplY3RdIFByb21pc2U8U2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dD4gZm9jdXMoKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9taXNlPFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQ+IG5hdmlnYXRlKFVTVlN0cmluZyB1cmwpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9u
IDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNiBAQAogICAgIElzSW1tdXRhYmxl
UHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCiAgICAgR2xvYmFsPShXb3JrbGV0LFBh
aW50V29ya2xldCksCiBdIGludGVyZmFjZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IFdvcmts
ZXRHbG9iYWxTY29wZSB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gdW5kZWZpbmVkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIG9iamVjdCBwYWlu
dENvbnN0cnVjdG9yKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcmVn
aXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgb2JqZWN0IHBhaW50Q29uc3RydWN0b3IpOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGRldmljZVBpeGVsUmF0aW87
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1
ICsyMyw1IEBACiBdIGludGVyZmFjZSBET01QYXJzZXIgewogICAgIFtDYWxsV2l0aD1Eb2N1bWVu
dF0gY29uc3RydWN0b3IoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBE
b2N1bWVudCBwYXJzZUZyb21TdHJpbmcoRE9NU3RyaW5nIHN0cmluZywgRE9NU3RyaW5nIGNvbnRl
bnRUeXBlKTsKKyAgICBbTmV3T2JqZWN0XSBEb2N1bWVudCBwYXJzZUZyb21TdHJpbmcoRE9NU3Ry
aW5nIHN0cmluZywgRE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEzICs2MSwx
MyBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKIAogICAgIC8vIHJlcXVlc3QKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBvcGVuKEJ5dGVTdHJpbmcgbWV0aG9kLCBVU1ZT
dHJpbmcgdXJsKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBvcGVuKEJ5dGVT
dHJpbmcgbWV0aG9kLCBVU1ZTdHJpbmcgdXJsLCBib29sZWFuIGFzeW5jLCBvcHRpb25hbCBVU1ZT
dHJpbmc/IHVzZXIgPSBudWxsLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHBhc3N3b3JkID0gbnVsbCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UmVxdWVzdEhlYWRlcihCeXRl
U3RyaW5nIGhlYWRlciwgQnl0ZVN0cmluZyB2YWx1ZSk7CisgICAgdW5kZWZpbmVkIG9wZW4oQnl0
ZVN0cmluZyBtZXRob2QsIFVTVlN0cmluZyB1cmwpOworICAgIHVuZGVmaW5lZCBvcGVuKEJ5dGVT
dHJpbmcgbWV0aG9kLCBVU1ZTdHJpbmcgdXJsLCBib29sZWFuIGFzeW5jLCBvcHRpb25hbCBVU1ZT
dHJpbmc/IHVzZXIgPSBudWxsLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHBhc3N3b3JkID0gbnVsbCk7
CisgICAgdW5kZWZpbmVkIHNldFJlcXVlc3RIZWFkZXIoQnl0ZVN0cmluZyBoZWFkZXIsIEJ5dGVT
dHJpbmcgdmFsdWUpOwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CiAgICAg
YXR0cmlidXRlIGJvb2xlYW4gd2l0aENyZWRlbnRpYWxzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBYTUxIdHRwUmVxdWVzdFVwbG9hZCB1cGxvYWQ7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgc2VuZChvcHRpb25hbCAoRG9jdW1lbnQgb3IgQm9keUluaXQpPyBib2R5ID0gbnVs
bCk7CisgICAgdW5kZWZpbmVkIHNlbmQob3B0aW9uYWwgKERvY3VtZW50IG9yIEJvZHlJbml0KT8g
Ym9keSA9IG51bGwpOwogICAgIHVuZGVmaW5lZCBhYm9ydCgpOwogCiAgICAgLy8gcmVzcG9uc2UK
QEAgLTc2LDcgKzc2LDcgQEAgZW51bSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEJ5dGVTdHJpbmcgc3RhdHVzVGV4dDsKICAgICBCeXRlU3RyaW5n
PyBnZXRSZXNwb25zZUhlYWRlcihCeXRlU3RyaW5nIG5hbWUpOwogICAgIEJ5dGVTdHJpbmcgZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
b3ZlcnJpZGVNaW1lVHlwZShET01TdHJpbmcgbWltZSk7CisgICAgdW5kZWZpbmVkIG92ZXJyaWRl
TWltZVR5cGUoRE9NU3RyaW5nIG1pbWUpOwogICAgIGF0dHJpYnV0ZSBYTUxIdHRwUmVxdWVzdFJl
c3BvbnNlVHlwZSByZXNwb25zZVR5cGU7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZSwgQ3VzdG9tR2V0
dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlc3BvbnNlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBVU1ZTdHJpbmcgcmVzcG9uc2VUZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRXZhbHVhdG9yQmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRXZhbHVhdG9yQmFzZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aEV2YWx1YXRvckJhc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw5
IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jeHBhdGhldmFsdWF0b3JiYXNl
CiBpbnRlcmZhY2UgbWl4aW4gWFBhdGhFdmFsdWF0b3JCYXNlIHsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIE5ld09iamVjdF0gWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24oRE9NU3Ry
aW5nIGV4cHJlc3Npb24sIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOworICAg
IFtOZXdPYmplY3RdIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKERPTVN0cmluZyBl
eHByZXNzaW9uLCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsKICAgICBYUGF0
aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihOb2RlIG5vZGVSZXNvbHZlcik7CiAgICAgLy8g
WFBhdGhSZXN1bHQuQU5ZX1RZUEUgPSAwCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBYUGF0aFJl
c3VsdCBldmFsdWF0ZShET01TdHJpbmcgZXhwcmVzc2lvbiwgTm9kZSBjb250ZXh0Tm9kZSwgb3B0
aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlciwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQg
dHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CisgICAgWFBhdGhSZXN1
bHQgZXZhbHVhdGUoRE9NU3RyaW5nIGV4cHJlc3Npb24sIE5vZGUgY29udGV4dE5vZGUsIG9wdGlv
bmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5
cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQpOwogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw1ICsyMyw1IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvc2Vk
PVdpbmRvdwogXSBpbnRlcmZhY2UgWFBhdGhFeHByZXNzaW9uIHsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFhQYXRoUmVzdWx0IGV2YWx1YXRlKE5vZGUgY29udGV4dE5vZGUsIG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQgPSBu
dWxsKTsKKyAgICBYUGF0aFJlc3VsdCBldmFsdWF0ZShOb2RlIGNvbnRleHROb2RlLCBvcHRpb25h
bCB1bnNpZ25lZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0
ID0gbnVsbCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aW52YWxpZEl0ZXJhdG9yU3RhdGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgc25hcHNob3RMZW5ndGg7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgaXRlcmF0
ZU5leHQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgc25hcHNob3RJdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIE5vZGUgaXRlcmF0ZU5leHQoKTsKKyAgICBOb2RlIHNuYXBz
aG90SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423956</attachid>
            <date>2021-03-22 16:14:32 -0700</date>
            <delta_ts>2021-03-22 17:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180019-20210322161430.patch</filename>
            <type>text/plain</type>
            <size>667395</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzNiBAQAorMjAyMS0wMy0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIHRoZSBu
ZWVkIHRvIHNwZWNpZnkgW01heVRocm93RXhjZXB0aW9uXQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIgYW5kIENocmlzIER1bWV6LgorCisgICAgICAgIFJlbW92ZXMgdGhlIG5lZWQg
dG8gc3BlY2lmeSBbTWF5VGhyb3dFeGNlcHRpb25dIGJ5IGRlZHVjaW5nIGl0IGZyb20gdGhlIGJv
dW5kIAorICAgICAgICBzaWduYXR1cmUncyByZXR1cm4gdmFsdWUuIEFueSBmdW5jdGlvbiByZXR1
cm5pbmcgYW4gRXhjZXB0aW9uT3IgaXMgb25lIHRoYXQgdGhyb3dzLgorCisgICAgICAgIEluIG1v
c3QgY2FzZXMsIHRoaXMgd2FzIGFscmVhZHkgaGFuZGxlZCBieSB0b0pTPD4oLi4uLCBpbXBsLmZ1
bmMoKSksIHdoaWNoIGhhZAorICAgICAgICBvdmVybG9hZHMgZm9yIHRoZSBjYXNlIHRoYXQgdGhl
IHZhbHVlIHdhcyBhbiBFeGNlcHRpb25Pci4gVGhlIGNhc2VzIHRoaXMgZGlkbid0CisgICAgICAg
IHdvcmsgZm9yIHdlcmUgZnVudGlvbnMgdGhhdCByZXR1cm5lZCB2b2lkLCBhcyB0b0pTPD4oLi4u
LCBpbXBsLmZ1bmMoKSkgd291bGQgbm90CisgICAgICAgIGNvbXBpbGUuIFRvIHdvcmsgYXJvdW5k
IHRoaXMsIHRvSlM8PigpIGNhbiBub3cgdGFrZSBhIGxhbWJkYSBhcyBpdHMgdmFsdWUsIGFuZAor
ICAgICAgICBjYW4gZGV0ZXJtaW5lIHZpYSB0aGUgbGFtYmRhJ3MgcmV0dXJuIHR5cGUgaWYgaXQg
bmVlZHMgdG8gdGhyb3cuIEZvciBpbnN0YW5jZSwKKyAgICAgICAgYW4gSURMIG9wZXJhdGlvbiBs
aWtlOgorCisgICAgICAgICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBmdW5jKCk7
CisKKyAgICAgICAgdXNlZCB0byBnZW5lcmF0ZSBhIGJpbmRpbmdzIGJvZHkgdGhhdCBsb29rZWQg
bGlrZSB0aGUgZm9sbG93aW5nIDoKKworICAgICAgICAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgICAg
ICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmZ1bmMoKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOyAgICAgICAgCisgICAgICAgIAorICAgICAgICB3aWxsIG5vdyBnZW5lcmF0ZSBh
IGJpbmRpbmdzIGJvZHkgdGhhdCBsb29rcyBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLmZ1bmMoKTsgfSkpKTsKKworICAgICAgICB3aGljaCBjbG9zZWx5IG1p
cnJvcnMgYSBub24tdW5kZWZpbmVkIHJldHVybiBvcGVyYXRpb24uIFRoaXMgd3JhcHBlZCBsYW1i
ZGEgZm9ybQorICAgICAgICBpcyBvbmx5IHVzZWQgZm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHVu
ZGVmaW5lZCBvciBwcm9taXNlcywgYXMgdGhvc2UgYXJlIHRoZSBvbmx5CisgICAgICAgIGZ1bmN0
aW9ucyB0aGF0IGNhbiByZXR1cm4gdm9pZCwgYnV0IGl0IHdvdWxkIGJlIGNvcnJlY3QgdG8gdXNl
IHRoZW0gZm9yIGFsbCB0eXBlcywKKyAgICAgICAgaWYgbm90IGEgYml0IG1vcmUgbm9pc3kgYW5k
IHBlcmhhcHMgYSB0aW55IGNvbXBpbGUgdGltZSBjb3N0LgorCisgICAgICAgIE5PVEU6IFRoZSB1
c2Ugb2YgYC0+IGRlY2x0eXBlKGF1dG8pYCBleHBsaWNpdCByZXR1cm4gdHlwZSBvbiB0aGUgbGFt
YmRhIGlzIHJlcXVpcmVkCisgICAgICAgIHRvIHBlcmZlY3RseSBmb3J3YXJkIHJlZmVyZW5jZSB0
eXBlcywgc3VjaCBhcyB0aG9zZSB1c2VkIGJ5IG93bmVkIHByb21pc2VzLiBPdGhlcndpc2UsCisg
ICAgICAgIGEgY29weSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkLgorCisgICAgICAgIEluIGFkZGl0
aW9uIHRvIHN1cHBvcnRpbmcgYWxsIG9wZXJhdGlvbnMsIHRoaXMgYWxzbyByZW1vdmVzIHRoZSBy
ZXF1aXJlbWVudCB0byBhbm5vdGF0ZQorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBnZXR0ZXJz
L3NldHRlcnMuIFRoaXMgbW9zdGx5IGp1c3QgbWVhbnMgYWx3YXlzIGRlZmluaW5nIGEgdGhyb3cg
c2NvcGUsCisgICAgICAgIGJ1dCBmb3IgbmFtZWQgZ2V0dGVycyBpdCBhbHNvIG1lYW50IGFkZGlu
ZyBhIG5ldyBoZWxwZXIsIGB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3Jg
CisgICAgICAgIHdoaWNoIGNvbnN0cnVjdG9ycyB0aGUgaXRlbSBhY2Nlc3NvciBmdW5jdG9yIGZv
ciB0aGUgYGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5YCAKKyAgICAgICAgYWxnb3JpdGhtIHJh
dGhlciB0aGFuIGhhcmQgY29kaW5nIGl0IGluIHRoZSBnZW5lcmF0b3IuCisKKyAgICAgICAgRHVl
IHRvIGluY3JlYXNlZCB1c2Ugb2YgdG9KUywgdGhlIGNvZGUgZ2VuZXJhdG9yIGlzIG5vdyBjaGVj
a2luZyBtb3JlIHJldHVybiB0eXBlcworICAgICAgICAodmlhIEFkZFRvSW1wbEluY2x1ZGVzRm9y
SURMVHlwZSkgc28gdGhlIGNvZGUgZ2VuZXJhdG9yIHdhcyBhYmxlIHRvIGZpbmQgYSBmZXcgaW52
YWxpZAorICAgICAgICByZXR1cm4gdHlwZXMgKGUuZy4gdXNlIG9mIFByb21pc2U8Ym9vbD4gcmF0
aGVyIHRoYW4gUHJvbWlzZTxib29sZWFuPiwgZXRjLikgYW5kIHRoZXNlCisgICAgICAgIGhhdmUg
YmVlbiBmaXhlZCBhbmQgd2lsbCBiZSBhbiBlcnJvciBnb2luZyBmb3J3YXJkLiBXb3VsZCBiZSBh
IG5pY2UgaW1wcm92ZW1lbnQgdG8KKyAgICAgICAgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIGRvIHR5
cGUgY2hlY2tpbmcgdXAgZnJvbnQsIHJhdGhlciB0aGFuIGFzIGEgc2lkZSBlZmZlY3Qgb2YKKyAg
ICAgICAgY29kZSBnZW5lcmF0aW9uLCBidXQgd2Ugd2lsbCBsZWF2ZSB0aGF0IGZvciBhbm90aGVy
IGRheS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0
b3IpOgorICAgICAgICBBZGRlZC4gTW92ZXMgdGhlIGdldHRlckZ1bmN0b3IgbGFtYmRhIGNyZWF0
aW9uIGZyb20gdGhlIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEKKyAgICAgICAgc3Vicm91dGlu
ZSBpbiBDb2RlR2VuZXJhdG9ySlMucG0sIGJ1dCB1c2VzIGRlZHVjdGlvbiBhbmQgY29uc3RleHBy
IHRvIGRldGVybWluZQorICAgICAgICBpZiB0aGUgZ2V0dGVyIHRocm93cy4KKworICAgICAgICAo
V2ViQ29yZTo6YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICBSZW5hbWUgRnVu
Y3RvciB0byBJdGVtQWNjZXNzb3IgdG8gbWFrZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQgdGhl
IHR5cGUgZG9lcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3Jl
YXRlZCk6CisgICAgICAgIFJlcGxhY2UgU0ZJTkFFLWJhc2VkIG92ZXJsb2FkaW5nIG9mIHRvSlMv
dG9KU05ld2x5Q3JlYXRlZCB3aXRoIGNvbnN0ZXhwciBiYXNlZAorICAgICAgICBjb25kaXRpb25h
bHMgYW5kIGFkZCB0aGUgYWJpbGl0eSB0byBwYXNzIGluIGEgZnVuY3RvciByYXRoZXIgdGhhbiB2
YWx1ZS4gSWYgYQorICAgICAgICBmdW5jdG9yIGlzIHVzZWQsIGFkZGl0aW9uYWwgY29kZSBwYXRo
cyBmb3Igdm9pZCBhbmQgRXhwZWN0aW9uT3I8dm9pZD4gYXJlIGFkZGVkCisgICAgICAgIHdoaWNo
IGV4cGxpY2l0bHkgcmV0dXJuIGpzVW5kZWZpbmVkKCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnREYXRlLmNwcDoKKyAgICAgICAgUmVtb3ZlIGluY29ycmVjdCBjb21tZW50
IGFib3V0IEV4ZWNTdGF0ZXMgdGhhdCBoYXNuJ3QgYXBwbGllZCBmb3IgYSB3aGlsZS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oOgorICAgICAgICBGaXgg
Y29tbWVudCwgcmVwbGFjaW5nIEV4ZWNTdGF0ZSB3aXRoIEpTR2xvYmFsT2JqZWN0LiBUaGlzIGhh
cyBiZWVuIHdyb25nIGZvcgorICAgICAgICBhIHdoaWxlLCBhbmQgdGhpcyBpcyBqdXN0IGEgZHJp
dmUgYnkgZml4LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9u
SWZOZWNlc3NhcnkpOgorICAgICAgICBVc2UgYW4gZXhwbGljaXQgZWxzZSBhcyBwYXJ0IG9mIHRo
ZSBjb25zdGV4cHIgZXhwcmVzc2lvbiB0byBlbnN1cmUgdGhlIGZ1bmN0b3IKKyAgICAgICAgaXMg
bm90IGNhbGxlZCwgZXZlbiBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEZWZl
cnJlZFByb21pc2UpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmg6CisgICAgICAgIFJlbW92ZSB1bnVzZWQgY3JlYXRlRGVmZXJyZWRQcm9taXNl
IGZ1bmN0aW9uLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRNYXBMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKEFkZFNldExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZWVkZWQpOgorICAg
ICAgICBGaXggcmV0dXJuIHR5cGUgb2YgbWFwcGVkIGNsZWFyIG9wZXJhdGlvbiB0byBiZSBgYW55
YCByYXRoZXIgdGhhbiBgdW5kZWZpbmVkYAorICAgICAgICB0byBtYXRjaCB0aGUgaW1wbGVtZW50
YXRpb24sIHdoaWNoIHJldHVybnMgYSBKU1ZhbHVlIChlLmcuIGBhbnlgKS4gVGhpcyBpcyBub3cK
KyAgICAgICAgcmVxdWlyZWQgYXMgd2UgYWN0dWFsbHkgbG9vayBhdCB0aGUgcmV0dXJuIHR5cGUg
dmlhIGRlZHVjdGlvbiBhbmQgbmVlZCBpdCB0byBtYXRjaC4KKyAKKyAgICAgICAgKEdlbmVyYXRl
TmFtZWRHZXR0ZXJMYW1iZGEpOgorICAgICAgICBSZXBsYWNlIG1vc3Qgb2YgdGhlIGltcGxlbWVu
dGF0aW9uIHdpdGggYSBjYWxsIHRvIHRoZSBuZXcgYHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFj
Y2Vzc29yRnVuY3RvcmAKKyAgICAgICAgaGVscGVyIHdoaWNoIHJldHVybnMgYSBsYW1iZGEgd2l0
aCB0aGUgY29ycmVjdCBiZWhhdmlvciBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB0eXBlIG9mIHRo
ZSBpbm5lcgorICAgICAgICBsYW1iZGEgcGFzc2VkLgorIAorICAgICAgICAoR2VuZXJhdGVHZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpb24pOgor
ICAgICAgICBNYXRjaCBtb3N0IG90aGVyIHBhcnRzIG9mIHRoZSBnZW5lcmF0b3IgYW5kIGFsd2F5
cyBjcmVhdGUgYSB0aHJvdyBzY29wZS4KKworICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZp
bml0aW9uKToKKyAgICAgICAgUmVtb3ZlIGV4cGxpY2l0IGNhbGwgdG8gcHJvcGFnYXRlRXhjZXB0
aW9uIG5vdyB0aGF0IHRvSlMoKSB3aWxsIGhhbmRsZSB0aGF0IGZvciB1cy4KKworICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2FsbCB0
byBwcm9wYWdhdGVFeGNlcHRpb24gbm93IHRoYXQgdG9KUygpIHdpbGwgaGFuZGxlIHRoYXQgZm9y
IHVzLgorCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAg
ICAgICAgU2ltcGxpZnkgYnkgdXNpbmcgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9u
SWZOZWNlc3NhcnkgaGVscGVyIGZvciB0aGUgInJldHVybkFyZ3VtZW50TmFtZSIKKyAgICAgICAg
Y2FzZSBhbmQgcmVseWluZyBvbiB0b0pTIGhhbmRsaW5nIHRoZSBvdGhlciBjYXNlcy4KKworICAg
ICAgICAoTmF0aXZlVG9KU1ZhbHVlTWF5VGhyb3cpOgorICAgICAgICBBZGQgb3BlcmF0aW9uIHRv
IHRoZSBsaXN0IG9mIHRoaW5ncyB0aGF0IG1pZ2h0IGFsd2F5cyB0aHJvdy4KKworICAgICAgICAo
TmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgVXNlIHRoZSBsYW1iZGEgd3JhcHBlZCB2ZXJzaW9u
IG9mIHRvSlMgZm9yIHVuZGVmaW5lZCBhbmQgcHJvbWlzZSB0eXBlcywgd2hpY2ggbWlnaHQgYm90
aAorICAgICAgICByZXR1cm4gdm9pZCBhbmQgdGh1cyByZXF1aXJlIGl0LiBUbyBrZWVwIG1vc3Qg
Y29kZSB1bmNoYW5nZWQsIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSBjb21waWxlcgorICAgICAgICB3
b3JrLCB3ZSBvbmx5IHVzZSB0aGUgd3JhcHBlZCB2ZXJzaW9uIHdoZW4gaXQgbWlnaHQgYmUgbmVj
ZXNzYXJ5LiBJZiBpdCB0dXJucyBvdXQgdG8gYmUKKyAgICAgICAgY2hlZXAgZW5vdWdoLCBpdCBt
aWdodCBtYWtlIHNlbnNlIHRvIGFsd2F5cyB1c2UgdGhpcyBmb3JtIGZvciBzaW1wbGljaXR5Lgor
CisgICAgICAgIChOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAg
ICAgUmVtb3ZlIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVBdHRyaWJ1dGVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVBdHRyaWJ1dGVOU0ZvckJpbmRpbmdzKToKKyAgICAgICAgQWRkIGJpbmRpbmdzIHNwZWNp
ZmljIHZlcnNpb25zIG9mIGByZW1vdmVBdHRyaWJ1dGVgIGFuZCBgcmVtb3ZlQXR0cmlidXRlTlNg
IHdoaWNoCisgICAgICAgIGhhdmUgYSB2b2lkIHJldHVybiB0eXBlIChyYXRoZXIgdGhhbiB0aGUg
Ym9vbCB1c2VkIGJ5IHRoZSBtYWluIGltcGxlbWVudGF0aW9uKQorICAgICAgICBhcyBpdCBpcyBu
b3cgYSByZXF1aXJlbWVudCB0aGF0IHRoYXQgdGhlIGJvdW5kIGZ1bmN0aW9ucyBzaWduYXR1cmUg
bWF0Y2ggdGhlIElETC4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaWRsOgor
ICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBGZXRjaFJlcXVlc3RgLCBu
b3QgYFJlcXVlc3RgLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2Uu
aWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBET01DYWNoZWAs
IG5vdCBgQ2FjaGVgLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQrU3RvcmFnZUFjY2Vzcy5pZGw6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3IrSXNMb2dnZWRJbi5pZGw6CisgICAgICAgIFVzZSB0aGUgY29ycmVj
dCBJREwgdHlwZSwgYGJvb2xlYW5gLCBub3QgYGJvb2xgLgorCisgICAgICAgICogZG9tL0Fib3J0
U2lnbmFsLmlkbDoKKyAgICAgICAgVXBkYXRlIHdoZW5TaWduYWxBYm9ydGVkIHRvIG1hdGNoIHRo
ZSByZXR1cm4gdHlwZSBvZiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgYGJvb2xlYW5gLAorICAg
ICAgICBub3QgYHVuZGVmaW5lZGAuCisKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWUsIGBG
ZXRjaFJlc3BvbnNlYCwgbm90IGBSZXNwb25zZWAuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsOgorICAgICAgICBVc2UgdGhlIGNvcnJlY3QgaW50
ZXJmYWNlIG5hbWVzLCBgU2VydmljZVdvcmtlckNsaWVudGAsIG5vdCBgQ2xpZW50YCwgYW5kIGBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50YCwgbm90IGBXaW5kb3dDbGllbnRgLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsOgorICAgICAg
ICBVc2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlIG5hbWVzLCBgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudGAsIG5vdCBgV2luZG93Q2xpZW50YC4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3Ir
QmVhY29uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvdytDYWNoZXMuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2Vi
S2l0TWVkaWFLZXlzLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIrVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2NlaXZlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJj
aGFudFZhbGlkYXRpb25FdmVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldFByb2Nlc3Nvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9D
b250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
aWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vSUlSRmlsdGVyTm9kZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGFi
bGUuaWRsOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsOgorICAgICAg
ICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGw6CisgICAgICAgICogYW5pbWF0aW9uL1dl
YkFuaW1hdGlvbi5pZGw6CisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGw6CisgICAg
ICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNoZWV0LmlkbDoKKyAgICAgICAgKiBjc3MvRE9NQ1NTTmFtZXNwYWNlK0NTU1Byb3BlcnRpZXNh
bmRWYWx1ZXMuaWRsOgorICAgICAgICAqIGNzcy9ET01NYXRyaXguaWRsOgorICAgICAgICAqIGNz
cy9ET01NYXRyaXhSZWFkT25seS5pZGw6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVBy
aW1pdGl2ZVZhbHVlLmlkbDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaWRsOgorICAgICAg
ICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmlkbDoK
KyAgICAgICAgKiBkb20vQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5LmlkbDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsOgorICAg
ICAgICAqIGRvbS9ET01Qb2ludFJlYWRPbmx5LmlkbDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudCtIVE1MLmlkbDoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcu
aWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50K1BvaW50ZXJFdmVudHMuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5pZGw6CisgICAgICAgICogZG9tL05hbWVkTm9k
ZU1hcC5pZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlSXRl
cmF0b3IuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAgICAgICAgKiBkb20v
UmFuZ2UrRE9NUGFyc2luZy5pZGw6CisgICAgICAgICogZG9tL1JhbmdlLmlkbDoKKyAgICAgICAg
KiBkb20vVGV4dC5pZGw6CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmlkbDoKKyAgICAgICAg
KiBkb20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbDoKKyAgICAgICAgKiBkb20vVHJlZVdh
bGtlci5pZGw6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXIuaWRsOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsOgor
ICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxEaWFsb2dFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxTZWxlY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAgICog
aHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbDoKKyAgICAgICAgKiBodG1sL1RpbWVS
YW5nZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGw6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5p
ZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9J
bWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1Bh
dGgyRC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaWRsOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGw6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOgor
ICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5pZGw6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0
aW9uLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOgorICAg
ICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UrVXNlclRpbWluZy5pZGw6CisgICAgICAgICogcGFnZS9Q
ZXJmb3JtYW5jZU9ic2VydmVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1VuZG9NYW5hZ2VyLmlkbDoK
KyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGw6CisgICAgICAgICogcGFnZS9X
aW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2Uu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5pZGw6CisgICAgICAgICogc3ZnL1NWR0dlb21l
dHJ5RWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGw6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdOdW1i
ZXJMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdQb2ludExpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0LmlkbDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcv
U1ZHVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5pZGw6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaWRsOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlRXZlbnQuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50Lmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGw6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsOgorICAgICAgICAqIHdv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB4bWwvRE9NUGFy
c2VyLmlkbDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsOgorICAgICAgICAqIHht
bC9YUGF0aEV2YWx1YXRvckJhc2UuaWRsOgorICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb24u
aWRsOgorICAgICAgICAqIHhtbC9YUGF0aFJlc3VsdC5pZGw6CisgICAgICAgIFJlbW92ZSB1c2Ug
b2YgW01heVRocm93RXhjZXB0aW9uXS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy8qOgorICAgICAgICBSZW1vdmUgdXNlcyBvZiBbTWF5VGhyb3dFeGNlcHRpb25dIGluIHRo
ZSB0ZXN0cyBhbmQgdXBkYXRlIGFsbCB0aGUgdGVzdCByZXN1bHRzLgorCiAyMDIxLTAzLTE5ICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW5rIGFnYWluc3QgdGhl
IEFOR0xFIFNoYXJlZCBMaWJyYXJ5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDIzICs0MSwyMyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNU
QVRVU19QSU5fSU5DT1JSRUNUID0gNjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFUVVNf
UElOX0xPQ0tPVVQgPSA3OwogCi0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gc3RhdGljIGJvb2xlYW4gc3VwcG9ydHNWZXJzaW9uKHVuc2lnbmVkIGxvbmcgdmVyc2lv
bik7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIGJv
b2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7Ci0gICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8Ym9vbGVhbj4gb3BlblBh
eW1lbnRTZXR1cChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyKTsKKyAgICBbQ2FsbFdpdGg9
RG9jdW1lbnRdIHN0YXRpYyBib29sZWFuIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCBsb25nIHZl
cnNpb24pOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBh
eW1lbnRzKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgUHJvbWlzZTxib29sZWFu
PiBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChET01TdHJpbmcgbWVyY2hhbnRJZGVudGlm
aWVyKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyBQcm9taXNlPGJvb2xlYW4+IG9w
ZW5QYXltZW50U2V0dXAoRE9NU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllcik7CiAKLSAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVnaW4oKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbiwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgY29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oYW55IG1lcmNoYW50U2Vzc2lvbik7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBw
aW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oQXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RVcGRhdGUgdXBkYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb21w
bGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHVw
ZGF0ZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tcGxldGVQYXltZW50
KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgcmVzdWx0KTsKKyAgICBbQ2FsbFdp
dGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBiZWdpbigpOworICAgIHVuZGVmaW5lZCBhYm9ydCgpOwor
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBjb21wbGV0ZU1lcmNoYW50VmFs
aWRhdGlvbihhbnkgbWVyY2hhbnRTZXNzaW9uKTsKKyAgICB1bmRlZmluZWQgY29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbihBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHVwZGF0ZSk7
CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEFwcGxlUGF5
U2hpcHBpbmdDb250YWN0VXBkYXRlIHVwZGF0ZSk7CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRlKTsK
KyAgICB1bmRlZmluZWQgY29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHQgcmVzdWx0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBBcHBs
ZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5l
SXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlU2hpcHBp
bmdDb250YWN0U2VsZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgc2VxdWVuY2U8QXBwbGVQ
YXlTaGlwcGluZ01ldGhvZD4gbmV3U2hpcHBpbmdNZXRob2RzLCBBcHBsZVBheUxpbmVJdGVtIG5l
d1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXMpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bihBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxpbmVJdGVtPiBu
ZXdMaW5lSXRlbXMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRl
UGF5bWVudCh1bnNpZ25lZCBzaG9ydCBzdGF0dXMpOworICAgIHVuZGVmaW5lZCBjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgQXBwbGVQYXlMaW5l
SXRlbSBuZXdUb3RhbCwgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zKTsK
KyAgICB1bmRlZmluZWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWduZWQg
c2hvcnQgc3RhdHVzLCBzZXF1ZW5jZTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGlu
Z01ldGhvZHMsIEFwcGxlUGF5TGluZUl0ZW0gbmV3VG90YWwsIHNlcXVlbmNlPEFwcGxlUGF5TGlu
ZUl0ZW0+IG5ld0xpbmVJdGVtcyk7CisgICAgdW5kZWZpbmVkIGNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbihBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsLCBzZXF1ZW5jZTxBcHBsZVBheUxp
bmVJdGVtPiBuZXdMaW5lSXRlbXMpOworICAgIHVuZGVmaW5lZCBjb21wbGV0ZVBheW1lbnQodW5z
aWduZWQgc2hvcnQgc3RhdHVzKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb252YWxp
ZGF0ZW1lcmNoYW50OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25wYXltZW50bWV0aG9k
c2VsZWN0ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3Ir
QmVhY29uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9O
YXZpZ2F0b3IrQmVhY29uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yK0JlYWNvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDUgKzMwLDUgQEAgdHlwZWRlZiAoQmxvYiBvciBCdWZmZXJTb3VyY2Ugb3IgRE9NRm9ybQogICAg
IEVuYWJsZWRCeVNldHRpbmc9QmVhY29uQVBJLAogICAgIEltcGxlbWVudGVkQnk9TmF2aWdhdG9y
QmVhY29uCiBdIHBhcnRpYWwgaW50ZXJmYWNlIE5hdmlnYXRvciB7Ci0gICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzZW5kQmVhY29uKFVTVlN0cmluZyB1
cmwsIG9wdGlvbmFsIEJvZHlJbml0PyBkYXRhID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPURvY3Vt
ZW50XSBib29sZWFuIHNlbmRCZWFjb24oVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgQm9keUluaXQ/
IGRhdGEgPSBudWxsKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDUgKzM4LDUgQEAgdHlwZWRl
ZiAoRmV0Y2hSZXF1ZXN0IG9yIFVTVlN0cmluZykgUmVxdQogICAgIFtOZXdPYmplY3RdIFByb21p
c2U8dW5kZWZpbmVkPiBhZGRBbGwoc2VxdWVuY2U8UmVxdWVzdEluZm8+IHJlcXVlc3RzKTsKICAg
ICBbTmV3T2JqZWN0XSBQcm9taXNlPHVuZGVmaW5lZD4gcHV0KFJlcXVlc3RJbmZvIHJlcXVlc3Qs
IEZldGNoUmVzcG9uc2UgcmVzcG9uc2UpOwogICAgIFtOZXdPYmplY3QsIEltcGxlbWVudGVkQXM9
cmVtb3ZlXSBQcm9taXNlPGJvb2xlYW4+IGRlbGV0ZShSZXF1ZXN0SW5mbyByZXF1ZXN0LCBvcHRp
b25hbCBDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKLSAgICBbTmV3T2JqZWN0XSBQcm9taXNl
PHNlcXVlbmNlPFJlcXVlc3Q+PiBrZXlzKG9wdGlvbmFsIFJlcXVlc3RJbmZvIHJlcXVlc3QsIG9w
dGlvbmFsIENhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOworICAgIFtOZXdPYmplY3RdIFByb21p
c2U8c2VxdWVuY2U8RmV0Y2hSZXF1ZXN0Pj4ga2V5cyhvcHRpb25hbCBSZXF1ZXN0SW5mbyByZXF1
ZXN0LCBvcHRpb25hbCBDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3Rv
cmFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiAoRmV0Y2hS
ZXF1ZXN0IG9yIFVTVlN0cmluZykgUmVxdQogXSBpbnRlcmZhY2UgRE9NQ2FjaGVTdG9yYWdlIHsK
ICAgICBbTmV3T2JqZWN0XSBQcm9taXNlPGFueT4gbWF0Y2goUmVxdWVzdEluZm8gcmVxdWVzdCwg
b3B0aW9uYWwgQ2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgW05ld09iamVjdF0gUHJv
bWlzZTxib29sZWFuPiBoYXMoRE9NU3RyaW5nIGNhY2hlTmFtZSk7Ci0gICAgW05ld09iamVjdF0g
UHJvbWlzZTxDYWNoZT4gb3BlbihET01TdHJpbmcgY2FjaGVOYW1lKTsKKyAgICBbTmV3T2JqZWN0
XSBQcm9taXNlPERPTUNhY2hlPiBvcGVuKERPTVN0cmluZyBjYWNoZU5hbWUpOwogICAgIFtOZXdP
YmplY3QsIEltcGxlbWVudGVkQXM9cmVtb3ZlXSBQcm9taXNlPGJvb2xlYW4+IGRlbGV0ZShET01T
dHJpbmcgY2FjaGVOYW1lKTsKICAgICBbTmV3T2JqZWN0XSBQcm9taXNlPHNlcXVlbmNlPERPTVN0
cmluZz4+IGtleXMoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TVdpbmRvdytDYWNoZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NV2luZG93K0NhY2hlcy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93K0NhY2hlcy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDUgKzI5LDUgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUNhY2hlQVBJLAogICAgIElt
cGxlbWVudGVkQnk9RE9NV2luZG93Q2FjaGVzCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRv
dyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0
aW9uLCBTZWN1cmVDb250ZXh0LCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NQ2Fj
aGVTdG9yYWdlIGNhY2hlczsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
U2VjdXJlQ29udGV4dCwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTUNhY2hlU3Rv
cmFnZSBjYWNoZXM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmtleXN0YXR1c2VzY2hhbmdlOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb25tZXNzYWdlOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBnZW5lcmF0ZVJlcXVlc3QoRE9N
U3RyaW5nIGluaXREYXRhVHlwZSwgQnVmZmVyU291cmNlIGluaXREYXRhKTsKLSAgICBQcm9taXNl
PGJvb2w+IGxvYWQoRE9NU3RyaW5nIHNlc3Npb25JZCk7CisgICAgUHJvbWlzZTxib29sZWFuPiBs
b2FkKERPTVN0cmluZyBzZXNzaW9uSWQpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiB1cGRhdGUo
QnVmZmVyU291cmNlIHJlc3BvbnNlKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gY2xvc2UoKTsK
ICAgICBQcm9taXNlPHVuZGVmaW5lZD4gcmVtb3ZlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDYgQEAKICAgICBEaXNhYmxlZEJ5UXVp
cms9aGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0LAogICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBNZWRpYUtleXMgewotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhy
b3dFeGNlcHRpb25dIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKG9wdGlvbmFsIE1lZGlh
S2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUgPSAidGVtcG9yYXJ5Iik7Ci0gICAgUHJvbWlzZTxi
b29sPiBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShCdWZmZXJTb3VyY2Ugc2VydmVyQ2VydGlmaWNhdGUp
OworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24o
b3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsK
KyAgICBQcm9taXNlPGJvb2xlYW4+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBz
ZXJ2ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRp
YUtleVNlc3Npb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBrZXlTeXN0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZXNzaW9u
SWQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB1cGRhdGUoVWludDhBcnJh
eSBrZXkpOworICAgIHVuZGVmaW5lZCB1cGRhdGUoVWludDhBcnJheSBrZXkpOwogICAgIHVuZGVm
aW5lZCBjbG9zZSgpOwogICAgIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRr
ZXlhZGRlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogXSBp
bnRlcmZhY2UgV2ViS2l0TWVkaWFLZXlzIHsKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcga2V5
U3lzdGVtKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5n
IHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcg
dHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CiAgICAgc3RhdGljIGJvb2xlYW4gaXNUeXBlU3Vw
cG9ydGVkKERPTVN0cmluZyBrZXlTeXN0ZW0sIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMSBAQCB0eXBlZGVmIChzZXF1ZW5jZTxzZXF1
ZW5jZTxCeXRlU3RyaW5nPj4gCiBdIGludGVyZmFjZSBGZXRjaEhlYWRlcnMgewogICAgIGNvbnN0
cnVjdG9yKG9wdGlvbmFsIEhlYWRlcnNJbml0IGluaXQpOwogCi0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdW5kZWZpbmVk
IGRlbGV0ZShCeXRlU3RyaW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQnl0ZVN0
cmluZz8gZ2V0KEJ5dGVTdHJpbmcgbmFtZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29s
ZWFuIGhhcyhCeXRlU3RyaW5nIG5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHNldChCeXRlU3RyaW5nIG5hbWUsIEJ5dGVTdHJpbmcgdmFsdWUpOworICAgIHVuZGVmaW5l
ZCBhcHBlbmQoQnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1yZW1vdmVdIHVuZGVmaW5lZCBkZWxldGUoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICBC
eXRlU3RyaW5nPyBnZXQoQnl0ZVN0cmluZyBuYW1lKTsKKyAgICBib29sZWFuIGhhcyhCeXRlU3Ry
aW5nIG5hbWUpOworICAgIHVuZGVmaW5lZCBzZXQoQnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5n
IHZhbHVlKTsKIAogICAgIGl0ZXJhYmxlPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+OwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB0eXBlZGVmIChGZXRjaFJl
cXVlc3Qgb3IgVVNWU3RyaW5nKSBSZXF1CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gaXNIaXN0b3J5TmF2aWdhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWJvcnRTaWdu
YWwgc2lnbmFsOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRo
cm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9uZSgpOworICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdPYmplY3RdIEZldGNoUmVxdWVzdCBjbG9u
ZSgpOwogfTsKIAogRmV0Y2hSZXF1ZXN0IGluY2x1ZGVzIEZldGNoQm9keTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBkaWN0aW9uYXJ5IEZldGNoUmVzcG9u
c2VJbml0IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0
b3Iob3B0aW9uYWwgQm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNl
SW5pdCBpbml0KTsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOZXdP
YmplY3RdIHN0YXRpYyBGZXRjaFJlc3BvbnNlIGVycm9yKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBG
ZXRjaFJlc3BvbnNlIHJlZGlyZWN0KFVTVlN0cmluZyB1cmwsIG9wdGlvbmFsIHVuc2lnbmVkIHNo
b3J0IHN0YXR1cyA9IDMwMik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5nIHVybCwg
b3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBGZXRjaFJlc3BvbnNlVHlwZSB0eXBlOwogCkBAIC01Nyw3ICs1Nyw3IEBAIGRpY3Rp
b25hcnkgRmV0Y2hSZXNwb25zZUluaXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3Ry
aW5nIHN0YXR1c1RleHQ7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRj
aEhlYWRlcnMgaGVhZGVyczsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gRmV0Y2hSZXNw
b25zZSBjbG9uZSgpOwogfTsKIAogRmV0Y2hSZXNwb25zZSBpbmNsdWRlcyBGZXRjaEJvZHk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgJ3JlcXVlc3QnCiAgICAgLy8gW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBJREJSZXF1ZXN0IHJlcXVlc3Q7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBhZHZhbmNlKFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAg
IFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9Y29udGludWVGdW5jdGlvbiwg
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb250aW51ZShvcHRpb25hbCBhbnkga2V5KTsK
LSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CisgICAgdW5kZWZp
bmVkIGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW0Nh
bGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1jb250aW51ZUZ1bmN0aW9uXSB1bmRl
ZmluZWQgY29udGludWUob3B0aW9uYWwgYW55IGtleSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9i
amVjdF0gdW5kZWZpbmVkIGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtl
eSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhj
ZXB0aW9uXSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOwotICAgIFtOZXdPYmplY3QsIENh
bGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhy
b3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVsZXRlKCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOworICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlv
bl0gSURCUmVxdWVzdCBkZWxldGUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDExICszNSwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmdMaXN0IG9iamVjdFN0b3JlTmFtZXM7CiAKICAgICAvLyBGSVhNRTogJ3RyYW5zYWN0aW9uJyBz
aG91bGQgYWxzbyB0YWtlIGFuIG9wdGlvbmFsICdJREJUcmFuc2FjdGlvbk9wdGlvbnMnIGFyZ3Vt
ZW50LgotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIHN0b3JlTmFtZXMs
IG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2RlID0gInJlYWRvbmx5Iik7CisgICAgW05l
d09iamVjdF0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKERPTVN0cmluZyBvciBzZXF1ZW5j
ZTxET01TdHJpbmc+KSBzdG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9k
ZSA9ICJyZWFkb25seSIpOwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwogCi0gICAgW05ld09iamVj
dCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERP
TVN0cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVy
cyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlT2JqZWN0U3RvcmUo
RE9NU3RyaW5nIG5hbWUpOworICAgIFtOZXdPYmplY3RdIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9i
amVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBJREJPYmplY3RTdG9yZVBhcmFtZXRl
cnMgcGFyYW1ldGVycyk7CisgICAgdW5kZWZpbmVkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmlu
ZyBuYW1lKTsKIAogICAgIC8vIEV2ZW50IGhhbmRsZXJzOgogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb25hYm9ydDsKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgIC8vIE5vbi1zdGFuZGFyZDog
VGhpcyBpcyBub3QgcGFydCBvZiB0aGUgc3BlYywgYnV0IGlzIG5lZWRlZCBmb3IgY29tcGF0aWJp
bGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3czYy9JbmRleGVkREIvaXNzdWVz
Lzg1Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihE
T01TdHJpbmdMaXN0IHN0b3JlTmFtZXMsIG9wdGlvbmFsIElEQlRyYW5zYWN0aW9uTW9kZSBtb2Rl
ID0gInJlYWRvbmx5Iik7CisgICAgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5n
TGlzdCBzdG9yZU5hbWVzLCBvcHRpb25hbCBJREJUcmFuc2FjdGlvbk1vZGUgbW9kZSA9ICJyZWFk
b25seSIpOwogfTsKIAogZGljdGlvbmFyeSBJREJPYmplY3RTdG9yZVBhcmFtZXRlcnMgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgICBTa2lw
VlRhYmxlVmFsaWRhdGlvbiwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZh
Y2UgSURCRmFjdG9yeSB7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJp
bmcgbmFtZSwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNp
b24pOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1h
eVRocm93RXhjZXB0aW9uXSBJREJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKERPTVN0cmlu
ZyBuYW1lKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFi
YXNlKERPTVN0cmluZyBuYW1lKTsKICAgICAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gUHJvbWlzZTxzZXF1ZW5jZTxJREJEYXRhYmFzZUluZm8+PiBkYXRhYmFzZXMoKTsK
ICAgICAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc2hv
cnQgY21wKGFueSBmaXJzdCwgYW55IHNlY29uZCk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVj
dF0gc2hvcnQgY21wKGFueSBmaXJzdCwgYW55IHNlY29uZCk7CiB9OwogCiBbCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0MSwxOSBAQCB0eXBlZGVmIChET01TdHJpbmcgb3Ig
c2VxdWVuY2U8RE9NU3RyaW5nCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGlF
bnRyeTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICBbTmV3
T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1
ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9i
YWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtleShh
bnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25l
ZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBj
b3VudCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwg
SURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsK
KyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0KElE
QktleVJhbmdlPyBrZXkpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0g
SURCUmVxdWVzdCBnZXQoYW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2Jq
ZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOwor
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwo
b3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5n
ZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdl
XSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Ug
PSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5
cyhhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
KyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgY291bnQo
b3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7CisgICAgW05ld09iamVjdCwgQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogCi0gICAgW05l
d09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlv
bmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3Qg
b3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
ID0gIm5leHQiKTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9
ICJuZXh0Iik7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElE
QkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3QsIENh
bGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURC
UmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9
IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwor
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuS2V5
Q3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAi
bmV4dCIpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlSYW5nZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAg
KzMzLDEwIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbG93ZXJPcGVuOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVwcGVyT3BlbjsKIAotICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlS
YW5nZSBvbmx5KGFueSB2YWx1ZSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIGxvd2VyQm91bmQoYW55
IGxvd2VyLCBvcHRpb25hbCBib29sZWFuIG9wZW4gPSBmYWxzZSk7Ci0gICAgW05ld09iamVjdCwg
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIHVwcGVyQm91bmQoYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIG9wZW4gPSBmYWxzZSk7
Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gc3RhdGljIElEQktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25h
bCBib29sZWFuIGxvd2VyT3BlbiA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3BlbiA9
IGZhbHNlKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHN0YXRpYyBJ
REJLZXlSYW5nZSBvbmx5KGFueSB2YWx1ZSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBzdGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlv
bmFsIGJvb2xlYW4gb3BlbiA9IGZhbHNlKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9i
YWxPYmplY3RdIHN0YXRpYyBJREJLZXlSYW5nZSB1cHBlckJvdW5kKGFueSB1cHBlciwgb3B0aW9u
YWwgYm9vbGVhbiBvcGVuID0gZmFsc2UpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gc3RhdGljIElEQktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBv
cHRpb25hbCBib29sZWFuIGxvd2VyT3BlbiA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHVwcGVy
T3BlbiA9IGZhbHNlKTsKIAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhj
ZXB0aW9uXSBib29sZWFuIGluY2x1ZGVzKGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIGJvb2xlYW4gaW5jbHVkZXMoYW55IGtleSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzMSArNDEsMzEgQEAgdHlwZWRlZiAoRE9N
U3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBh
dHRyaWJ1dGUgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb247CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gYXV0b0luY3JlbWVudDsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgcHV0KGFueSB2YWx1ZSwg
b3B0aW9uYWwgYW55IGtleSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBhZGQoYW55IHZhbHVlLCBvcHRpb25hbCBh
bnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb24sIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0
ZShJREJLZXlSYW5nZT8ga2V5UmFuZ2UpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgTWF5VGhyb3dFeGNlcHRpb25d
IElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY2xlYXIoKTsKLSAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1H
bG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsK
LSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEtl
eShhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFu
Z2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsK
LSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9u
XSBJREJSZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNp
Z25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3Qs
IE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9u
ZyBjb3VudCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZv
cmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQob3B0aW9u
YWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5
KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgcHV0
KGFueSB2YWx1ZSwgb3B0aW9uYWwgYW55IGtleSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkp
OworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1k
ZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsK
KyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVs
ZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOworICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtl
eSk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdl
dChhbnkga2V5KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJl
cXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoYW55IGtleSk7CisgICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChvcHRpb25hbCBJREJL
ZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBs
b25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJl
cXVlc3QgZ2V0QWxsKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxv
bmcgY291bnQpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVx
dWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlv
bmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9w
dGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJL
ZXlSYW5nZT8gcmFuZ2UgPSBudWxsKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIElEQlJlcXVlc3QgY291bnQoYW55IGtleSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJz
b3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFu
eSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwot
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25d
IElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBu
dWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdl
ID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7
CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJu
ZXh0Iik7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0
IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9u
YWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtl
eSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBuYW1lKTsKKyAg
ICBJREJJbmRleCBpbmRleChET01TdHJpbmcgbmFtZSk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBJREJJbmRleCBjcmVhdGVJbmRl
eChET01TdHJpbmcgbmFtZSwgKERPTVN0cmluZyBvciBzZXF1ZW5jZTxET01TdHJpbmc+KSBrZXlQ
YXRoLCBvcHRpb25hbCBJREJJbmRleFBhcmFtZXRlcnMgb3B0aW9ucyk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUpOworICAgIFtO
ZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9N
U3RyaW5nIG5hbWUsIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwg
b3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAgIHVuZGVmaW5lZCBkZWxl
dGVJbmRleChET01TdHJpbmcgbmFtZSk7CiB9OwogCiBkaWN0aW9uYXJ5IElEQkluZGV4UGFyYW1l
dGVycyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDEwICszOCwxMCBAQAogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgSURCRGF0
YWJhc2UgZGI7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUV4Y2VwdGlvbj8gZXJyb3I7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9iamVjdFN0b3JlKERPTVN0
cmluZyBuYW1lKTsKKyAgICBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZShET01TdHJpbmcgbmFt
ZSk7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCAnY29tbWl0Jy4KICAgICAvLyB1bmRlZmluZWQg
Y29tbWl0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWJvcnQoKTsKKyAg
ICB1bmRlZmluZWQgYWJvcnQoKTsKIAogICAgIC8vIEV2ZW50IGhhbmRsZXJzOgogICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDExIEBAIGVudW0gUmVjb3JkaW5n
U3RhdGUgeyAiaW5hY3RpdmUiLCAicmVjb3IKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIEJp
dHJhdGVNb2RlIGF1ZGlvQml0cmF0ZU1vZGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIElt
cGxlbWVudGVkQXM9c3RhcnRSZWNvcmRpbmddIHVuZGVmaW5lZCBzdGFydChvcHRpb25hbCB1bnNp
Z25lZCBsb25nIHRpbWVzbGljZSk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRSZWNvcmRpbmdd
IHVuZGVmaW5lZCBzdGFydChvcHRpb25hbCB1bnNpZ25lZCBsb25nIHRpbWVzbGljZSk7CiAgICAg
W0ltcGxlbWVudGVkQXM9c3RvcFJlY29yZGluZ10gdW5kZWZpbmVkIHN0b3AoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9cGF1c2VSZWNvcmRpbmddIHVuZGVmaW5lZCBw
YXVzZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1yZXN1bWVSZWNv
cmRpbmddIHVuZGVmaW5lZCByZXN1bWUoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCByZXF1ZXN0RGF0YSgpOworICAgIFtJbXBsZW1lbnRlZEFzPXBhdXNlUmVjb3JkaW5nXSB1
bmRlZmluZWQgcGF1c2UoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZWNvcmRpbmddIHVu
ZGVmaW5lZCByZXN1bWUoKTsKKyAgICB1bmRlZmluZWQgcmVxdWVzdERhdGEoKTsKIAogICAgIFtD
YWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkKERPTVN0cmlu
ZyB0eXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDkgKzI4LDkgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFNZXRhZGF0YSB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1
Y3RvcihvcHRpb25hbCBNZWRpYU1ldGFkYXRhSW5pdCBpbml0KTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgTWVkaWFNZXRhZGF0YUlu
aXQgaW5pdCk7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0aXRsZTsKICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFydGlzdDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsYnVtOwotICAgIFtT
ZXR0ZXJDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
YXR0cmlidXRlIEZyb3plbkFycmF5PE1lZGlhSW1hZ2U+IGFydHdvcms7CisgICAgW1NldHRlckNh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxNZWRp
YUltYWdlPiBhcnR3b3JrOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNSArMzUsNSBAQAogCiAgICAgdW5kZWZpbmVkIHNldEFjdGlvbkhh
bmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgTWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxl
cj8gaGFuZGxlcik7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3Np
dGlvblN0YXRlKG9wdGlvbmFsIE1lZGlhUG9zaXRpb25TdGF0ZT8gc3RhdGUgPSBudWxsKTsKKyAg
ICB1bmRlZmluZWQgc2V0UG9zaXRpb25TdGF0ZShvcHRpb25hbCBNZWRpYVBvc2l0aW9uU3RhdGU/
IHN0YXRlID0gbnVsbCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC01NSwxNyArNTUsMTcgQEAgZW51bSBSZWFkeVN0YXRlIHsKIAogICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGR1cmF0aW9uOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhy
b3dFeGNlcHRpb25dIFNvdXJjZUJ1ZmZlciBhZGRTb3VyY2VCdWZmZXIoRE9NU3RyaW5nIHR5cGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVNvdXJjZUJ1ZmZlcihT
b3VyY2VCdWZmZXIgYnVmZmVyKTsKKyAgICBbTmV3T2JqZWN0XSBTb3VyY2VCdWZmZXIgYWRkU291
cmNlQnVmZmVyKERPTVN0cmluZyB0eXBlKTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlU291cmNlQnVm
ZmVyKFNvdXJjZUJ1ZmZlciBidWZmZXIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlYWR5
U3RhdGUgcmVhZHlTdGF0ZTsKICAgICAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBlbmRPZlN0cmVhbShvcHRpb25hbCBFbmRPZlN0cmVhbUVycm9yIGVycm9yKTsKKyAgICB1bmRl
ZmluZWQgZW5kT2ZTdHJlYW0ob3B0aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CiAKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gc3RhdGljIGJvb2xlYW4gaXNUeXBl
U3VwcG9ydGVkIChET01TdHJpbmcgdHlwZSk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyTGl2ZVNlZWthYmxlUmFuZ2Uo
KTsKKyAgICB1bmRlZmluZWQgc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kKTsKKyAgICB1bmRlZmluZWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCiAgICAg
YXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZW9wZW47CiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbnNvdXJjZWVuZGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSwxMSArNTksMTEgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSBhcHBlbmRXaW5kb3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFwcGVuZEJ1ZmZlcihCdWZmZXJTb3Vy
Y2UgZGF0YSk7CisgICAgdW5kZWZpbmVkIGFwcGVuZEJ1ZmZlcihCdWZmZXJTb3VyY2UgZGF0YSk7
CiAKICAgICAvLyBBYm9ydCB0aGUgY3VycmVudCBzZWdtZW50IGFwcGVuZCBzZXF1ZW5jZS4KLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZShkb3VibGUgc3RhcnQsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgZW5kKTsKKyAgICB1bmRlZmluZWQgYWJvcnQoKTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlKGRv
dWJsZSBzdGFydCwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQpOwogCiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbnVwZGF0ZXN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251
cGRhdGU7CkBAIC03MSw1ICs3MSw1IEBACiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVy
cm9yOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hYm9ydDsKIAotICAgIFtFbmFibGVk
QnlTZXR0aW5nPVNvdXJjZUJ1ZmZlckNoYW5nZVR5cGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgY2hhbmdlVHlwZShET01TdHJpbmcgdHlwZSk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9
U291cmNlQnVmZmVyQ2hhbmdlVHlwZV0gdW5kZWZpbmVkIGNoYW5nZVR5cGUoRE9NU3RyaW5nIHR5
cGUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9UGVlckNvbm5lY3Rpb24sCiAg
ICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFJUQ0RUTUZTZW5kZXIgOiBFdmVudFRhcmdl
dCB7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0RFRNRihET01TdHJp
bmcgdG9uZXMsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgZHVyYXRpb24gPSAxMDAsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgaW50ZXJUb25lR2FwID0gNzApOworICAgIHVuZGVmaW5lZCBpbnNlcnRE
VE1GKERPTVN0cmluZyB0b25lcywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBkdXJhdGlvbiA9IDEw
MCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbnRlclRvbmVHYXAgPSA3MCk7CiAgICAgYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbnRvbmVjaGFuZ2U7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBjYW5JbnNlcnREVE1GOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAKIAogICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgYmluYXJ5VHlwZTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNl
bmQoQXJyYXlCdWZmZXIgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
c2VuZChBcnJheUJ1ZmZlclZpZXcgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgc2VuZChCbG9iIGRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHNlbmQoVVNWU3RyaW5nIGRhdGEpOworICAgIHVuZGVmaW5lZCBzZW5kKEFycmF5QnVmZmVyIGRh
dGEpOworICAgIHVuZGVmaW5lZCBzZW5kKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICB1bmRl
ZmluZWQgc2VuZChCbG9iIGRhdGEpOworICAgIHVuZGVmaW5lZCBzZW5kKFVTVlN0cmluZyBkYXRh
KTsKIAogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB0eXBl
ZGVmIChvYmplY3Qgb3IgRE9NU3RyaW5nKSBBbGdvcml0aG1JCiAKICAgICB1bmRlZmluZWQgcmVz
dGFydEljZSgpOwogICAgIFJUQ0NvbmZpZ3VyYXRpb24gZ2V0Q29uZmlndXJhdGlvbigpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKTsKKyAgICB1bmRlZmluZWQgc2V0Q29uZmlndXJhdGlvbihS
VENDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogICAgIHVuZGVmaW5lZCBjbG9zZSgpOwog
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm5lZ290aWF0aW9ubmVlZGVkOwpAQCAtMTI0
LDE3ICsxMjQsMTcgQEAgdHlwZWRlZiAob2JqZWN0IG9yIERPTVN0cmluZykgQWxnb3JpdGhtSQog
ICAgIHNlcXVlbmNlPFJUQ1J0cFJlY2VpdmVyPiBnZXRSZWNlaXZlcnMoKTsKICAgICBzZXF1ZW5j
ZTxSVENSdHBUcmFuc2NlaXZlcj4gZ2V0VHJhbnNjZWl2ZXJzKCk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIFJUQ1J0cFNlbmRlciBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCBN
ZWRpYVN0cmVhbS4uLiBzdHJlYW1zKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2VuZGVyKTsKKyAgICBSVENSdHBTZW5kZXIgYWRk
VHJhY2soTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgTWVkaWFTdHJlYW0uLi4gc3RyZWFtcyk7Cisg
ICAgdW5kZWZpbmVkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciBzZW5kZXIpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBSVENSdHBUcmFuc2NlaXZlciBhZGRUcmFuc2NlaXZlcigoTWVkaWFT
dHJlYW1UcmFjayBvciBET01TdHJpbmcpIHRyYWNrLCBvcHRpb25hbCBSVENSdHBUcmFuc2NlaXZl
ckluaXQgaW5pdCk7CisgICAgUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoKE1lZGlh
U3RyZWFtVHJhY2sgb3IgRE9NU3RyaW5nKSB0cmFjaywgb3B0aW9uYWwgUlRDUnRwVHJhbnNjZWl2
ZXJJbml0IGluaXQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYWNrOwogCiAg
ICAgLy8gNi4xIFBlZXItdG8tcGVlciBkYXRhIEFQSQogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlz
c2luZyBzY3RwCiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0
ZURhdGFDaGFubmVsKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBv
cHRpb25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CisgICAgUlRDRGF0YUNoYW5uZWwg
Y3JlYXRlRGF0YUNoYW5uZWwoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFi
ZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBvcHRpb25zKTsKICAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9uZGF0YWNoYW5uZWw7CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJh
bnNmb3JtLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw1ICszMSw1IEBAIHR5cGVkZWYgKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBvciBSVENSdHAK
ICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbXBsZW1lbnRlZEJ5PVJUQ1J0cFJlY2VpdmVyV2l0
aFRyYW5zZm9ybSwKIF0gcGFydGlhbCBpbnRlcmZhY2UgUlRDUnRwUmVjZWl2ZXIgewotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIFJUQ1J0cFRyYW5zZm9ybT8gdHJhbnNmb3JtOwor
ICAgIGF0dHJpYnV0ZSBSVENSdHBUcmFuc2Zvcm0/IHRyYW5zZm9ybTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDYgKzU1LDYgQEAgZGljdGlvbmFyeSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1PcHRp
b25zIAogICAgIC8vIFByb21pc2U8dW5kZWZpbmVkPiByYXRjaGV0RW5jcnlwdGlvbktleSgpOwog
ICAgIC8vIFByb21pc2U8dW5kZWZpbmVkPiBzZXRTaWduaW5nS2V5KENyeXB0b0tleSBrZXkpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJl
YW0gcmVhZGFibGU7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUg
V3JpdGFibGVTdHJlYW0gd3JpdGFibGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJlYWRhYmxl
U3RyZWFtIHJlYWRhYmxlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXcml0YWJsZVN0cmVhbSB3
cml0YWJsZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDUgKzM1LDUgQEAKICAgICBb
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBhbnkgb3B0aW9uczsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcXVlc3RLZXlGcmFtZSgpOwor
ICAgIHVuZGVmaW5lZCByZXF1ZXN0S2V5RnJhbWUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDUgKzMxLDUgQEAgdHlwZWRlZiAoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIG9yIFJUQ1J0cAog
ICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEltcGxlbWVudGVkQnk9UlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybSwKIF0gcGFydGlhbCBpbnRlcmZhY2UgUlRDUnRwU2VuZGVyIHsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBSVENSdHBUcmFuc2Zvcm0/IHRyYW5zZm9ybTsKKyAgICBh
dHRyaWJ1dGUgUlRDUnRwVHJhbnNmb3JtPyB0cmFuc2Zvcm07CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgUlRDUnRw
U2VuZFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBz
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOwogICAgIFByb21p
c2U8dW5kZWZpbmVkPiByZXBsYWNlVHJhY2soTWVkaWFTdHJlYW1UcmFjaz8gd2l0aFRyYWNrKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdHJlYW1zKE1lZGlhU3RyZWFt
Li4uIHN0cmVhbXMpOworICAgIHVuZGVmaW5lZCBzZXRTdHJlYW1zKE1lZGlhU3RyZWFtLi4uIHN0
cmVhbXMpOwogICAgIFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IGdldFN0YXRzKCk7CiAKICAgICBb
Q29uZGl0aW9uYWw9V0VCX1JUQywgRW5hYmxlZEF0UnVudGltZT1XZWJSVENEVE1GXSByZWFkb25s
eSBhdHRyaWJ1dGUgUlRDRFRNRlNlbmRlcj8gZHRtZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zY2VpdmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNiBAQCB0eXBl
ZGVmIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJ0cFRyCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gc3RvcHBlZDsKICAgICBhdHRyaWJ1dGUgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b24gZGlyZWN0aW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbj8gY3VycmVudERpcmVjdGlvbjsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzdG9wKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Q29kZWNQ
cmVmZXJlbmNlcyhzZXF1ZW5jZTxSVENSdHBDb2RlY0NhcGFiaWxpdHk+IGNvZGVjcyk7CisgICAg
dW5kZWZpbmVkIHN0b3AoKTsKKyAgICB1bmRlZmluZWQgc2V0Q29kZWNQcmVmZXJlbmNlcyhzZXF1
ZW5jZTxSVENSdHBDb2RlY0NhcGFiaWxpdHk+IGNvZGVjcyk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJj
aGFudFZhbGlkYXRpb25FdmVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIG1ldGhvZE5hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyB2
YWxpZGF0aW9uVVJMOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNvbXBsZXRl
KFByb21pc2U8YW55PiBtZXJjaGFudFNlc3Npb25Qcm9taXNlKTsKKyAgICB1bmRlZmluZWQgY29t
cGxldGUoUHJvbWlzZTxhbnk+IG1lcmNoYW50U2Vzc2lvblByb21pc2UpOwogfTsKIAogWwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVw
ZGF0ZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0
VXBkYXRlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1ICszMSw1IEBACiBdIGludGVy
ZmFjZSBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IDogRXZlbnQgewogICAgIGNvbnN0cnVjdG9y
KERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdCBl
dmVudEluaXREaWN0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHVwZGF0
ZVdpdGgoUHJvbWlzZTxQYXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOworICAg
IHVuZGVmaW5lZCB1cGRhdGVXaXRoKFByb21pc2U8UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFp
bHNQcm9taXNlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBpbnRlcmltUmVzdWx0
czsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBtYXhBbHRlcm5hdGl2ZXM7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c3RhcnRSZWNvZ25pdGlvbl0gdW5kZWZp
bmVkIHN0YXJ0KCk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRSZWNvZ25pdGlvbl0gdW5kZWZp
bmVkIHN0YXJ0KCk7CiAgICAgW0ltcGxlbWVudGVkQXM9c3RvcFJlY29nbml0aW9uXSB1bmRlZmlu
ZWQgc3RvcCgpOwogICAgIFtJbXBsZW1lbnRlZEFzPWFib3J0UmVjb2duaXRpb25dIHVuZGVmaW5l
ZCBhYm9ydCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5u
ZWxzOwogCiAgICAgLy8gQ2hhbm5lbCBhY2Nlc3MKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENh
bGxXaXRoPUdsb2JhbE9iamVjdF0gYW55IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hh
bm5lbEluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEVuYWJsZWRCeVNldHRpbmc9TW9k
ZXJuVW5wcmVmaXhlZFdlYkF1ZGlvXSB1bmRlZmluZWQgY29weUZyb21DaGFubmVsKEZsb2F0MzJB
cnJheSBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbG9uZyBjaGFubmVsTnVtYmVyLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGJ1ZmZlck9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
RW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9dIHVuZGVmaW5lZCBjb3B5
VG9DaGFubmVsKEZsb2F0MzJBcnJheSBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgY2hhbm5lbE51bWJl
ciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAwKTsKKyAgICBbQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSBhbnkgZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQgbG9uZyBjaGFubmVs
SW5kZXgpOworICAgIFtFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpb10g
dW5kZWZpbmVkIGNvcHlGcm9tQ2hhbm5lbChGbG9hdDMyQXJyYXkgZGVzdGluYXRpb24sIHVuc2ln
bmVkIGxvbmcgY2hhbm5lbE51bWJlciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZz
ZXQgPSAwKTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9d
IHVuZGVmaW5lZCBjb3B5VG9DaGFubmVsKEZsb2F0MzJBcnJheSBzb3VyY2UsIHVuc2lnbmVkIGxv
bmcgY2hhbm5lbE51bWJlciwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJPZmZzZXQgPSAw
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BT
dGFydDsKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIEltcGxlbWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9wdGlvbmFs
IGRvdWJsZSB3aGVuID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWluT2Zmc2V0ID0gMCwgb3B0aW9u
YWwgZG91YmxlIGdyYWluRHVyYXRpb24pOworICAgIFtJbXBsZW1lbnRlZEFzPXN0YXJ0TGF0ZXJd
IHVuZGVmaW5lZCBzdGFydChvcHRpb25hbCBkb3VibGUgd2hlbiA9IDAsIG9wdGlvbmFsIGRvdWJs
ZSBncmFpbk9mZnNldCA9IDAsIG9wdGlvbmFsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKIAogICAg
IC8vIEZJWE1FOiBUaG9zZSBjb25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkgd2l0aCB0aGUgcHJlZml4ZWQgQVBJIGFuZCBzaG91bGQKICAgICAvLyBiZSByZW1vdmVk
IG9uY2Ugd2Ugc3RvcCBzdXBwb3J0aW5nIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw5ICs0NCw5IEBACiAgICAgW0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVy
aW5nXSBQcm9taXNlPHVuZGVmaW5lZD4gcmVzdW1lKCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+
IGNsb3NlKCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxN
ZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVk
aWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOwotICAgIFtDb25kaXRpb25h
bD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyAgICBbQ29uZGl0aW9u
YWw9VklERU9dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1N
RURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFt
U291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFt
RGVzdGluYXRpb24oKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydC4KICAgICAvLyBNZWRp
YVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2Uo
TWVkaWFTdHJlYW1UcmFjayBtZWRpYVN0cmVhbVRyYWNrKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBBdWRpb1BhcmFtIHVwWTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSB1cFo7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb3NpdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBz
ZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB4VXAsIGZsb2F0
IHlVcCwgZmxvYXQgelVwKTsKKyAgICB1bmRlZmluZWQgc2V0UG9zaXRpb24oZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeik7CisgICAgdW5kZWZpbmVkIHNldE9yaWVudGF0aW9uKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHosIGZsb2F0IHhVcCwgZmxvYXQgeVVwLCBmbG9hdCB6VXApOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDE0IEBACiAgICAgYXR0cmlidXRl
IENoYW5uZWxDb3VudE1vZGUgY2hhbm5lbENvdW50TW9kZTsKICAgICBhdHRyaWJ1dGUgQ2hhbm5l
bEludGVycHJldGF0aW9uIGNoYW5uZWxJbnRlcnByZXRhdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gQXVkaW9Ob2RlIGNvbm5lY3QoW1JldHVyblZhbHVlXSBBdWRpb05vZGUgZGVzdGlu
YXRpb24sIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCwgb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBpbnB1dCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNv
bm5lY3QoQXVkaW9QYXJhbSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRw
dXQgPSAwKTsKKyAgICBBdWRpb05vZGUgY29ubmVjdChbUmV0dXJuVmFsdWVdIEF1ZGlvTm9kZSBk
ZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGlucHV0ID0gMCk7CisgICAgdW5kZWZpbmVkIGNvbm5lY3QoQXVkaW9QYXJh
bSBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwKTsKIAogICAg
IHVuZGVmaW5lZCBkaXNjb25uZWN0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgZGlzY29ubmVjdCh1bnNpZ25lZCBsb25nIG91dHB1dCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgZGlzY29ubmVjdChBdWRpb05vZGUgZGVzdGluYXRpb25Ob2RlKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0
aW5hdGlvbk5vZGUsIHVuc2lnbmVkIGxvbmcgb3V0cHV0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVuc2ln
bmVkIGxvbmcgb3V0cHV0LCB1bnNpZ25lZCBsb25nIGlucHV0KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvUGFyYW0gZGVzdGluYXRpb25QYXJhbSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZGlzY29ubmVjdChBdWRpb1BhcmFt
IGRlc3RpbmF0aW9uUGFyYW0sIHVuc2lnbmVkIGxvbmcgb3V0cHV0KTsKKyAgICB1bmRlZmluZWQg
ZGlzY29ubmVjdCh1bnNpZ25lZCBsb25nIG91dHB1dCk7CisgICAgdW5kZWZpbmVkIGRpc2Nvbm5l
Y3QoQXVkaW9Ob2RlIGRlc3RpbmF0aW9uTm9kZSk7CisgICAgdW5kZWZpbmVkIGRpc2Nvbm5lY3Qo
QXVkaW9Ob2RlIGRlc3RpbmF0aW9uTm9kZSwgdW5zaWduZWQgbG9uZyBvdXRwdXQpOworICAgIHVu
ZGVmaW5lZCBkaXNjb25uZWN0KEF1ZGlvTm9kZSBkZXN0aW5hdGlvbk5vZGUsIHVuc2lnbmVkIGxv
bmcgb3V0cHV0LCB1bnNpZ25lZCBsb25nIGlucHV0KTsKKyAgICB1bmRlZmluZWQgZGlzY29ubmVj
dChBdWRpb1BhcmFtIGRlc3RpbmF0aW9uUGFyYW0pOworICAgIHVuZGVmaW5lZCBkaXNjb25uZWN0
KEF1ZGlvUGFyYW0gZGVzdGluYXRpb25QYXJhbSwgdW5zaWduZWQgbG9uZyBvdXRwdXQpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlk
bAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGZsb2F0IG1heFZhbHVlOwogCiAgICAgLy8gUGFyYW1ldGVyIGF1dG9t
YXRpb24uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFZhbHVlQXRUaW1l
KGZsb2F0IHZhbHVlLCBkb3VibGUgc3RhcnRUaW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IEF1ZGlvUGFyYW0gbGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBl
bmRUaW1lKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvUGFyYW0gZXhwb25lbnRpYWxS
YW1wVG9WYWx1ZUF0VGltZShmbG9hdCB2YWx1ZSwgZG91YmxlIGVuZFRpbWUpOworICAgIEF1ZGlv
UGFyYW0gc2V0VmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBzdGFydFRpbWUpOworICAg
IEF1ZGlvUGFyYW0gbGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQgdmFsdWUsIGRvdWJsZSBl
bmRUaW1lKTsKKyAgICBBdWRpb1BhcmFtIGV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoZmxv
YXQgdmFsdWUsIGRvdWJsZSBlbmRUaW1lKTsKIAogICAgIC8vIEV4cG9uZW50aWFsbHkgYXBwcm9h
Y2ggdGhlIHRhcmdldCB3aXRoIGEgcmF0ZSBoYXZpbmcgdGhlIGdpdmVuIHRpbWUgY29uc3RhbnQu
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIHNldFRhcmdldEF0VGltZShmbG9h
dCB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCk7CisgICAgQXVk
aW9QYXJhbSBzZXRUYXJnZXRBdFRpbWUoZmxvYXQgdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lLCBm
bG9hdCB0aW1lQ29uc3RhbnQpOwogCiAgICAgLy8gU2V0cyBhbiBhcnJheSBvZiBhcmJpdHJhcnkg
cGFyYW1ldGVyIHZhbHVlcyBzdGFydGluZyBhdCB0aW1lIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb24u
CiAgICAgLy8gVGhlIG51bWJlciBvZiB2YWx1ZXMgd2lsbCBiZSBzY2FsZWQgdG8gZml0IGludG8g
dGhlIGRlc2lyZWQgZHVyYXRpb24uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFt
IHNldFZhbHVlQ3VydmVBdFRpbWUoc2VxdWVuY2U8ZmxvYXQ+IHZhbHVlcywgZG91YmxlIHN0YXJ0
VGltZSwgZG91YmxlIGR1cmF0aW9uKTsKKyAgICBBdWRpb1BhcmFtIHNldFZhbHVlQ3VydmVBdFRp
bWUoc2VxdWVuY2U8ZmxvYXQ+IHZhbHVlcywgZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGR1cmF0
aW9uKTsKIAogICAgIC8vIENhbmNlbHMgYWxsIHNjaGVkdWxlZCBwYXJhbWV0ZXIgY2hhbmdlcyB3
aXRoIHRpbWVzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydFRpbWUuCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIGNhbmNlbFNjaGVkdWxlZFZhbHVlcyhkb3VibGUgY2Fu
Y2VsVGltZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb1BhcmFtIGNhbmNlbEFuZEhv
bGRBdFRpbWUoZG91YmxlIGNhbmNlbFRpbWUpOworICAgIEF1ZGlvUGFyYW0gY2FuY2VsU2NoZWR1
bGVkVmFsdWVzKGRvdWJsZSBjYW5jZWxUaW1lKTsKKyAgICBBdWRpb1BhcmFtIGNhbmNlbEFuZEhv
bGRBdFRpbWUoZG91YmxlIGNhbmNlbFRpbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNiBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUgOiBBdWRpb05vZGUgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lbmRl
ZDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9c3RhcnRMYXRlcl0gdW5k
ZWZpbmVkIHN0YXJ0KG9wdGlvbmFsIGRvdWJsZSB3aGVuID0gMCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXN0b3BMYXRlcl0gdW5kZWZpbmVkIHN0b3Aob3B0aW9uYWwg
ZG91YmxlIHdoZW4gPSAwKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVyXSB1bmRlZmlu
ZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1z
dG9wTGF0ZXJdIHVuZGVmaW5lZCBzdG9wKG9wdGlvbmFsIGRvdWJsZSB3aGVuID0gMCk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90
aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9KFdvcmtsZXQsQXVkaW9Xb3JrbGV0KSwK
IF0gaW50ZXJmYWNlIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xldEdsb2JhbFNjb3Bl
IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWdpc3RlclByb2Nlc3NvcihE
T01TdHJpbmcgbmFtZSwgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IgcHJvY2Vzc29y
Q3Rvcik7CisgICAgdW5kZWZpbmVkIHJlZ2lzdGVyUHJvY2Vzc29yKERPTVN0cmluZyBuYW1lLCBB
dWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3RvciBwcm9jZXNzb3JDdG9yKTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRGcmFtZTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBmbG9hdCBzYW1wbGVSYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9j
ZXNzb3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw2IEBACiAgICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgogXSBpbnRlcmZhY2Ug
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKCk7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIE1lc3NhZ2VQb3J0IHBvcnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsCShyZXZpc2lvbiAyNzQ3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00OCwzMSArNDgsMzEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bnN0YXRlY2hhbmdlOwogICAgIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIg
Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIgY3Jl
YXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgogICAgIFByb21pc2U8QXVkaW9CdWZmZXI+IGRlY29k
ZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciBhdWRpb0RhdGEsIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s/IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gZXJy
b3JDYWxsYmFjayk7CiAKICAgICAvLyBTb3VyY2VzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwogCiAgICAgLy8gUHJvY2Vzc2luZyBu
b2RlcwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIGRvdWJs
ZSBtYXhEZWxheVRpbWUgPSAxKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRl
ck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZl
U2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hhcGVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQ
YW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ29udm9s
dmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZk91dHB1dENoYW5uZWxzID0gMik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBPc2NpbGxh
dG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJp
b2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKHNlcXVlbmNlPGZsb2F0PiByZWFsLCBzZXF1ZW5j
ZTxmbG9hdD4gaW1hZywgb3B0aW9uYWwgUGVyaW9kaWNXYXZlT3B0aW9ucyBvcHRpb25zKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbnN0YW50U291cmNlTm9kZSBjcmVhdGVDb25zdGFudFNv
dXJjZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU3RlcmVvUGFubmVyTm9kZSBjcmVhdGVT
dGVyZW9QYW5uZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIElJUkZpbHRlck5vZGUgY3JlYXRlSUlSRmlsdGVyKHNlcXVlbmNlPGRv
dWJsZT4gZmVlZGZvcndhcmQsIHNlcXVlbmNlPGRvdWJsZT4gZmVlZGJhY2spOworICAgIEdhaW5O
b2RlIGNyZWF0ZUdhaW4oKTsKKyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgZG91
YmxlIG1heERlbGF5VGltZSA9IDEpOworICAgIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFk
RmlsdGVyKCk7CisgICAgV2F2ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFBh
bm5lck5vZGUgY3JlYXRlUGFubmVyKCk7CisgICAgQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2
ZXIoKTsKKyAgICBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nv
cigpOworICAgIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFNjcmlwdFByb2Nl
c3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
ID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7
CisgICAgT3NjaWxsYXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFBlcmlvZGljV2F2
ZSBjcmVhdGVQZXJpb2RpY1dhdmUoc2VxdWVuY2U8ZmxvYXQ+IHJlYWwsIHNlcXVlbmNlPGZsb2F0
PiBpbWFnLCBvcHRpb25hbCBQZXJpb2RpY1dhdmVPcHRpb25zIG9wdGlvbnMpOworICAgIENvbnN0
YW50U291cmNlTm9kZSBjcmVhdGVDb25zdGFudFNvdXJjZSgpOworICAgIFN0ZXJlb1Bhbm5lck5v
ZGUgY3JlYXRlU3RlcmVvUGFubmVyKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElJUkZpbHRlck5vZGUgY3JlYXRlSUlSRmlsdGVyKHNlcXVlbmNlPGRvdWJsZT4gZmVl
ZGZvcndhcmQsIHNlcXVlbmNlPGRvdWJsZT4gZmVlZGJhY2spOwogCiAgICAgLy8gQ2hhbm5lbCBz
cGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxp
dHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZPdXRwdXRzID0gNik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2Vy
Tm9kZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJ
bnB1dHMgPSA2KTsKKyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRl
cihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIENoYW5u
ZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZklucHV0cyA9IDYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNSArMzcsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb1BhcmFtIFE7IC8vIFF1YWxpdHkgZmFjdG9yCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvUGFyYW0gZ2FpbjsgLy8gaW4gRGVjaWJlbHMKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIGdldEZyZXF1ZW5jeVJlc3BvbnNlKEZsb2F0MzJBcnJheSBmcmVxdWVuY3lIeiwg
RmxvYXQzMkFycmF5IG1hZ1Jlc3BvbnNlLCBGbG9hdDMyQXJyYXkgcGhhc2VSZXNwb25zZSk7Cisg
ICAgdW5kZWZpbmVkIGdldEZyZXF1ZW5jeVJlc3BvbnNlKEZsb2F0MzJBcnJheSBmcmVxdWVuY3lI
eiwgRmxvYXQzMkFycmF5IG1hZ1Jlc3BvbnNlLCBGbG9hdDMyQXJyYXkgcGhhc2VSZXNwb25zZSk7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9JSVJGaWx0ZXJOb2Rl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0lJUkZp
bHRlck5vZGUuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0lJUkZpbHRlck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw1ICsyOSw1
IEBACiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIElJUkZpbHRlck5vZGUgOiBBdWRp
b05vZGUgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3Rv
cihCYXNlQXVkaW9Db250ZXh0IGF1ZGlvQ29udGV4dCwgSUlSRmlsdGVyT3B0aW9ucyBvcHRpb25z
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBnZXRGcmVxdWVuY3lSZXNwb25z
ZShGbG9hdDMyQXJyYXkgZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwgRmxv
YXQzMkFycmF5IHBoYXNlUmVzcG9uc2UpOworICAgIHVuZGVmaW5lZCBnZXRGcmVxdWVuY3lSZXNw
b25zZShGbG9hdDMyQXJyYXkgZnJlcXVlbmN5SHosIEZsb2F0MzJBcnJheSBtYWdSZXNwb25zZSwg
RmxvYXQzMkFycmF5IHBoYXNlUmVzcG9uc2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzQsOCArMzQsOCBAQAogICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBh
bm5pbmdNb2RlbDsKIAogICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0
ZW0gCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UG9zaXRpb24oZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
c2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CisgICAgdW5kZWZpbmVk
IHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworICAgIHVuZGVmaW5lZCBz
ZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKICAgICAKICAgICAvLyBE
ZWZhdWx0IGRpc3RhbmNlIG1vZGVsIGlzIGludmVyc2UKICAgICBhdHRyaWJ1dGUgRGlzdGFuY2VN
b2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNSAr
NDcsNSBAQAogICAgIGF0dHJpYnV0ZSBkb3VibGUgbG9vcFN0YXJ0OwogICAgIGF0dHJpYnV0ZSBk
b3VibGUgbG9vcEVuZDsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1z
dGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRp
b25hbCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlv
bik7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZpbmVkIHN0YXJ0KG9wdGlv
bmFsIGRvdWJsZSB3aGVuID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWluT2Zmc2V0ID0gMCwgb3B0
aW9uYWwgZG91YmxlIGdyYWluRHVyYXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTUsMzYgKzU1LDM2IEBACiAgICAgLy8g
TnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlp
bmcuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291
bnQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1
bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFt
ZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b24sIEltcGxlbWVudGVkQXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisgICAgQXVkaW9C
dWZmZXIgY3JlYXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWdu
ZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZUxlZ2FjeUJ1ZmZlcl0gQXVkaW9CdWZmZXIgY3JlYXRl
QnVmZmVyKEFycmF5QnVmZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwogCiAgICAgLy8g
QXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KICAgICB1bmRlZmluZWQgZGVj
b2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8g
c3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxi
YWNrKTsKIAogICAgIC8vIFNvdXJjZXMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlXSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0
QnVmZmVyU291cmNlXSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291
cmNlKCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRp
YUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxl
bWVudCBtZWRpYUVsZW1lbnQpOwogCi0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5
VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3Ry
ZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisgICAgW0NvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTV0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1T
b3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9T
VFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVkaWFTdHJlYW1E
ZXN0aW5hdGlvbigpOwogCiAgICAgLy8gUHJvY2Vzc2luZyBub2RlcwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVs
YXlUaW1lID0gMSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0ZXJOb2RlIGNy
ZWF0ZUJpcXVhZEZpbHRlcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2ZVNoYXBlck5v
ZGUgY3JlYXRlV2F2ZVNoYXBlcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50
ZWRBcz1jcmVhdGVXZWJLaXRQYW5uZXJdIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQYW5u
ZXIoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbnZvbHZlck5vZGUgY3JlYXRlQ29udm9s
dmVyKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktp
dER5bmFtaWNzQ29tcHJlc3Nvcl0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVE
eW5hbWljc0NvbXByZXNzb3IoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEFuYWx5c2VyTm9k
ZSBjcmVhdGVBbmFseXNlcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU2NyaXB0UHJvY2Vz
c29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZm
ZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMg
PSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0T3NjaWxs
YXRvcl0gV2ViS2l0T3NjaWxsYXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gUGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJy
YXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOworICAgIEdhaW5Ob2RlIGNyZWF0ZUdhaW4oKTsK
KyAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBt
YXhEZWxheVRpbWUgPSAxKTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRl
cigpOworICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1jcmVhdGVXZWJLaXRQYW5uZXJdIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQ
YW5uZXIoKTsKKyAgICBDb252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtJbXBs
ZW1lbnRlZEFzPWNyZWF0ZVdlYktpdER5bmFtaWNzQ29tcHJlc3Nvcl0gV2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBBbmFseXNlck5v
ZGUgY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlw
dFByb2Nlc3NvcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtJbXBsZW1lbnRlZEFz
PWNyZWF0ZVdlYktpdE9zY2lsbGF0b3JdIFdlYktpdE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2ls
bGF0b3IoKTsKKyAgICBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJh
eSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CiAKICAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBh
bmQgbWVyZ2luZwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBj
cmVhdGVDaGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1
dHMgPSA2KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0
ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYp
OworICAgIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgQ2hhbm5lbE1lcmdlck5v
ZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5w
dXRzID0gNik7CiAKICAgICAvLyBPZmZsaW5lIHJlbmRlcmluZwogICAgIC8vIHVuZGVmaW5lZCBw
cmVwYXJlT2ZmbGluZUJ1ZmZlclJlbmRlcmluZyh1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5l
bHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1w
bGVSYXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVz
dWx0U2V0Um93TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzQsNSArMzQsNSBAQCB0eXBlZGVmIChET01TdHJpbmc/IG9y
IHVucmVzdHJpY3RlZCBkb3ViCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFNRTFJl
c3VsdFNldFJvd0xpc3QgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJlY29yZDxET01TdHJpbmcsIFNRTFZhbHVl
PiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHJlY29yZDxET01TdHJpbmcsIFNRTFZh
bHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQCB0eXBlZGVmIChE
T01TdHJpbmc/IG9yIHVucmVzdHJpY3RlZCBkb3ViCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24s
CiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFNRTFRyYW5zYWN0aW9uIHsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBleGVjdXRlU3FsKERPTVN0cmluZyBzcWxTdGF0
ZW1lbnQsIG9wdGlvbmFsIHNlcXVlbmNlPFNRTFZhbHVlPj8gYXJndW1lbnRzID0gW10sIG9wdGlv
bmFsIFNRTFN0YXRlbWVudENhbGxiYWNrPyBjYWxsYmFjaywgb3B0aW9uYWwgU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgdW5kZWZpbmVkIGV4ZWN1dGVTcWwo
RE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgb3B0aW9uYWwgc2VxdWVuY2U8U1FMVmFsdWU+PyBhcmd1
bWVudHMgPSBbXSwgb3B0aW9uYWwgU1FMU3RhdGVtZW50Q2FsbGJhY2s/IGNhbGxiYWNrLCBvcHRp
b25hbCBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogCiAgICAgYXR0
cmlidXRlIERPTVN0cmluZyBiaW5hcnlUeXBlOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgc2VuZChBcnJheUJ1ZmZlciBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBzZW5kKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBzZW5kKEJsb2IgZGF0YSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2VuZChVU1ZTdHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoQXJy
YXlCdWZmZXIgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoQXJyYXlCdWZmZXJWaWV3IGRhdGEp
OworICAgIHVuZGVmaW5lZCBzZW5kKEJsb2IgZGF0YSk7CisgICAgdW5kZWZpbmVkIHNlbmQoVVNW
U3RyaW5nIGRhdGEpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xvc2Uo
b3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBvcHRpb25hbCBVU1ZTdHJpbmcg
cmVhc29uKTsKKyAgICB1bmRlZmluZWQgY2xvc2Uob3B0aW9uYWwgW0NsYW1wXSB1bnNpZ25lZCBz
aG9ydCBjb2RlLCBvcHRpb25hbCBVU1ZTdHJpbmcgcmVhc29uKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDYgQEAKIF0gaW50ZXJmYWNlIFdlYlhSRnJhbWUgewogICAgIFtT
YW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNlc3Npb247CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPURvY3VtZW50XSBXZWJYUlZpZXdlclBvc2U/
IGdldFZpZXdlclBvc2UoV2ViWFJSZWZlcmVuY2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1Eb2N1bWVudF0gV2ViWFJQb3NlPyBnZXRQb3Nl
KFdlYlhSU3BhY2Ugc3BhY2UsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsKKyAgICBbQ2FsbFdpdGg9
RG9jdW1lbnRdIFdlYlhSVmlld2VyUG9zZT8gZ2V0Vmlld2VyUG9zZShXZWJYUlJlZmVyZW5jZVNw
YWNlIHJlZmVyZW5jZVNwYWNlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFdlYlhSUG9zZT8g
Z2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJlZmVy
ZW5jZVNwYWNlCiBdIGludGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFjZSB7
Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFdlYlhSUmVmZXJlbmNlU3BhY2Ug
Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoV2ViWFJSaWdpZFRyYW5zZm9ybSBvcmlnaW5PZmZzZXQp
OworICAgIFtOZXdPYmplY3RdIFdlYlhSUmVmZXJlbmNlU3BhY2UgZ2V0T2Zmc2V0UmVmZXJlbmNl
U3BhY2UoV2ViWFJSaWdpZFRyYW5zZm9ybSBvcmlnaW5PZmZzZXQpOwogCiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbnJlc2V0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzksMTMgKzM5LDEzIEBACiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJY
UklucHV0U291cmNlQXJyYXkgaW5wdXRTb3VyY2VzOwogCiAgICAgLy8gTWV0aG9kcwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHVwZGF0ZVJlbmRlclN0YXRlKG9wdGlvbmFsIFhS
UmVuZGVyU3RhdGVJbml0IHN0YXRlSW5pdCk7CisgICAgdW5kZWZpbmVkIHVwZGF0ZVJlbmRlclN0
YXRlKG9wdGlvbmFsIFhSUmVuZGVyU3RhdGVJbml0IHN0YXRlSW5pdCk7CiAgICAgW05ld09iamVj
dF0gUHJvbWlzZTxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJS
ZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSk7CiAKICAgICB1bnNpZ25lZCBsb25nIHJlcXVlc3RBbmlt
YXRpb25GcmFtZShYUkZyYW1lUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB1bmRlZmlu
ZWQgY2FuY2VsQW5pbWF0aW9uRnJhbWUodW5zaWduZWQgbG9uZyBoYW5kbGUpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBQcm9taXNlPHVuZGVmaW5lZD4gZW5kKCk7CisgICAgUHJvbWlzZTx1
bmRlZmluZWQ+IGVuZCgpOwogCiAgICAgLy8gRXZlbnRzCiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbmVuZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJH
TExheWVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSV2ViR0xMYXllci5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNyBAQCB0eXBlZGVmIChXZWJHTFJlbmRlcmluZ0NvbnRleHQpIFdlYlhSV2ViCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZnJhbWVidWZmZXJIZWlnaHQ7CiAKICAgICAv
LyBNZXRob2RzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJYUlZpZXdwb3J0PyBnZXRWaWV3
cG9ydChXZWJYUlZpZXcgdmlldyk7CisgICAgV2ViWFJWaWV3cG9ydD8gZ2V0Vmlld3BvcnQoV2Vi
WFJWaWV3IHZpZXcpOwogCiAgICAgLy8gU3RhdGljIE1ldGhvZHMKICAgICBzdGF0aWMgZG91Ymxl
IGdldE5hdGl2ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoV2ViWFJTZXNzaW9uIHNlc3Npb24pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw2IEBACiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93
ZWItYW5pbWF0aW9ucy0xLyN0aGUtYW5pbWF0YWJsZS1pbnRlcmZhY2UtbWl4aW4KIGludGVyZmFj
ZSBtaXhpbiBBbmltYXRhYmxlIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUds
b2JhbE9iamVjdF0gV2ViQW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFtZXMsIG9wdGlv
bmFsICh1bnJlc3RyaWN0ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucykgb3B0
aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gV2ViQW5pbWF0aW9uIGFuaW1hdGUo
b2JqZWN0PyBrZXlmcmFtZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0ZWQgZG91YmxlIG9yIEtleWZy
YW1lQW5pbWF0aW9uT3B0aW9ucykgb3B0aW9ucyk7CiAgICAgc2VxdWVuY2U8V2ViQW5pbWF0aW9u
PiBnZXRBbmltYXRpb25zKG9wdGlvbmFsIEdldEFuaW1hdGlvbnNPcHRpb25zIG9wdGlvbnMpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRs
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
RWZmZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNSArMjksNSBAQAogXSBpbnRlcmZhY2Ug
QW5pbWF0aW9uRWZmZWN0IHsKICAgICBbSW1wbGVtZW50ZWRBcz1nZXRCaW5kaW5nc1RpbWluZ10g
RWZmZWN0VGltaW5nIGdldFRpbWluZygpOwogICAgIFtJbXBsZW1lbnRlZEFzPWdldEJpbmRpbmdz
Q29tcHV0ZWRUaW1pbmddIENvbXB1dGVkRWZmZWN0VGltaW5nIGdldENvbXB1dGVkVGltaW5nKCk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWJpbmRpbmdzVXBkYXRlVGlt
aW5nXSB1bmRlZmluZWQgdXBkYXRlVGltaW5nKG9wdGlvbmFsIE9wdGlvbmFsRWZmZWN0VGltaW5n
IHRpbWluZyk7CisgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NVcGRhdGVUaW1pbmddIHVuZGVm
aW5lZCB1cGRhdGVUaW1pbmcob3B0aW9uYWwgT3B0aW9uYWxFZmZlY3RUaW1pbmcgdGltaW5nKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQCB0eXBlZGVmIFVTVlN0
cmluZyBDU1NPTVN0cmluZzsKICAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBjb25zdHJ1Y3Rv
cihLZXlmcmFtZUVmZmVjdCBzb3VyY2UpOwogCiAgICAgYXR0cmlidXRlIEVsZW1lbnQ/IHRhcmdl
dDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBDU1NPTVN0cmluZz8gcHNldWRv
RWxlbWVudDsKKyAgICBhdHRyaWJ1dGUgQ1NTT01TdHJpbmc/IHBzZXVkb0VsZW1lbnQ7CiAgICAg
W0VuYWJsZWRCeVNldHRpbmc9V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNdIGF0dHJp
YnV0ZSBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24gaXRlcmF0aW9uQ29tcG9zaXRlOwogICAg
IFtFbmFibGVkQnlTZXR0aW5nPVdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zXSBhdHRy
aWJ1dGUgQ29tcG9zaXRlT3BlcmF0aW9uIGNvbXBvc2l0ZTsKICAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0LCBJbXBsZW1lbnRlZEFzPWdldEJpbmRpbmdzS2V5ZnJhbWVzXSBzZXF1ZW5jZTxvYmpl
Y3Q+IGdldEtleWZyYW1lcygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0LCBJbXBsZW1lbnRlZEFzPXNldEJpbmRpbmdzS2V5ZnJhbWVzXSB1bmRlZmluZWQg
c2V0S2V5ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0LCBJbXBsZW1lbnRlZEFzPXNldEJpbmRpbmdzS2V5ZnJhbWVzXSB1bmRlZmluZWQgc2V0S2V5
ZnJhbWVzKG9iamVjdD8ga2V5ZnJhbWVzKTsKIH07CiAKIGRpY3Rpb25hcnkgQmFzZVByb3BlcnR5
SW5kZXhlZEtleWZyYW1lIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
V2ViQW5pbWF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBlbnVtIEFu
aW1hdGlvblJlcGxhY2VTdGF0ZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NFZmZlY3Rd
IGF0dHJpYnV0ZSBBbmltYXRpb25FZmZlY3Q/IGVmZmVjdDsKICAgICBbU2V0dGluZ3NDb25kaXRp
b25hbGx5UmVhZFdyaXRlPVdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzXSBhdHRyaWJ1dGUg
QW5pbWF0aW9uVGltZWxpbmU/IHRpbWVsaW5lOwogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdz
U3RhcnRUaW1lXSBhdHRyaWJ1dGUgZG91YmxlPyBzdGFydFRpbWU7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVdIGF0dHJpYnV0ZSBkb3Vi
bGU/IGN1cnJlbnRUaW1lOworICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVd
IGF0dHJpYnV0ZSBkb3VibGU/IGN1cnJlbnRUaW1lOwogICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxh
eWJhY2tSYXRlOwogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUGxheVN0YXRlXSByZWFkb25s
eSBhdHRyaWJ1dGUgQW5pbWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZTsKICAgICBbSW1wbGVtZW50
ZWRBcz1iaW5kaW5nc1JlcGxhY2VTdGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFuaW1hdGlvblJl
cGxhY2VTdGF0ZSByZXBsYWNlU3RhdGU7CkBAIC02MCwxMSArNjAsMTEgQEAgZW51bSBBbmltYXRp
b25SZXBsYWNlU3RhdGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdzUmVhZHldIHJlYWRv
bmx5IGF0dHJpYnV0ZSBQcm9taXNlPFdlYkFuaW1hdGlvbj4gcmVhZHk7CiAgICAgW0ltcGxlbWVu
dGVkQXM9YmluZGluZ3NGaW5pc2hlZF0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8V2ViQW5p
bWF0aW9uPiBmaW5pc2hlZDsKICAgICB1bmRlZmluZWQgY2FuY2VsKCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgZmluaXNoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uLCBJ
bXBsZW1lbnRlZEFzPWJpbmRpbmdzUGxheV0gdW5kZWZpbmVkIHBsYXkoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9YmluZGluZ3NQYXVzZV0gdW5kZWZpbmVkIHBhdXNl
KCk7CisgICAgdW5kZWZpbmVkIGZpbmlzaCgpOworICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdz
UGxheV0gdW5kZWZpbmVkIHBsYXkoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc1BhdXNl
XSB1bmRlZmluZWQgcGF1c2UoKTsKICAgICB1bmRlZmluZWQgdXBkYXRlUGxheWJhY2tSYXRlKGRv
dWJsZSBwbGF5YmFja1JhdGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRB
cz1iaW5kaW5nc1JldmVyc2VdIHVuZGVmaW5lZCByZXZlcnNlKCk7CisgICAgW0ltcGxlbWVudGVk
QXM9YmluZGluZ3NSZXZlcnNlXSB1bmRlZmluZWQgcmV2ZXJzZSgpOwogICAgIHVuZGVmaW5lZCBw
ZXJzaXN0KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29tbWl0U3R5bGVz
KCk7CisgICAgdW5kZWZpbmVkIGNvbW1pdFN0eWxlcygpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFj
dE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTMgKzc4LDQ2IEBAIHN0YXRpYyBi
b29sIGlzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ly8gTk9URTogTmFtZWQgZ2V0dGVycyBhcmUgbGl0dGxlIG9kZC4gVG8gYXZvaWQgZG9pbmcgZHVw
bGljYXRlIGxvb2t1cHMgKG9uY2Ugd2hlbiBjaGVja2luZyBpZgorLy8gICAgICAgdGhlIHByb3Bl
cnR5IG5hbWUgaXMgYSAnc3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGFuZCBvbmNlIHRvIGdldCB0
aGUgdmFsdWUpIHdlIHNpZ25hbAorLy8gICAgICAgdGhhdCBhIHByb3BlcnR5IGlzIHN1cHBvcnRl
ZCBieSB3aGV0aGVyIG9yIG5vdCBpdCBpcyAnbnVsbCcgKHdoZXJlIHdoYXQgbnVsbCBtZWFucyBp
cworLy8gICAgICAgZGVwZW5kYW50IG9uIHRoZSBJREwgdHlwZSkuIFRoaXMgaXMgYmFzZWQgb24g
dGhlIGFzc3VtcHRpb24gdGhhdCBubyBuYW1lZCBnZXR0ZXIgd2lsbAorLy8gICAgICAgZXZlciBh
Y3R1YWxseSB3YW50IHRvIHJldHVybiBudWxsIGFzIGFuIGFjdHVhbCByZXR1cm4gdmFsdWUsIHdo
aWNoIHNlZW1zIGxpa2UgYW4gb2sKKy8vICAgICAgIGFzc3VtcHRpb24gdG8gbWFrZSAoc2hvdWxk
IGl0IHR1cm4gb3V0IHRoaXMgZG9lc24ndCBob2xkIGluIHRoZSBmdXR1cmUsIHdlIGhhdmUgbG90
cworLy8gICAgICAgb2Ygb3B0aW9uczsgZG8gdHdvIGxvb2t1cHMsIGFkZCBhbiBleHRyYSBsYXll
ciBvZiBPcHRpb25hbCwgZXRjLikuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlLCB0eXBlbmFt
ZSBKU0NsYXNzLCB0eXBlbmFtZSBJbm5lckl0ZW1BY2Nlc3Nvcj4KK3N0YXRpYyBkZWNsdHlwZShh
dXRvKSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IoSW5uZXJJdGVtQWNj
ZXNzb3ImJiBpbm5lckl0ZW1BY2Nlc3NvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0
aW9uT3I8c3RkOjppbnZva2VfcmVzdWx0X3Q8SW5uZXJJdGVtQWNjZXNzb3IsIEpTQ2xhc3MmLCBK
U0M6OlByb3BlcnR5TmFtZT4+KSB7CisgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBFeGNlcHRp
b25Pcjx0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+OworCisgICAgICAgIHJl
dHVybiBbaW5uZXJJdGVtQWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+
KGlubmVySXRlbUFjY2Vzc29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8UmV0dXJuVHlwZT4geworICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBpbm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gUmV0dXJuVHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkgfTsKKyAgICAg
ICAgICAgIGlmICghSURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0LnJldHVyblZhbHVlKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBSZXR1cm5UeXBlIHsgSURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkgfTsKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH07CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZTsK
KworICAgICAgICByZXR1cm4gW2lubmVySXRlbUFjY2Vzc29yID0gc3RkOjpmb3J3YXJkPElubmVy
SXRlbUFjY2Vzc29yPihpbm5lckl0ZW1BY2Nlc3NvcildIChKU0NsYXNzJiB0aGlzT2JqZWN0LCBK
U0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPFJldHVyblR5cGU+IHsK
KyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5uZXJJdGVtQWNjZXNzb3IodGhpc09iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGlmICghSURMVHlwZTo6aXNOdWxsVmFsdWUocmVz
dWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IElETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICB9OworICAgIH0KK30KKwogLy8gQW4gaW1wbGVtZW50YXRpb24gb2Yg
dGhlICduYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobScgYXVnbWVudGVkIHRvIHJl
cGxhY2UgdGhlCiAvLyAnc3VwcG9ydGVkIHByb3BlcnR5IG5hbWUnIGNoZWNrIHdpdGggZGlyZWN0
IGFjY2VzcyB0byB0aGUgaW1wbGVtZW50YXRpb24gdmFsdWUgcmV0dXJuZWQKIC8vIGZvciB0aGUg
cHJvcGVydHkgbmFtZSwgdmlhIHBhc3NlZCBpbiBmdW5jdG9yLiBUaGlzIGFsbG93cyB1cyB0byBh
dm9pZCB0d28gbG9va2luZyB1cCB0aGUKIC8vIHRoZSBwcm9wZXJ0eSBuYW1lIHR3aWNlOyBvbmNl
IGZvciAnbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nIGNoZWNrLCBhbmQgdGhl
bgogLy8gYWdhaW4gd2hlbiB0aGUgdmFsdWUgaXMgbmVlZGVkLgotdGVtcGxhdGU8TGVnYWN5T3Zl
cnJpZGVCdWlsdElucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNzLCBjbGFzcyBGdW5j
dG9yPgotc3RhdGljIGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBGdW5jdG9yJiYgaXRlbUFjY2Vzc29yKSAtPiBkZWNs
dHlwZShpdGVtQWNjZXNzb3IodGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkKK3RlbXBsYXRlPExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xh
c3MgSXRlbUFjY2Vzc29yPgorc3RhdGljIGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHko
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDbGFzcyYgdGhpc09i
amVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJdGVtQWNjZXNzb3ImJiBpdGVt
QWNjZXNzb3IpIC0+IGRlY2x0eXBlKGl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKQogewogICAgIC8vIE5PVEU6IFdoaWxlIGl0IGlzIG5vdCBzcGVjaWZpZWQsIGEgU3ltYm9s
IGNhbiBuZXZlciBiZSBhICdzdXBwb3J0ZWQgcHJvcGVydHkKICAgICAvLyBuYW1lJyBzbyB3ZSBj
aGVjayB0aGF0IGZpcnN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEJhc2UuaAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQs
MTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBVJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9i
amVjdCYsIFUmJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xv
YmFsT2JqZWN0JiwgVSYmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBhdXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJikg
LT4gc3RkOjplbmFibGVfaWZfdDxJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OwotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJ
c0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9i
YWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNF
eGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFs
T2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFJc0V4
Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGF1dG8gdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxl
X2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPjsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmKSAtPiBz
dGQ6OmVuYWJsZV9pZl90PCFJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZU9yRnVuY3Rvcik7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Nj
b3BlJiwgVSYmIHZhbHVlT3JGdW5jdG9yKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYgdmFsdWVPckZ1
bmN0b3IpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIG5lZWRzU3RhdGUgPSBKU0NvbnZl
cnRlcjxUPjo6bmVlZHNTdGF0ZSwgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IEpTQ29udmVydGVy
PFQ+OjpuZWVkc0dsb2JhbE9iamVjdD4KIHN0cnVjdCBKU0NvbnZlcnRlck92ZXJsb2FkZXI7CkBA
IC0xNTgsNTIgKzE1Niw5NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgCiAgICAgcmV0dXJuIEpTQ29udmVydGVyPFQ+Ojpjb252ZXJ0TmV3bHlDcmVhdGVkKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlLCBVJiYgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxV
PiwgSlNDOjpKU1ZhbHVlPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlT3JGdW5jdG9yKQogewot
ICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKLSAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlLnJlbGVh
c2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkp
OwotfQorICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19pbnZvY2FibGVfdjxVPikgeworICAgICAg
ICB1c2luZyBGdW5jdG9yUmV0dXJuVHlwZSA9IHN0ZDo6aW52b2tlX3Jlc3VsdF90PFU+OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2
YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVl
PgotewotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2Fy
ZDxVPih2YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYXV0byB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PElzRXhjZXB0aW9uT3I8VT4sIEpTQzo6
SlNWYWx1ZT4KLXsKLSAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0aW9uKCkpKSB7Ci0g
ICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikg
eworICAgICAgICAgICAgdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6
OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PEV4Y2VwdGlvbk9yPHZvaWQ+LCBGdW5jdG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhj
ZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IHZhbHVlT3JGdW5jdG9yKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
SXNFeGNlcHRpb25PcjxVPikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlT3JGdW5j
dG9yLmhhc0V4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlv
bihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB2YWx1ZU9yRnVuY3Rvci5yZWxlYXNl
RXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
T3JGdW5jdG9yLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICByZXR1cm4gdG9KUzxUPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4o
dmFsdWVPckZ1bmN0b3IpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUsIFUmJiB2YWx1ZU9yRnVuY3RvcikKK3sKKyAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfaW52b2NhYmxlX3Y8VT4pIHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJl
dHVyblR5cGUgPSBzdGQ6Omludm9rZV9yZXN1bHRfdDxVPjsKKworICAgICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfc2FtZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikgeworICAgICAgICAg
ICAgdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVk
KCk7CisgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlv
bk9yPHZvaWQ+LCBGdW5jdG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gdmFsdWVPckZ1bmN0b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgdmFsdWVPckZ1bmN0b3IoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgY29uc3RleHBy
IChJc0V4Y2VwdGlvbk9yPFU+KSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWVPckZ1
bmN0b3IuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0
aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHZhbHVlT3JGdW5jdG9yLnJlbGVh
c2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCB2YWx1ZU9yRnVuY3Rvci5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRvSlM8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWVPckZ1bmN0b3IpKTsKKyAgICB9Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUsIFUmJiB2YWx1ZU9yRnVuY3RvcikKK3sKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
aW52b2NhYmxlX3Y8VT4pIHsKKyAgICAgICAgdXNpbmcgRnVuY3RvclJldHVyblR5cGUgPSBzdGQ6
Omludm9rZV9yZXN1bHRfdDxVPjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PHZvaWQsIEZ1bmN0b3JSZXR1cm5UeXBlPikgeworICAgICAgICAgICAgdmFsdWVPckZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0g
ZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4Y2VwdGlvbk9yPHZvaWQ+LCBGdW5j
dG9yUmV0dXJuVHlwZT4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVPckZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpKSB7
CisgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1Vu
ZGVmaW5lZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0b0pTTmV3bHlD
cmVhdGVkPFQ+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
dmFsdWVPckZ1bmN0b3IoKSk7CisKKyAgICB9IGVsc2UgeworICAgICAgICBpZiBjb25zdGV4cHIg
KElzRXhjZXB0aW9uT3I8VT4pIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZU9yRnVu
Y3Rvci5oYXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBwcm9wYWdhdGVFeGNlcHRp
b24obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdmFsdWVPckZ1bmN0b3IucmVsZWFz
ZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHZhbHVlT3JGdW5jdG9yLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxU
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1
ZU9yRnVuY3RvcikpOwogICAgIH0KLQotICAgIHJldHVybiB0b0pTPFQ+KGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgdmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZf
dDwhSXNFeGNlcHRpb25PcjxVPiwgSlNDOjpKU1ZhbHVlPgotewotICAgIHJldHVybiB0b0pTPFQ+
KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVl
KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlLCBVJiYgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNFeGNlcHRpb25PcjxVPiwgSlND
OjpKU1ZhbHVlPgotewotICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsK
LSAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIHZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQ8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCB2YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVuYWJs
ZV9pZl90PCFJc0V4Y2VwdGlvbk9yPFU+LCBKU0M6OkpTVmFsdWU+Ci17Ci0gICAgcmV0dXJuIHRv
SlNOZXdseUNyZWF0ZWQ8VD4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBzdGQ6
OmZvcndhcmQ8VT4odmFsdWUpKTsKLX0KLQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdENvbnZlcnRlciB7CiAgICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIFQ6Oklt
cGxlbWVudGF0aW9uVHlwZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0RGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0RGF0ZS5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydERhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
Ci0vLyBGSVhNRTogVGhpcyBzaG91bGQgZ2V0IHBhc3NlZCBhIGdsb2JhbCBvYmplY3QgcmF0aGVy
IHRoYW4gZ2V0dGluZyBpdCBvdXQgb2YgdGhlIEV4ZWNTdGF0ZS4KIEpTVmFsdWUganNEYXRlKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIERhdGVJbnN0YW5jZTo6Y3JlYXRlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgbGV4
aWNhbEdsb2JhbE9iamVjdC5kYXRlU3RydWN0dXJlKCksIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRT
ZXF1ZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgR2VuZXJp
Y1NlcXVlbmNlQ29udmVydGVyIHsKIC8vIFNwZWNpYWxpemF0aW9uIGZvciBudW1lcmljIHR5cGVz
CiAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciB0aGUgSURMRmxvYXRpbmdQ
b2ludFR5cGVzIGFuZCBJRExMb25nLiBUbyBhZGQKIC8vIHN1cHBvcnQgZm9yIG1vcmUgbnVtZXJp
YyB0eXBlcywgYWRkIGFuIG92ZXJsb2FkIG9mIENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydCB0
aGF0Ci0vLyB0YWtlcyBhbiBFeGVjU3RhdGUsIFRocm93U2NvcGUsIGRvdWJsZSBhcyBpdHMgYXJn
dW1lbnRzLgorLy8gdGFrZXMgYSBKU0dsb2JhbE9iamVjdCwgVGhyb3dTY29wZSBhbmQgZG91Ymxl
IGFzIGl0cyBhcmd1bWVudHMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogc3RydWN0IE51
bWVyaWNTZXF1ZW5jZUNvbnZlcnRlciB7CiAgICAgdXNpbmcgR2VuZXJpY0NvbnZlcnRlciA9IEdl
bmVyaWNTZXF1ZW5jZUNvbnZlcnRlcjxJRExUeXBlPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTAgKzk4LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBpbnZva2VGdQogICAgICAgICBhdXRvIHJlc3VsdCA9IGZ1bmN0b3IoKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkpCiAgICAgICAgICAg
ICBwcm9wYWdhdGVFeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBm
dW5jdG9yKCk7CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0b3IoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTEsMTMgKzIxMSw2IEBAIHZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFu
eShKU0MKICAgICBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHByb21pc2Up
LT5yZWplY3Q8SURMQW55PihlcnJvcik7CiB9CiAKLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0
ZURlZmVycmVkUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01XaW5kb3cmIGRvbVdp
bmRvdykKLXsKLSAgICBhdXRvKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUoZG9tV2luZG93
LnZtKCksIGRvbVdpbmRvdy5wcm9taXNlU3RydWN0dXJlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJU
KHByb21pc2UpOwotICAgIHJldHVybiBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZShkb21XaW5kb3cs
ICpwcm9taXNlKTsKLX0KLQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVhdGVSZWplY3RlZFByb21p
c2VXaXRoVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9y
Q2F1c2UgY2F1c2UpCiB7CiAgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gbGV4aWNhbEdsb2JhbE9i
amVjdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVy
cmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuaAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDkgKzI5
NSw2IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi0KLVJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0
ZURlZmVycmVkUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01XaW5kb3cmKTsKLQog
dm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0
IFN0cmluZyYpOwogdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmLCBBcnJheUJ1ZmZlciopOwogdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJh
eUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBA
IHN1YiBBZGRNYXBMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmUKICAgICB1bmxlc3MgKGdy
ZXAgeyAkXy0+bmFtZSBlcSAiY2xlYXIiIH0gKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30sIEB7
JGludGVyZmFjZS0+b3BlcmF0aW9uc30sIEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkpIHsKICAg
ICAgICAgbXkgJGNsZWFyT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKICAgICAgICAg
JGNsZWFyT3BlcmF0aW9uLT5uYW1lKCJjbGVhciIpOwotICAgICAgICAkY2xlYXJPcGVyYXRpb24t
PnR5cGUoSURMUGFyc2VyOjptYWtlU2ltcGxlVHlwZSgidW5kZWZpbmVkIikpOworICAgICAgICAk
Y2xlYXJPcGVyYXRpb24tPnR5cGUoSURMUGFyc2VyOjptYWtlU2ltcGxlVHlwZSgiYW55IikpOwog
ICAgICAgICBJRExQYXJzZXI6OmNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJGNsZWFyT3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpbnRlcmZhY2UtPm1hcExpa2UtPmV4dGVuZGVkQXR0cmli
dXRlcyk7CiAgICAgICAgICRjbGVhck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90
RW51bWVyYWJsZX0gPSAxOwogICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30s
ICRjbGVhck9wZXJhdGlvbik7CkBAIC00MjQsNyArNDI0LDcgQEAgc3ViIEFkZFNldExpa2VBdHRy
aWJ1dGVzQW5kT3BlcmF0aW9uSWZOZQogICAgIHVubGVzcyAoZ3JlcCB7ICRfLT5uYW1lIGVxICJj
bGVhciIgfSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSwgQHskaW50ZXJmYWNlLT5vcGVyYXRp
b25zfSwgQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSkgewogICAgICAgICBteSAkY2xlYXJPcGVy
YXRpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwogICAgICAgICAkY2xlYXJPcGVyYXRpb24tPm5h
bWUoImNsZWFyIik7Ci0gICAgICAgICRjbGVhck9wZXJhdGlvbi0+dHlwZShJRExQYXJzZXI6Om1h
a2VTaW1wbGVUeXBlKCJ1bmRlZmluZWQiKSk7CisgICAgICAgICRjbGVhck9wZXJhdGlvbi0+dHlw
ZShJRExQYXJzZXI6Om1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CiAgICAgICAgIElETFBhcnNlcjo6
Y29weUV4dGVuZGVkQXR0cmlidXRlcygkY2xlYXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cywgJGludGVyZmFjZS0+c2V0TGlrZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAgJGNs
ZWFyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfSA9IDE7CiAg
ICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSwgJGNsZWFyT3BlcmF0aW9uKTsK
QEAgLTg0NCwzOSArODQ0LDE0IEBAIHN1YiBHZW5lcmF0ZU5hbWVkR2V0dGVyCiAKIHN1YiBHZW5l
cmF0ZU5hbWVkR2V0dGVyTGFtYmRhCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFj
ZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICRJRExU
eXBlKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAkSURMVHlw
ZSkgPSBAXzsKICAgICAKLSAgICAjIE5PVEU6IE5hbWVkIGdldHRlcnMgYXJlIGxpdHRsZSBvZGQu
IFRvIGF2b2lkIGRvaW5nIGR1cGxpY2F0ZSBsb29rdXBzIChvbmNlIHdoZW4gY2hlY2tpbmcgaWYK
LSAgICAjICAgICAgIHRoZSBwcm9wZXJ0eSBuYW1lIGlzIGEgJ3N1cHBvcnRlZCBwcm9wZXJ0eSBu
YW1lJyBhbmQgb25jZSB0byBnZXQgdGhlIHZhbHVlKSB3ZSBzaWduYWwKLSAgICAjICAgICAgIHRo
YXQgYSBwcm9wZXJ0eSBpcyBzdXBwb3J0ZWQgYnkgd2hldGhlciBvciBub3QgaXQgaXMgJ251bGwn
ICh3aGVyZSB3aGF0IG51bGwgbWVhbnMgaXMKLSAgICAjICAgICAgIGRlcGVuZGFudCBvbiB0aGUg
SURMIHR5cGUpLiBUaGlzIGlzIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgbm8gbmFtZWQg
Z2V0dGVyIHdpbGwKLSAgICAjICAgICAgIGV2ZXIgYWN0dWFsbHkgd2FudCB0byByZXR1cm4gbnVs
bCBhcyBhbiBhY3R1YWwgcmV0dXJuIHZhbHVlLCB3aGljaCBzZWVtcyBsaWtlIGFuIG9rCi0gICAg
IyAgICAgICBhc3N1bXB0aW9uIHRvIG1ha2UgKHNob3VsZCBpdCB0dXJuIG91dCB0aGlzIGRvZXNu
J3QgaG9sZCBpbiB0aGUgZnV0dXJlLCB3ZSBoYXZlIGxvdHMKLSAgICAjICAgICAgIG9mIG9wdGlv
bnM7IGRvIHR3byBsb29rdXBzLCBhZGQgYW4gZXh0cmEgbGF5ZXIgb2YgT3B0aW9uYWwsIGV0Yy4p
LgotICAgIAotICAgIG15ICRyZXN1bHRUeXBlID0gInR5cGVuYW1lICR7SURMVHlwZX06OkltcGxl
bWVudGF0aW9uVHlwZSI7Ci0gICAgJHJlc3VsdFR5cGUgPSAiRXhjZXB0aW9uT3I8IiAuICRyZXN1
bHRUeXBlIC4gIj4iIGlmICRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TWF5VGhyb3dFeGNlcHRpb259OwotICAgIG15ICRyZXR1cm5UeXBlID0gIk9wdGlvbmFsPCIg
LiAkcmVzdWx0VHlwZSAuICI+IjsKLQotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+ICR7cmV0dXJuVHlwZX0ge1xuIik7Ci0KICAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVD
YWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhbGxXaXRofSwgJG91dHB1dEFycmF5LCAiV1RGOjpudWxsb3B0IiwgInRoaXNP
YmplY3QiLCAiICAgICAgICAiKTsKICAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVU
b0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSIpOwogCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLiR7bmFtZWRHZXR0ZXJG
dW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKLSAgICAK
LSAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlU
aHJvd0V4Y2VwdGlvbn0pIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKVxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgICAgIHJldHVybiAke3Jlc3VsdFR5cGV9IHsgcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKSB9O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYg
KCEke0lETFR5cGV9Ojppc051bGxWYWx1ZShyZXN1bHQucmV0dXJuVmFsdWUoKSkpXG4iKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuICR7cmVzdWx0VHlw
ZX0geyAke0lETFR5cGV9OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKSB9O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDtcbiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCEke0lETFR5cGV9Ojppc051bGxWYWx1ZShyZXN1
bHQpKVxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVy
biAke3Jlc3VsdFR5cGV9IHsgJHtJRExUeXBlfTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7XG4iKTsKLSAgICB9Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IH07XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPCR7SURMVHlwZX0sICR7
Y2xhc3NOYW1lfT4oW10gKCR7Y2xhc3NOYW1lfSYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykge1xuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkuJHtuYW1lZEdldHRlckZ1
bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB9KTtcbiIpOwogfQogCiAjIGh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZ2V0b3ducHJvcGVydHkKQEAg
LTg4NSwxOCArODYwLDE5IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdAogICAgIG15
ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87CiAgICAgCiAgICAg
cmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blBy
b3BlcnR5U2xvdH07Ci0gICAgCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNz
TmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KVxuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFz
c05hbWV9Kj4ob2JqZWN0KTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKLSAgICAKKwog
ICAgIG15ICRuYW1lZEdldHRlck9wZXJhdGlvbiA9IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9uKCRp
bnRlcmZhY2UpOwogICAgIG15ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uID0gR2V0SW5kZXhlZEdl
dHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKLSAgICAKLSAgICBpZiAoKCRuYW1lZEdldHRlck9w
ZXJhdGlvbiAmJiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01h
eVRocm93RXhjZXB0aW9ufSkgfHwgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9uICYmICRpbmRleGVk
R2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0p
KSB7CisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKworICAgIGlmICgkbmFtZWRH
ZXR0ZXJPcGVyYXRpb24gfHwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICB9CisKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNz
TmFtZX0qPihvYmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwogICAgIAogICAg
ICMgTk9URTogVGhlIGFsb2dpdGhtIGZvciBbW0dldE93blByb3BlcnR5XV0gY29udGFpbnMgb25s
eSB0aGUgZm9sbG93aW5nIHN0ZXA6CiAgICAgIyAxLiBSZXR1cm4gTGVnYWN5UGxhdGZvcm1PYmpl
Y3RHZXRPd25Qcm9wZXJ0eShPLCBQLCBmYWxzZSkuCkBAIC05MTgsNyArODk0LDcgQEAgc3ViIEdl
bmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgIG15ICgkbmF0aXZlVG9KU0NvbnZlcnNp
b24sICRhdHRyaWJ1dGVTdHJpbmcpID0gR2VuZXJhdGVJbmRleGVkR2V0dGVyKCRpbnRlcmZhY2Us
ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLCAiaW5kZXgudmFsdWUoKSIpOwogICAgICAgICAKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgYXV0byB2YWx1ZSA9ICR7bmF0
aXZlVG9KU0NvbnZlcnNpb259O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIikgaWYg
JGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhj
ZXB0aW9ufTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgJHthdHRyaWJ1dGVTdHJpbmd9LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTk0Niw3ICs5MjIsNyBA
QCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgCiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gJHtJRExUeXBlfTtcbiIp
OwogICAgICAgICAKLSAgICAgICAgR2VuZXJhdGVOYW1lZEdldHRlckxhbWJkYSgkb3V0cHV0QXJy
YXksICRpbnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rp
b25OYW1lLCAiR2V0dGVySURMVHlwZSIpOworICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFt
YmRhKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkR2V0dGVyT3Bl
cmF0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAg
ICAgIAogICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMi
KSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkge1xuIik7CkBAIC05NTYsNyArOTMyLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJv
cGVydHlTbG90CiAgICAgICAgIG15ICgkbmF0aXZlVG9KU0NvbnZlcnNpb24sICRhdHRyaWJ1dGVT
dHJpbmcpID0gR2VuZXJhdGVOYW1lZEdldHRlcigkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJPcGVy
YXRpb24sICJXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkiKTsKICAgICAgICAgCiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byB2YWx1ZSA9ICR7bmF0aXZlVG9K
U0NvbnZlcnNpb259O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKSBpZiAkbmFtZWRHZXR0
ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTtcbiIpOwogICAgICAgICAKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsICR7YXR0cmlidXRlU3RyaW5n
fSwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIHRydWU7XG4iKTsKQEAgLTEwMDAsMTYgKzk3NiwxNSBAQCBzdWIgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4CiAgICAgCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAk
e2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAg
ICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1BsdWdpbn0gfHwgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9uICYmICRpbmRleGVkR2V0
dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0pKSB7
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKKworICAgIGlmICgk
bmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pO1xuIik7CiAgICAgfQorCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7XG4iKTsKLSAgICAKLSAgICBpZiAoKCRuYW1lZEdldHRlck9wZXJh
dGlvbiAmJiAkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRo
cm93RXhjZXB0aW9ufSkgfHwgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9uICYmICRpbmRleGVkR2V0
dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0pKSB7
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwotICAgIH0KLSAgICAKKwogICAgICMgTk9URTogVGhl
IGFsb2dpdGhtIGZvciBbW0dldE93blByb3BlcnR5XV0gY29udGFpbnMgb25seSB0aGUgZm9sbG93
aW5nIHN0ZXA6CiAgICAgIyAxLiBSZXR1cm4gTGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9w
ZXJ0eShPLCBQLCBmYWxzZSkuCiAgICAgCkBAIC0xMDMwLDcgKzEwMDUsNyBAQCBzdWIgR2VuZXJh
dGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAgICAgICAgIG15ICgkbmF0aXZlVG9KU0NvbnZl
cnNpb24sICRhdHRyaWJ1dGVTdHJpbmcpID0gR2VuZXJhdGVJbmRleGVkR2V0dGVyKCRpbnRlcmZh
Y2UsICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLCAiaW5kZXgiKTsKICAgICAgICAgCiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIGF1dG8gdmFsdWUgPSAke25hdGl2ZVRv
SlNDb252ZXJzaW9ufTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpIGlmICRpbmRl
eGVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlv
bn07CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CiAgICAgICAgIAogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsICR7
YXR0cmlidXRlU3RyaW5nfSwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuIik7CkBAIC0xMDYwLDcgKzEwMzUsNyBAQCBz
dWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAgICAgICAgIAogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9ICR7SURMVHlwZX07
XG4iKTsKICAgICAgICAgCi0gICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1
dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1
bmN0aW9uTmFtZSwgIkdldHRlcklETFR5cGUiKTsKKyAgICAgICAgR2VuZXJhdGVOYW1lZEdldHRl
ckxhbWJkYSgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZEdldHRl
ck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1lLCAiR2V0dGVySURMVHlwZSIpOwog
ICAgICAgICAKICAgICAgICAgbXkgJG92ZXJyaWRlQnVpbHRpbiA9ICRjb2RlR2VuZXJhdG9yLT5J
bmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzIiA6ICJMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1aWx0
aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHtcbiIpOwpAQCAtMTA3MCw3ICsxMDQ1LDcgQEAgc3ViIEdlbmVyYXRlR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgICAgICBteSAoJG5hdGl2ZVRvSlNDb252ZXJzaW9u
LCAkYXR0cmlidXRlU3RyaW5nKSA9IEdlbmVyYXRlTmFtZWRHZXR0ZXIoJGludGVyZmFjZSwgJG5h
bWVkR2V0dGVyT3BlcmF0aW9uLCAiV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpIik7CiAK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHZhbHVlID0gJHtuYXRp
dmVUb0pTQ29udmVyc2lvbn07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpIGlmICRuYW1l
ZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CiAgICAgICAgIAogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVT
dHJpbmd9LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gdHJ1ZTtcbiIpOwpAQCAtNTIyNSw5ICs1MjAwLDggQEAgc3ViIEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyQm9keURlZmluaXRpbwogICAgIG15ICRoYXNDdXN0b21HZXR0ZXIgPSBIYXND
dXN0b21HZXR0ZXIoJGF0dHJpYnV0ZSk7CiAgICAgbXkgJGlzRXZlbnRIYW5kbGVyID0gJGF0dHJp
YnV0ZS0+dHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIjsKICAgICBteSAkaXNDb25zdHJ1Y3Rv
ciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsK
LSAgICBteSAkbmF0aXZlVG9KU1ZhbHVlTWF5VGhyb3cgPSBOYXRpdmVUb0pTVmFsdWVNYXlUaHJv
dygkYXR0cmlidXRlKTsKIAotICAgIG15ICRuZWVkVGhyb3dTY29wZSA9ICRuZWVkU2VjdXJpdHlD
aGVjayB8fCAoISRoYXNDdXN0b21HZXR0ZXIgJiYgISRpc0V2ZW50SGFuZGxlciAmJiAhJGlzQ29u
c3RydWN0b3IgJiYgJG5hdGl2ZVRvSlNWYWx1ZU1heVRocm93KTsKKyAgICBteSAkbmVlZFRocm93
U2NvcGUgPSAkbmVlZFNlY3VyaXR5Q2hlY2sgfHwgKCEkaGFzQ3VzdG9tR2V0dGVyICYmICEkaXNF
dmVudEhhbmRsZXIgJiYgISRpc0NvbnN0cnVjdG9yKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInN0YXRpYyBpbmxpbmUgSlNWYWx1ZSAke2F0dHJpYnV0ZUdldHRlckJvZHlOYW1lfSgiIC4g
am9pbigiLCAiLCBAc2lnbmF0dXJlQXJndW1lbnRzKSAuICIpXG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ7XG4iKTsKQEAgLTU3OTAsNyArNTc2NCw2IEBAIHN1YiBHZW5lcmF0ZU9wZXJh
dGlvbkRlZmluaXRpb24KICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHZhbHVlKTsKICAg
ICAgICAgfQogICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUo
IiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7Ci0gICAgICAgICRmdW5jdGlvblN0cmlu
ZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICRmdW5jdGlvblN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxs
KCRvcGVyYXRpb24pOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSgiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9u
LCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCkiKSAuICIpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAK
QEAgLTYwODUsMTUgKzYwNTgsNiBAQCBzdWIgV2lsbENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQ
YXJhbWV0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1YiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhj
ZXB0aW9uQ2FsbAotewotICAgIG15ICgkb3BlcmF0aW9uKSA9IEBfOwotCi0gICAgcmV0dXJuIDAg
dW5sZXNzICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9u
fTsKLQotICAgIHJldHVybiAkb3BlcmF0aW9uLT50eXBlICYmICgkb3BlcmF0aW9uLT50eXBlLT5u
YW1lIGVxICJ1bmRlZmluZWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVy
YXRpb24tPnR5cGUpIHx8IEdldE9wZXJhdGlvblJldHVybmVkQXJndW1lbnROYW1lKCRvcGVyYXRp
b24pKTsKLX0KLQogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiB7CiAgICAgbXkgKCRvdXRw
dXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lLCAkaW5kZW50KSA9IEBfOwpAQCAtNjIxNSwxMCArNjE3OSw3IEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogCiAgICAgcHVzaChAYXJndW1lbnRzLCAiV1RGTW92ZShwcm9taXNlKSIp
IGlmICRvcGVyYXRpb24tPnR5cGUgJiYgJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJG9w
ZXJhdGlvbi0+dHlwZSkgJiYgISRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Byb21p
c2VQcm94eX07CiAKLSAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4g
am9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKLSAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJv
cGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAkZnVuY3Rp
b25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkb3BlcmF0
aW9uKTsKLQotICAgIHJldHVybiAkZnVuY3Rpb25TdHJpbmc7CisgICAgcmV0dXJuICIkZnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwogfQogCiBzdWIgR2VuZXJh
dGVEaWN0aW9uYXJ5SGVhZGVyCkBAIC02NjY2LDE1ICs2NjI3LDkgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb25GdW5jdGlvbkNhbGwKICAgICBteSAkaGFzV3JpdGVCYXJyaWVyc0ZvckFyZ3Vt
ZW50cyA9IEdlbmVyYXRlV3JpdGVCYXJyaWVyc0ZvckFyZ3VtZW50cygkb3V0cHV0QXJyYXksICRv
cGVyYXRpb24sICRpbmRlbnQsICRkcnlSdW4pOwogICAgIG15ICRyZXR1cm5Bcmd1bWVudE5hbWUg
PSBHZXRPcGVyYXRpb25SZXR1cm5lZEFyZ3VtZW50TmFtZSgkb3BlcmF0aW9uKTsKICAgICBpZiAo
JHJldHVybkFyZ3VtZW50TmFtZSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRl
bnQgLiAidGhyb3dTY29wZS5yZWxlYXNlKCk7XG4iKSBpZiAoJGhhc1Rocm93U2NvcGUpOwotICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpbnZva2VGdW5jdG9yUHJv
cGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuICRmdW5jdGlvblN0cmluZzsgfSk7XG4iKTsKICAgICAgICAgR2Vu
ZXJhdGVXcml0ZUJhcnJpZXJzRm9yQXJndW1lbnRzKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwg
JGluZGVudCk7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJyZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKCRyZXR1cm5Bcmd1bWVudE5hbWUudmFsdWUoKSk7XG4iKTsKLSAgICB9
IGVsc2lmICgkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ1bmRlZmluZWQiIHx8ICgkY29kZUdl
bmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJvbWlzZVByb3h5fSkpIHsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAkaW5kZW50IC4gInRocm93U2NvcGUucmVsZWFzZSgpO1xuIikgaWYgKCRoYXNU
aHJvd1Njb3BlKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiRmdW5j
dGlvblN0cmluZztcbiIpOwotICAgICAgICBHZW5lcmF0ZVdyaXRlQmFycmllcnNGb3JBcmd1bWVu
dHMoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW5kZW50KTsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNl
ID0gJG9wZXJhdGlvbi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxl
eGljYWxHbG9iYWxPYmplY3QpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwogICAg
ICAgICBpZiAoJGhhc1dyaXRlQmFycmllcnNGb3JBcmd1bWVudHMpIHsKQEAgLTY2ODIsMTAgKzY2
MzcsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbAogICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIlJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkaGFzVGhyb3dTY29wZTsKICAgICAg
ICAgICAgIEdlbmVyYXRlV3JpdGVCYXJyaWVyc0ZvckFyZ3VtZW50cygkb3V0cHV0QXJyYXksICRv
cGVyYXRpb24sICRpbmRlbnQpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5k
ZW50IC4gInJldHVybiByZXN1bHQ7XG4iKTsKLSAgICAgICAgfSBlbHNpZiAoJGhhc1Rocm93U2Nv
cGUpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKCIgLiBOYXRpdmVUb0pTVmFs
dWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywg
JGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgLiAiKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRl
cmZhY2UsICRmdW5jdGlvblN0cmluZywgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgLiAiKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIlJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVz
aW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkZ2xv
YmFsT2JqZWN0UmVmZXJlbmNlKSAuICIpKTtcbiIpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
NzE5NSw3ICs3MTQ4LDcgQEAgc3ViIElzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9KU1ZhbHVlCiBz
dWIgTmF0aXZlVG9KU1ZhbHVlTWF5VGhyb3cKIHsKICAgICBteSAoJGNvbnRleHQpID0gQF87Ci0g
ICAgbXkgJG1heVRocm93RXhjZXB0aW9uID0gcmVmKCRjb250ZXh0KSBlcSAiSURMQXR0cmlidXRl
IiB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259Owor
ICAgIG15ICRtYXlUaHJvd0V4Y2VwdGlvbiA9IHJlZigkY29udGV4dCkgZXEgIklETEF0dHJpYnV0
ZSIgfHwgcmVmKCRjb250ZXh0KSBlcSAiSURMT3BlcmF0aW9uIjsKIH0KIAogc3ViIE5hdGl2ZVRv
SlNWYWx1ZQpAQCAtNzIyNSwxMiArNzE3OCwxOSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAKICAg
ICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogCisgICAgIyBG
SVhNRTogTm90IGFsbCBwcm9taXNlIHR5cGVzIHJlcXVpcmUgdGhlIGZ1bmN0b3Igd3JhcHBpbmcg
KHNvbWUgYXR0cmlidXRlIGdldHRlcnMgYWN0dWFsbHkgcmV0dXJuIGEgdmFsdWUpCisgICAgIyBi
dXQgd3JhcHBpbmcgaXMgYSBuby1vcCwgc28gZml4aW5nIHRoaXMgd291bGQgcHVyZWx5IGJlIGEg
c3R5bGlzdGljIC8gY29tcGlsZSB0aW1lIGZpeC4KKyAgICBteSAkbmVlZHNGdW5jdG9yV3JhcHBp
bmcgPSAkdHlwZS0+bmFtZSBlcSAidW5kZWZpbmVkIiB8fCAkY29kZUdlbmVyYXRvci0+SXNQcm9t
aXNlVHlwZSgkdHlwZSk7CisKICAgICBteSBAY29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOwogICAg
IHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICRsZXhpY2FsR2xvYmFsT2JqZWN0UmVmZXJlbmNl
KSBpZiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSgkdHlwZSkgfHwgJG1heVRo
cm93RXhjZXB0aW9uOwogICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICRnbG9iYWxPYmpl
Y3RSZWZlcmVuY2UpIGlmIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc0dsb2JhbE9iamVj
dCgkdHlwZSk7CiAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgInRocm93U2NvcGUiKSBp
ZiAkbWF5VGhyb3dFeGNlcHRpb247Ci0gICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgJHZh
bHVlKTsKLQorICAgIGlmICgkbmVlZHNGdW5jdG9yV3JhcHBpbmcpIHsKKyAgICAgICAgcHVzaChA
Y29udmVyc2lvbkFyZ3VtZW50cywgIlsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuICR2
YWx1ZTsgfSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVu
dHMsICIkdmFsdWUiKTsKKyAgICB9CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdPYmplY3R9ID8gInRvSlNOZXdseUNyZWF0ZWQiIDogInRv
SlMiOwogCiAgICAgcmV0dXJuICIke2Z1bmN0aW9uTmFtZX08JHtJRExUeXBlfT4oIiAuIGpvaW4o
IiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5q
c29uCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsOSArMzgwLDYgQEAKICAgICAgICAgIk1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiTWF5VGhyb3dFeGNlcHRpb24iOiB7Ci0gICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAg
ICAgICAgfSwKICAgICAgICAgIk5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFj
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RJbnRlcmZhY2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9z
ZWQ9V2luZG93CiBdIGludGVyZmFjZSBUZXN0SW50ZXJmYWNlIHsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb24sIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKERPTVN0
cmluZyBzdHIxLCBvcHRpb25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIik7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKERPTVN0cmlu
ZyBzdHIxLCBvcHRpb25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIik7CiAKICAg
ICBpdGVyYWJsZTxUZXN0Tm9kZSwgVGVzdE9iaj47CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAgICAgc3RhdGljIGF0dHJpYnV0ZSBE
T01TdHJpbmcgc3RhdGljU3RyaW5nQXR0cmlidXRlOwogCiAgICAgdW5kZWZpbmVkIHZvaWRPcGVy
YXRpb24oKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dF
eGNlcHRpb25dIFRlc3RPYmogdGhyb3dpbmdPcGVyYXRpb24oRE9NU3RyaW5nIHN0ckFyZywgVGVz
dE9iaiBvYmpBcmcpOwogICAgIFtDdXN0b21dIHVuZGVmaW5lZCBjdXN0b21PcGVyYXRpb24oKTsK
ICAgICBzdGF0aWMgdW5kZWZpbmVkIHN0YXRpY09wZXJhdGlvbigpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGlu
SW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAKICAgICBhdHRyaWJ1dGUgTm9kZSBtaXhpbk5vZGVBdHRyaWJ1dGU7CiAK
ICAgICB1bmRlZmluZWQgbWl4aW5PcGVyYXRpb24oKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogbWl4aW5Db21wbGV4T3Bl
cmF0aW9uKERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gVGVzdE9iaiBtaXhpbkNvbXBsZXhPcGVyYXRpb24oRE9N
U3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFtDdXN0b21dIHVuZGVmaW5lZCBt
aXhpbkN1c3RvbU9wZXJhdGlvbigpOwogICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5k
ZWZpbmVkIG1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsKICAgICBbRW5hYmxlZEJ5U2V0dGlu
Zz1UZXN0U2V0dGluZ10gdW5kZWZpbmVkIG1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlv
bigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDYg
QEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHVuZGVmaW5l
ZCBtZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmcoVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbiBl
bnVtQXJnKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhvcHRpb25h
bCBUZXN0RW51bVR5cGUgZW51bUFyZyk7CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhPcHRpb25h
bEVudW1BcmdBbmREZWZhdWx0VmFsdWUob3B0aW9uYWwgVGVzdEVudW1UeXBlIGVudW1BcmcgPSAi
RW51bVZhbHVlMSIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJn
KTsKIAogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoVVNWU3RyaW5nQXJnKFVTVlN0cmluZyBzdHIp
OwogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoVVNWU3RyaW5n
PyBzdHIpOwpAQCAtMTY5LDExICsxNjgsNiBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2gi
LCAia2luZGEtbG93CiAKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFJlY29yZChyZWNvcmQ8RE9N
U3RyaW5nLCBsb25nPiByZWNvcmRQYXJhbWV0ZXIpOwogCi0gICAgLy8gRXhjZXB0aW9ucwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG1ldGhvZFdpdGhFeGNlcHRpb24oKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xv
bmcoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogbWV0aG9kV2l0aEV4Y2VwdGlv
blJldHVybmluZ09iamVjdCgpOwotCiAgICAgLy8gJ0N1c3RvbScgZXh0ZW5kZWQgYXR0cmlidXRl
CiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBjdXN0b21BdHRyOwogICAg
IFtDdXN0b21dIHVuZGVmaW5lZCBjdXN0b21NZXRob2QoKTsKQEAgLTE5NywxMSArMTkxLDggQEAg
ZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIC8vICdDYWxsV2l0
aCcgZXh0ZW5kZWQgYXR0cmlidXRlCiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZp
bmVkIHdpdGhFeGVjU3RhdGVWb2lkKCk7CiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gVGVz
dE9iaiB3aXRoRXhlY1N0YXRlT2JqKCk7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB3aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbigpOwot
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIHdp
dGhFeGVjU3RhdGVPYmpFeGNlcHRpb24oKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gdW5kZWZpbmVkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmRXhlY1N0YXRlXSB1bmRlZmluZWQgd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCZFeGVjU3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlT2JqRXhjZXB0aW9uKCk7CiAgICAg
W0NhbGxXaXRoPSAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAgJiAgRXhlY1N0YXRlICBdIFRlc3RP
Ymogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzKCk7CiAg
ICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgd2l0aERvY3VtZW50QXJndW1lbnQoKTsK
ICAgICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnRdIHVuZGVmaW5lZCB3aXRoQ2FsbGVyRG9j
dW1lbnRBcmd1bWVudCgpOwpAQCAtMzQyLDggKzMzMyw4IEBAIGVudW0gVGVzdENvbmZpZGVuY2Ug
eyAiaGlnaCIsICJraW5kYS1sb3cKICAgICB1bmRlZmluZWQgY2xhc3NNZXRob2RXaXRoRW5mb3Jj
ZVJhbmdlT25PcHRpb25hbChvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSBsb25nIG9iakFyZ3NMb25n
ID0gMCk7CiAKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKHNl
cXVlbmNlPHVuc2lnbmVkIGxvbmc+IHVuc2lnbmVkTG9uZ1NlcXVlbmNlKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHNlcXVlbmNlPERPTVN0cmluZz4gc3RyaW5nQXJyYXlGdW5jdGlvbihzZXF1
ZW5jZTxET01TdHJpbmc+IHZhbHVlcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJp
bmdMaXN0IGRvbVN0cmluZ0xpc3RGdW5jdGlvbihET01TdHJpbmdMaXN0IHZhbHVlcyk7CisgICAg
c2VxdWVuY2U8RE9NU3RyaW5nPiBzdHJpbmdBcnJheUZ1bmN0aW9uKHNlcXVlbmNlPERPTVN0cmlu
Zz4gdmFsdWVzKTsKKyAgICBET01TdHJpbmdMaXN0IGRvbVN0cmluZ0xpc3RGdW5jdGlvbihET01T
dHJpbmdMaXN0IHZhbHVlcyk7CiAKICAgICB1bmRlZmluZWQgb3BlcmF0aW9uV2l0aE9wdGlvbmFs
VW5pb25QYXJhbWV0ZXIob3B0aW9uYWwgKERPTVN0cmluZyBvciBzZXF1ZW5jZTx1bnJlc3RyaWN0
ZWQgZG91YmxlPikgb3B0aW9uYWxVbmlvbik7CiAKQEAgLTM1Miw3ICszNDMsNyBAQCBlbnVtIFRl
c3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgRWxlbWVudD8gZ2V0RWxlbWVu
dEJ5SWQoW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsK
IAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50
IGNvbnRlbnREb2N1bWVudDsKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhj
ZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZV0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIAogICAgIHVuZGVmaW5lZCBjb252ZXJ0
MShUZXN0Tm9kZSB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIGNvbnZlcnQyKFRlc3ROb2RlPyB2YWx1
ZSk7CkBAIC00MTMsMTIgKzQwNCwxMCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAi
a2luZGEtbG93CiAgICAgLy8gUHJvbWlzZSBmdW5jdGlvbgogICAgIFByb21pc2U8dW5kZWZpbmVk
PiB0ZXN0UHJvbWlzZUZ1bmN0aW9uKCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChmbG9hdCBhKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFByb21pc2U8dW5kZWZpbmVkPiB0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
bigpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiB0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlv
bmFsSW50QXJndW1lbnQob3B0aW9uYWwgbG9uZyBhKTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4g
dGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oZmxvYXQgYSk7CiAgICAgUHJvbWlzZTx1bmRl
ZmluZWQ+IHRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKEZldGNoUmVxdWVzdCByZXF1ZXN0
KTsKICAgICBzdGF0aWMgUHJvbWlzZTx1bmRlZmluZWQ+IHRlc3RTdGF0aWNQcm9taXNlRnVuY3Rp
b24oKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHN0YXRpYyBQcm9taXNlPHVuZGVmaW5lZD4g
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oKTsKICAgICBbQ3VzdG9tXSBQ
cm9taXNlPHVuZGVmaW5lZD4gdGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbigpOwogICAgIFtDdXN0
b21dIHN0YXRpYyBQcm9taXNlPHVuZGVmaW5lZD4gdGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5j
dGlvbigpOwogICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNlPHVuZGVmaW5l
ZD4gdGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oKTsKQEAgLTQ0Myw3ICs0MzIs
NiBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgdW5kZWZp
bmVkIGJ1ZmZlclNvdXJjZVBhcmFtZXRlcihCdWZmZXJTb3VyY2UgZGF0YSk7CiAKICAgICBOb2Rl
IHRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBi
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgdGVzdFJldHVyblZhbHVlT3B0aW1pemF0
aW9uV2l0aEV4Y2VwdGlvbihbUmV0dXJuVmFsdWVdIE5vZGUgYSwgTm9kZSBiKTsKIAogICAgIFtF
eHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIGxvbmcgY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0F0dHJpYnV0ZTsKICAgICBbRXhwb3NlZD1Xb3JrZXJdIGF0dHJpYnV0ZSBsb25nIGNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdFN1cHBsZW1lbnRhbC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICAg
ICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyByZWZsZWN0QXR0cmlidXRlOwogCiAgICAg
dW5kZWZpbmVkIHN1cHBsZW1lbnRhbE1ldGhvZDEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0
aG9kMihET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIFRlc3RPYmogc3VwcGxlbWVudGFsTWV0aG9kMihET01TdHJp
bmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CiAgICAgW0N1c3RvbV0gdW5kZWZpbmVkIHN1cHBs
ZW1lbnRhbE1ldGhvZDMoKTsKICAgICBzdGF0aWMgdW5kZWZpbmVkIHN1cHBsZW1lbnRhbE1ldGhv
ZDQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RU
eXBlZGVmcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0VHlwZWRlZnMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC02MywxNCArNjMsMTEgQEAKIAogICAgIFNWR1BPSU5UIHBvaW50RnVuY3Rpb24oKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU0VRVUVOQ0VfT0ZfU1RSSU5HUyBzdHJpbmdTZXF1ZW5j
ZUZ1bmN0aW9uKFNFUVVFTkNFX09GX1NUUklOR1MgdmFsdWVzKTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHNlcXVlbmNlPFNUUklORz4gc3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoc2VxdWVuY2U8
U1RSSU5HPiB2YWx1ZXMpOworICAgIFNFUVVFTkNFX09GX1NUUklOR1Mgc3RyaW5nU2VxdWVuY2VG
dW5jdGlvbihTRVFVRU5DRV9PRl9TVFJJTkdTIHZhbHVlcyk7CisgICAgc2VxdWVuY2U8U1RSSU5H
PiBzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihzZXF1ZW5jZTxTVFJJTkc+IHZhbHVlcyk7CiAKICAg
ICBib29sZWFuIGNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKHNlcXVlbmNlPFRl
c3RFdmVudFRhcmdldD4gc2VxdWVuY2VBcmcpOwogCi0gICAgLy8gRXhjZXB0aW9ucwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG1ldGhvZFdpdGhFeGNlcHRpb24oKTsKLQogICAg
IC8vIEJ1aWx0aW4gVHlwZWRlZnMKICAgICBhdHRyaWJ1dGUgQnVmZmVyU291cmNlIGJ1ZmZlclNv
dXJjZUF0dHI7CiAgICAgYXR0cmlidXRlIERPTVRpbWVTdGFtcCBkb21UaW1lU3RhbXBBdHRyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhwbwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExEaWN0aW9uYXJ5PEV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdzo6RGljdD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZG9Tb21ldGhpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRGljdGlvbmFyeTxF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OkRpY3Q+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmRvU29tZXRoaW5nKCkp
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvd1Byb3RvdHlwZUZ1bmN0aW9uX2RvU29tZXRoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEwLDkgKzQxMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaygqbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDRVJlYWN0aW9ucygpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwubWV0aG9kV2l0aENFUmVhY3Rpb25zKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhD
RVJlYWN0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC00MjgsOSArNDI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29wZSBjdXN0b21FbGVtZW50UmVhY3Rpb25E
aXNhbGxvd2VkU2NvcGU7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDRVJlYWN0aW9u
c05vdE5lZWRlZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVl
ZGVkKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
NSw3ICsyNTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwudmFsdWUoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC52YWx1ZSgpKSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlw
ZUZ1bmN0aW9uX3RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDkgKzM1MSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2
ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0SW50ZXJmYWNlQ2FsbFRy
YWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIl9zKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25JbnRlcmZhY2Uo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25JbnRlcmZhY2UoKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
bl90ZXN0T3BlcmF0aW9uSW50ZXJmYWNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTM3MCw5ICszNjgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0T3Bl
cmF0aW9uQ2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdE9wZXJhdGlvbkNhbGxUcmFjZXI6OnJl
Y29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvblNwZWNpZmllZCJfcyk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uU3BlY2lmaWVkKCk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uU3BlY2lmaWVkKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9w
ZXJhdGlvblNwZWNpZmllZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC00MDAsOSArMzk2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZl
VGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCiAgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJh
Y2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzIl9zLCB7
IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgYSksIFRlc3RJ
bnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgYiksIFRlc3RJbnRlcmZh
Y2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgYykgfSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhXVEZNb3Zl
KGEpLCBXVEZNb3ZlKGIpLCBXVEZNb3ZlKGMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRp
b25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUoYykpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTQyNCw5ICs0MTgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5M
SUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKICAgICAgICAg
VGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlv
bldpdGhOdWxsYWJsZUFyZ3VtZW50Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9j
ZXNzQXJndW1lbnQoaW1wbCwgbm9kZU51bGxhYmxlQXJnKSB9KTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudChXVEZN
b3ZlKG5vZGVOdWxsYWJsZUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhO
dWxsYWJsZUFyZ3VtZW50KFdURk1vdmUobm9kZU51bGxhYmxlQXJnKSk7IH0pKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25f
dGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTQ0OCw5ICs0NDAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtF
TFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVz
dEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldp
dGhWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NB
cmd1bWVudChpbXBsLCB2YXJpYW50QXJnKSB9KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFu
dEFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQo
V1RGTW92ZSh2YXJpYW50QXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvbldpdGhWYXJp
YW50QXJndW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNDcyLDkgKzQ2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RJ
bnRlcmZhY2VDYWxsVHJhY2VyKCkpKQogICAgICAgICBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6
cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3Vt
ZW50Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwg
dmFyaWFudE51bGxhYmxlQXJnKSB9KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLnRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJp
YW50TnVsbGFibGVBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoTnVsbGFi
bGVWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50TnVsbGFibGVBcmcpKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvbl90ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTQ5
NCw5ICs0ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkK
ICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVz
dE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnRPcHRpb25hbEFyZykgfSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE9w
dGlvbmFsVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE9wdGlvbmFsQXJnKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50KFdURk1v
dmUodmFyaWFudE9wdGlvbmFsQXJnKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvbldpdGhP
cHRpb25hbFZhcmlhbnRBcmd1bWVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01MTYsOSArNTAyLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFz
QWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCiAgICAgICAgIFRlc3RJbnRlcmZhY2VD
YWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZh
cmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3Vt
ZW50KGltcGwsIHZhcmlhbnREZWZhdWx0QXJnKSB9KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChXVEZN
b3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0
aERlZmF1bHRWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50RGVmYXVsdEFyZykpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw5ICs2NTQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5taXhpbk9wZXJhdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWl4aW5PcGVyYXRp
b24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9taXhpbk9wZXJhdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MjAs
OSArNzE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwubWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbigpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwubWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uX21peGluQ29uZGl0aW9uYWxPcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzQwLDkgKzczNiw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwubWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25fbWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc2MSw3ICs3
NTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIGltcGxSZXN1bHQgPSBpbXBsLm1peGluUmVzdWx0RmllbGRPcGVyYXRp
b24oKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShpbXBsUmVzdWx0Lm5vZGVz
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShpbXBs
UmVzdWx0Lm5vZGVzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9taXhpblJlc3VsdEZpZWxkT3BlcmF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTc3OSw5ICs3NzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5wYXJ0aWFsTWl4aW5PcGVyYXRp
b25Gcm9tUGFydGlhbCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwucGFydGlhbE1peGluT3BlcmF0aW9uRnJv
bVBhcnRpYWwoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9wYXJ0aWFsTWl4aW5PcGVyYXRpb25G
cm9tUGFydGlhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
Q29uZGl0aW9uYWxsCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMRG91YmxlPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwucnVu
dGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMRG91YmxlPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwucnVudGltZUNvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3J1bnRpbWVDb25kaXRp
b25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBA
IC01NzksNyArNTc5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFs
bAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExQcm9taXNlPElETERvdWJsZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnNldHRpbmdzQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFk
V3JpdGVBdHRyaWJ1dGVQcm9taXNlKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJl
YWRXcml0ZUF0dHJpYnV0ZVByb21pc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDky
LDcgKzEwOTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3Ry
aW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFt
ZSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9nZXRB
dHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtMTExMyw3ICsxMTEzLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKGpzVGVzdERPTUpJVFBybwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5n
Pjo6ZGlyZWN0Q29udmVydCgqbGV4aWNhbEdsb2JhbE9iamVjdCwgZW5jb2RlZE5hbWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RG
TW92ZShuYW1lKSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2l0ZW1Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8geSA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9y
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
aXRlbShXVEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2l0ZW0sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMTE1NCw3
ICsxMTU0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKGpzVGVzdERPTUpJVFBybwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byB5ID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMVW5zaWduZWRTaG9ydD46OmRpcmVj
dENvbnZlcnQoKmxleGljYWxHbG9iYWxPYmplY3QsIGVuY29kZWRZKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBs
Lml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9oYXNBdHRy
aWJ1dGVCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0dHJpYnV0ZSgpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5oYXNB
dHRyaWJ1dGUoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uX2hhc0F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xMTgzLDcgKzExODMsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oanNUZXN0RE9NSklUUHJvCiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaGFzQXR0cmlidXRlKCkpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uX2dldEVsZW1lbnRCeUlkQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTExOTgsNyArMTE5
OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIGVsZW1lbnRJZCA9IGNvbnZlcnQ8SURMUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1v
dmUoZWxlbWVudElkKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRF
bGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25fZ2V0RWxlbWVudEJ5SWQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKGpzVGVzdERP
TUpJVFBybwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBlbGVtZW50SWQgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj46OmRpcmVjdENvbnZlcnQoKmxleGljYWxH
bG9iYWxPYmplY3QsIGVuY29kZWRFbGVtZW50SWQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxFbGVtZW50Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1l
bnRJZCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxF
bGVtZW50Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkpKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbl9nZXRFbGVtZW50c0J5TmFtZUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBA
IC0xMjM0LDcgKzEyMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBlbGVtZW50TmFtZSA9IGNvbnZlcnQ8SURMQXRv
bVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1lKFdU
Rk1vdmUoZWxlbWVudE5hbWUpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1w
bC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9nZXRFbGVt
ZW50c0J5TmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC0xMjU1LDcgKzEyNTUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04oanNUZXN0RE9NSklUUHJvCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIGVsZW1lbnROYW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURM
QXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj46OmRpcmVjdENvbnZlcnQoKmxleGljYWxH
bG9iYWxPYmplY3QsIGVuY29kZWRFbGVtZW50TmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3Zl
KGVsZW1lbnROYW1lKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50
ZXJmYWNlPE5vZGVMaXN0Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVs
ZW1lbnROYW1lKSkpKTsKIH0KIAogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RE9NSklUOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0
eS5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
NCw5ICsyMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgYXV0byBuZXh0Q2hpbGQgPSBjb252ZXJ0PElETEludGVyZmFjZTxO
b2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAs
ICJuZXh0Q2hpbGQiLCAiVGVzdERvbWFpblNlY3VyaXR5IiwgImV4Y2l0aW5nRnVuY3Rpb24iLCAi
Tm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZXhjaXRpbmdG
dW5jdGlvbigqbmV4dENoaWxkKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmV4Y2l0aW5nRnVuY3Rpb24oKm5l
eHRDaGlsZCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3REb21h
aW5TZWN1cml0eVByb3RvdHlwZUZ1bmN0aW9uX2V4Y2l0aW5nRnVuY3Rpb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjU2
LDkgKzI1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICBhdXRvIG1lc3NhZ2UgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1
cm4gaW1wbC5wb3N0TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlRnVuY3Rpb25f
cG9zdE1lc3NhZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtMjc3LDkgKzI3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHBhcmFtID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2Qo
V1RGTW92ZShwYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3Zl
KHBhcmFtKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2QyQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RG9tYWluU2VjdXJpdHk+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtMjk1LDkgKzI4OSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRv
IHBhcmFtMiA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInBhcmFtMiIsICJUZXN0RG9tYWluU2Vj
dXJpdHkiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpwYXJhbTEsICpwYXJhbTIpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqcGFyYW0xLCAqcGFyYW0yKTsgfSkpKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERvbWFpblNlY3Vy
aXR5UHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hlcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RG9tYWluU2VjdXJpdHk+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NDMsOSArNDQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oV1RG
TW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRCeVNldHRpbmdPcGVyYXRp
b24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbl9lbmFibGVkQnlTZXR0
aW5nT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDI1ICsxNTUsMjUgQEAg
SlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0bwogCiBib29sIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUo
KSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRl
eC52YWx1ZSgpKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8
Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47
Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJv
cGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5u
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAg
ICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2li
bGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3RF
dmVudFRhcmdldD4oW10gKEpTVGVzdEV2ZW50VGFyZ2V0JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNl
PE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE4MywxMSArMTgzLDEzIEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5
U2wKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7
CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewot
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xOTUsMTQgKzE5NywxMiBAQCBib29sIEpTVGVz
dEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAgfQogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1
dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVl
KHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rv
cjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3RFdmVudFRhcmdldD4oW10gKEpTVGVzdEV2ZW50VGFyZ2V0
JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRv
KSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETElu
dGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBpbmRleCA9
IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pdGVtKFdURk1vdmUoaW5kZXgpKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLml0ZW0oV1RGTW92ZShpbmRleCkpKSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbl9pdGVtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE3IEBACiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKKyNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29y
bGQuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5j
bHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJl
cnMuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKQEAgLTE1NjUsOSArMTU2OCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQ
YXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5yZWd1bGFy
T3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5yZWd1bGFyT3Bl
cmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3JlZ3VsYXJPcGVyYXRp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtMTU4Niw5ICsxNTg3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVy
YXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogI2VuZGlmCkBAIC0x
NjA0LDkgKzE2MDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92ZSh0ZXN0
UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oV1RGTW92
ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogI2VuZGlmCkBAIC0xNjUyLDkgKzE2NDksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBUZXN0
R2xvYmFsT2JqZWN0OjplbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKFdURk1vdmUodGVz
dFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdEdsb2JhbE9iamVjdDo6ZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpYyhXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbl9lbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE2NzYsOSArMTY3MSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZChXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbl9lbmFibGVkSW5TcGVjaWZpY1dvcmxkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE2OTgsOSArMTY5MSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoV1RGTW92ZSh0
ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2Vu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE3
MjAsOSArMTcxMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZXNFbmFibGVkKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5lbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoV1RGTW92ZSh0ZXN0UGFyYW0p
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZXNFbmFibGVkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTE3MzgsOSArMTcyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RQcml2YXRl
RnVuY3Rpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RQcml2YXRlRnVuY3Rpb24oKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25fdGVzdFByaXZhdGVGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNzU3LDkgKzE3NDQsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW1wbC5jYWxjdWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNl
Y3JldFJlc3VsdChXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fY2FsY3VsYXRlU2Vj
cmV0UmVzdWx0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTE3NzQsNyArMTc1OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xl
YW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFNlY3JldEJvb2xl
YW4oKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25fZ2V0U2VjcmV0Qm9vbGVhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0xNzkwLDcgKzE3NzUs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZl
YXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvbl90ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1
MywxMyBAQCB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlCiAKIGJvb2wg
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5k
ZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgp
Lml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTE2NywxMSArMTY5LDE0IEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6Z2UKIAogYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAg
IGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEg
KzE1MywxMyBAQCB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvCiAKIGJv
b2wgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNjcsMTEgKzE2OSwxNCBAQCBib29sIEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvCiAKIGJvb2wgSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
bmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24qPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9B
UlJBWV9JTkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgp
Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkp
OworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgp
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MCwxMSArMTYwLDEzIEBAIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyOjoKIAogYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUo
KSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVj
dC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE3NCwxMSArMTc2LDE0IEBA
IGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjoKIAogYm9vbCBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFY
X0FSUkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4
KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRl
eCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTI4NSw5ICsyOTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBXVEZNb3Zl
KHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpLCBX
VEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9pbmRleGVkU2V0
dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODczLDkgKzg3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1peGluT3Bl
cmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5taXhpbk9wZXJhdGlvbigpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25f
bWl4aW5PcGVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTM5LDkgKzkzNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1peGluQ29u
ZGl0aW9uYWxPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1peGluQ29uZGl0aW9uYWxPcGVy
YXRpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uX21peGluQ29uZGl0aW9uYWxPcGVyYXRpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
OTU5LDkgKzk1NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlv
bigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwubWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbl9taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
OTgwLDcgKzk3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwubWl4aW5SZXN1bHRGaWVs
ZE9wZXJhdGlvbigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGltcGxSZXN1
bHQubm9kZXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZN
b3ZlKGltcGxSZXN1bHQubm9kZXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC05OTgsOSArOTkyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwucGFydGlhbE1peGluT3BlcmF0aW9u
RnJvbVBhcnRpYWwoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21Q
YXJ0aWFsKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbl9wYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC0xMDE4LDkgKzEwMTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6
c3VwcGxlbWVudGFsTWV0aG9kMShpbXBsKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBXZWJDb3JlOjpUZXN0U3VwcGxl
bWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fc3VwcGxlbWVu
dGFsTWV0aG9kMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC0xMDgzLDkgKzEwNzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFdlYkNvcmU6
OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDQoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBXZWJD
b3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0
aW9uX3N1cHBsZW1lbnRhbE1ldGhvZDQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IkpTTm9kZS5oIgotI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CkBAIC01NCw3ICs1Myw2IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAvLyBGdW5jdGlvbnMKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl92
b2lkT3BlcmF0aW9uKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fdGhyb3dpbmdPcGVyYXRpb24p
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl9jdXN0b21PcGVyYXRpb24pOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3RvckZ1bmN0aW9uX3N0YXRpY09wZXJhdGlvbik7CiAKQEAgLTExMSw3ICsxMDksNiBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5CiAgICAgeyAiY3VzdG9tR2V0dGVy
U2V0dGVyU3RyaW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9jdXN0b21H
ZXR0ZXJTZXR0ZXJTdHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dF9jdXN0b21HZXR0ZXJTZXR0ZXJTdHJpbmdBdHRyaWJ1dGUpIH0gfSwKICAgICB7ICJub2RlQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9ub2RlQXR0cmlidXRlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rfbm9kZUF0dHJpYnV0ZSkgfSB9LAogICAgIHsgInZvaWRP
cGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25f
dm9pZE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ0aHJvd2luZ09wZXJh
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVGdW5jdGlvbl90aHJv
d2luZ09wZXJhdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJjdXN0b21PcGVyYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fY3VzdG9t
T3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIkNPTlNUQU5UMSIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRy
aW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAogICAgIHsgIkNPTlNUQU5UMiIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LApAQCAtMzAyLDkgKzI5OSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnZv
aWRPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnZvaWRPcGVyYXRpb24oKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
UHJvdG90eXBlRnVuY3Rpb25fdm9pZE9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMTIsMzIgKzMwNyw2IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RMZWdhY3lOb0kKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uX3ZvaWRPcGVyYXRpb25Cb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInZvaWRPcGVyYXRpb24iKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25fdGhyb3dpbmdPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBh
dXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9i
amVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRl
eHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwotICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBh
dXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm9iakFyZyIsICJUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QiLCAidGhyb3dpbmdPcGVyYXRpb24iLCAiVGVzdE9iaiIpOyB9
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudGhyb3dpbmdPcGVyYXRpb24oKmNv
bnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZUZ1bmN0aW9u
X3Rocm93aW5nT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdFByb3RvdHlwZUZ1bmN0aW9uX3Rocm93aW5nT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJ0aHJvd2luZ09wZXJhdGlvbiIpOwotfQotCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQ
cm90b3R5cGVGdW5jdGlvbl9jdXN0b21PcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpAQCAtMzU4LDkgKzMyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0OjpzdGF0aWNPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3Q6OnN0YXRpY09wZXJhdGlvbigpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvckZ1
bmN0aW9uX3N0YXRpY09wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MiwxNyArMTYyLDE2IEBAIHZvaWQgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVzdHIKIAogYm9vbCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5n
IEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47Ci0gICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25h
bDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6
OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFj
Y2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
PihbXSAoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhp
c09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZh
Y2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMTgyLDE4ICsxODEsMTcgQEAgYm9vbCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpn
ZXRPdwogYm9vbCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlw
ZSA9IElETEludGVyZmFjZTxOb2RlPjsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0
byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUo
cmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9y
PEdldHRlcklETFR5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KFtdIChKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsNyArMjM1
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5uYW1lZEl0ZW0o
V1RGTW92ZShuYW1lKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5uYW1lZEl0
ZW0oV1RGTW92ZShuYW1lKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25fbmFtZWRJdGVtLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBM
aWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9y
d2FyZEdldFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3Rl
ZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGZvcndhcmRHZXRUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2dldCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0y
NDEsNyArMjQxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9N
YXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RG
TW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
Zm9yd2FyZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNh
c3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25faGFzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI1NSw3ICsyNTUs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRF
bnRyaWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVk
VGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndh
cmRFbnRyaWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2Fz
dGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25fZW50cmllcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlr
ZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkS2V5c1RvTWFwTGlr
ZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
X2tleXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQW55PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVh
Y2hUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlz
LCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGZvcndhcmRGb3JFYWNoVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2ZvckVh
Y2gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55
Pihmb3J3YXJkU2V0VG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRTZXRUb01hcExpa2UoKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSksIFdU
Rk1vdmUodmFsdWUpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbl9zZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzM4LDkgKzMzOCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgZm9yd2FyZENsZWFyVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAqY2FzdGVkVGhpcyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZENs
ZWFyVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhp
cykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25fY2xlYXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzU5LDcgKzM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmREZWxldGVUb01hcExpa2UoKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uX2RlbGV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw5ICsyNTEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5jbGVhcigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY2xlYXIoKTsgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9jbGVhciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNzIsNyArMjcwLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkR2V0VG9NYXBMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEdldFRvTWFw
TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1v
dmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZ2V0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI5
MSw3ICsyODksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgYXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRIYXNUb01h
cExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZN
b3ZlKGtleSkpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBm
b3J3YXJkSGFzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9o
YXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtMzA1LDcgKzMwMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVG
dW5jdGlvbl9lbnRyaWVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMxOSw3ICszMTcsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9NYXBMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJv
dG90eXBlRnVuY3Rpb25fa2V5cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMzMsNyArMzMxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9NYXBMaWtlKCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRWYWx1ZXNUb01hcExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNQcm90b3R5cGVGdW5jdGlvbl92YWx1ZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzUyLDcgKzM1MCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2sp
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEZv
ckVhY2hUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRU
aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25f
Zm9yRWFjaCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC0zNzEsNyArMzY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
QW55Pihmb3J3YXJkRGVsZXRlVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZGVsZXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU0LDI1ICsxNTQsMjUgQEAgdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aQogCiBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcio+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlm
IChpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CisgICAgICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
ICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIHVzaW5nIEdldHRlcklE
TFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8m
IHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0
ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJl
c3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxH
ZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KFtd
IChKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXImIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTE4MiwxMSArMTgyLDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGkKIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9J
TkRFWCkpIHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCks
IHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xOTQsMTQg
KzE5NiwxMiBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAg
fQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwog
ICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJG
dW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRp
b25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5
cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRl
bUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1
dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZh
bHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDI1ICsxNTQsMjUgQEAgdm9pZCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24qPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndy
YXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0
ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9w
ZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KFtdIChKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAg
ICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTgyLDExICsxODIsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
ZwogYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24qPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAg
ICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpOworICAgICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xOTQsMTQgKzE5NiwxMiBAQCBi
b29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgfQogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdl
dHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10g
KGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1
bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZh
bHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxh
YmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVu
Y3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbj4oW10gKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRv
KSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MywyNSArMTYzLDI1IEBAIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW4KIAogYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4LnZh
bHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgdXNpbmcg
R2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBb
XSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Cisg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JG
dW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyPihbXSAoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXImIHRo
aXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsK
KyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE5MSwxMSArMTkxLDEzIEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIGJvb2wgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKExJS0VMWShpbmRl
eCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0
ZW0oaW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5p
dGVtKGluZGV4KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMjAzLDE0ICsyMDUsMTIgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbgogICAgIH0KICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwot
ICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3Bl
cnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAg
aWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxl
TmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMzYwLDkgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUo
dmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1v
dmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25fbmFtZWRT
ZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtMzg1LDkgKzM4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShp
bmRleCksIFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RG
TW92ZShpbmRleCksIFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlRnVuY3Rpb25faW5kZXhlZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxNyArMTUzLDE2IEBAIHZvaWQg
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZXMKIAogYm9vbCBKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4g
T3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJ
RExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0
eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyJiB0aGlzT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTczLDE4ICsxNzIsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6Omdl
dAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0
ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+KFtdIChKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3NDc1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxNyArMTUz
LDE2IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KIAogYm9vbCBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERP
TVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwg
YXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUs
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPihbXSAoSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNzMsMTggKzE3MiwxNyBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiBib29sIEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJp
bmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8g
cHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAg
ICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZp
c2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4oW10gKEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAt
PiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5u
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0p
OwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTcgKzE1OSwxNiBAQCB2b2lkIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkCiAKIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+
KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBn
ZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAt
PiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRl
cklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3Bl
cnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyJiB0aGlz
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTc5LDE4ICsxNzgsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcjo6ZwogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihvYmplY3QpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBH
ZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtd
IChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxW
YWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1
bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+KFtd
IChKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhp
c09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
ewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1Niw5ICsyNTQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm5hbWVkRGVsZXRlcihXVEZNb3ZlKG5hbWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm5hbWVk
RGVsZXRlcihXVEZNb3ZlKG5hbWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25fbmFt
ZWREZWxldGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDI1ICsxNTQsMjUgQEAgdm9pZCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogCiBib29sIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFs
dWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElE
TERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVj
dCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5
cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPihbXSAoSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xODIsMTEgKzE4MiwxMyBAQCBib29s
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiBib29sIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
bmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSkgewogICAgICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSk7
CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xOTQsMTQgKzE5NiwxMiBAQCBib29sIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgfQogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0
ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4oW10gKEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdU
Rk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTcgKzE1MywxNiBAQCB2b2lkIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGg6OmRlc3Ryb3koCiAKIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgqPihvYmplY3QpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXNP
YmplY3QpLCBwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGg+KFtdIChKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoJiB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0od29ybGRGb3JET01PYmpl
Y3QodGhpc09iamVjdCksIHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3MywxOCArMTcyLDE3IEBAIGJvb2wg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKIGJvb2wgSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCo+
KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBP
cHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0od29ybGRG
b3JET01PYmplY3QodGhpc09iamVjdCksIHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQp
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVy
SURMVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4oW10gKEpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGgmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0
eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bSh3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KSwgcHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTcgKzE1
MywxNiBAQCB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpkZXN0CiAKIGJvb2wg
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllcio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0g
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVy
dHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBp
ZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1
cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURM
VHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVO
YW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcj4oW10gKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyJiB0
aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7
CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMTczLDE4ICsxNzIsMTcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcjo6Z2V0TwogYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIqPihvYmplY3QpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0
b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+KFtdIChKU1Rl
c3ROYW1lZEdldHRlck5vSWRlbnRpZmllciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53
cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDE3ICsxNTksMTYgQEAg
dm9pZCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpkZQogCiBib29sIEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5h
bWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlw
ZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldHRlck5h
bWUocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAo
IUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4g
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlw
ZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1l
ZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciYg
dGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykg
eworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFwcGVkKCkuZ2V0dGVyTmFtZShwcm9wZXJ0
eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0xNzksMTggKzE3OCwxNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXI6OmdlCiBib29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIqPihvYmplY3QpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2lu
ZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkuZ2V0dGVyTmFtZShwcm9wZXJ0eU5hbWVUb0F0
b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNO
dWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07
CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNz
b3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+
KFtdIChKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0
aGlzT2JqZWN0LndyYXBwZWQoKS5nZXR0ZXJOYW1lKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIzNCw3ICsy
MzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW1wbC5nZXR0ZXJOYW1lKFdURk1vdmUobmFtZSkpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldHRlck5hbWUoV1RGTW92
ZShuYW1lKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25fZ2V0dGVyTmFtZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Mywx
NyArMTUzLDE2IEBAIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlc3QKIAog
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmlu
ZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBw
cm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAg
ICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAg
IHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0
ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlz
aWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1
dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZh
bHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3MywxOCArMTcyLDE3IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlu
ZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIm
IHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8p
IHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDE3ICsx
NTMsMTYgQEAgdm9pZCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiBib29s
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERP
TVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwg
YXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KFtdIChKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0x
NzMsMTggKzE3MiwxNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246
CiBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qPihvYmplY3QpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0
b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4oW10g
KEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24mIHRoaXNPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRo
aXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU5LDE3ICsxNTksMTYgQEAgdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyOjpkZQogCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKj4ob2JqZWN0KTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcg
R2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBb
XSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Cisg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JG
dW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+KFtd
IChKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0xNzksMTggKzE3OCwxNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXI6OmdlCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1
c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjpp
c051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nl
c3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cj4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXImIHRoaXNPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTMxNSw5ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5uYW1lZFNldHRlcihXVEZN
b3ZlKG5hbWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25f
bmFtZWRTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsMjUgKzE2MywyNSBAQCB2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5n
dGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5k
ZXgudmFsdWUoKSkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgp
LmluZGV4ZWRTZXR0ZXIoaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgdXNpbmcgR2V0
dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAo
YXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFs
dWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAg
YXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5j
dG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+KFtd
IChKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0
aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nl
c3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0xOTEsMTEgKzE5MSwxMyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXI6CiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIq
PihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAg
ICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleCkpOworICAgICAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIoaW5kZXgpKTsK
KyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjAzLDE0ICsyMDUsMTIgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIH0KICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBl
ID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlz
T2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09i
amVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQp
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVy
SURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4oW10gKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXImIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7CisgICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAg
ICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRv
SlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTM0MCw5ICszNDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5uYW1lZFNldHRlcihXVEZNb3ZlKG5hbWUpLCBX
VEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25fbmFtZWRTZXR0
ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtMzYyLDcgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExV
bnNpZ25lZExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1v
dmUoaW5kZXgpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5pbmRleGVkU2V0dGVyKFdURk1vdmUoaW5kZXgpKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90
b3R5cGVGdW5jdGlvbl9pbmRleGVkU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5j
cHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYzLDI1ICsxNjMsMjUgQEAgdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQQogCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIHsKICAgICAgICAgaWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pbmRleGVkU2V0dGVy
KGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5pbmRleGVkU2V0dGVyKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+KFtdIChKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xOTEsMTEgKzE5MSwxMyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkp
IHsKICAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaW5kZXhlZFNldHRlcihpbmRleCkpOwor
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmluZGV4ZWRTZXR0ZXIo
aW5kZXgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC0yMDMsMTQgKzIwNSwxMiBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBCiAgICAgfQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAg
YXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlO
YW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAo
IUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4g
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlw
ZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1l
ZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlciYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMzYwLDkgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1vdmUo
dmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm5hbWVkU2V0dGVyKFdURk1vdmUobmFtZSksIFdURk1v
dmUodmFsdWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbl9uYW1l
ZFNldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC0zODMsOSArMzgxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5kZXhlZFNldHRlcihXVEZNb3Zl
KGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuaW5kZXhlZFNldHRlcihX
VEZNb3ZlKGluZGV4KSwgV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uX2luZGV4ZWRTZXR0ZXIyQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC0zOTgsNyArMzk0LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RGTW92ZShpbmRleCkpKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluZGV4ZWRTZXR0ZXIoV1RG
TW92ZShpbmRleCkpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0
aW9uX2luZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTMsMTcgKzE1MywxNiBAQCB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlCiAKIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
PiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFH
ZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQ
cm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgfSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xNzMsMTggKzE3MiwxNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0
ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9w
ZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oW10gKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IC0+IGRlY2x0eXBlKGF1dG8pIHsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qud3JhcHBlZCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAg
fSk7CiAgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nywx
NyArMTc3LDE2IEBAIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWEKIAog
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihvYmpl
Y3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0
aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExU
eXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgfTsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0
ZW1BY2Nlc3NvckZ1bmN0b3I8R2V0dGVySURMVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIH0pOwogICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xOTcsMTggKzE5NiwxNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
czo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJs
ZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPEdldHRlcklETFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oW10gKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyYgdGhpc09iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzUwLDkgKzM0OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnVuZm9yZ2VhYmxlT3Bl
cmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvbl91bmZvcmdlYWJsZU9wZXJhdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NywxNyArMTc3LDE2IEBAIHZvaWQgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWEKIAogYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1
dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwot
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1cm4g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTE5NywxOCArMTk2LDE3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWEKIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OworICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcjxHZXR0ZXJJRExUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPihbXSAoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gZGVjbHR5cGUoYXV0bykgeworICAgICAgICByZXR1
cm4gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKKyAgICB9KTsKICAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTMyNyw5ICszMjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC51bmZvcmdlYWJs
ZU9wZXJhdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5j
ZUZ1bmN0aW9uX3VuZm9yZ2VhYmxlT3BlcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDE3IEBACiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
KyNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252
ZXJ0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2luY2x1
ZGUgIkpTRE9NQ29udmVydFByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01JdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
LmgiCkBAIC0zMTIsOSArMzE2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudGVzdFdvcmtlclByb21pc2UoV1RGTW92
ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLnRlc3RXb3JrZXJQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
X3Rlc3RXb3JrZXJQcm9taXNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTMyOSw5ICszMzEsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jYWxj
dWxhdGVTZWNyZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChX
VEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl9jYWxjdWxhdGVTZWNyZXRSZXN1bHQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
MzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4o
aW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFNlY3JldEJvb2xlYW4oKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl9nZXRTZWNyZXRC
b29sZWFuLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEJvb2xlYW4+KGltcGwudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RGZWF0
dXJlR2V0U2VjcmV0Qm9vbGVhbigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NTUsNyArMTQ1NSw2IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE8KIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRo
VVNWU3RyaW5nQXJnKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk7CkBAIC0xNDY0
LDkgKzE0NjMsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
c2VyaWFsaXplZFZhbHVlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhSZWNvcmQpOwotc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4
Y2VwdGlvbik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyk7Ci1zdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2N1c3RvbU1ldGhvZCk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9j
dXN0b21NZXRob2RXaXRoQXJncyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wcml2YXRlTWV0aG9kKTsKQEAgLTE0NzUsMTEgKzE0
NzEsOCBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPCiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9yZW1v
dmVFdmVudExpc3RlbmVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lkKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3Rh
dGVPYmopOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24pOwotc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0
ZU9iakV4Y2VwdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aERvY3VtZW50QXJndW1l
bnQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fd2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQpOwpAQCAtMTU3NiwxMSArMTU2OSw5
IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE8KIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2FueSk7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl90ZXN0UHJvbWlzZUZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudCk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VP
dmVybG9hZGVkRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdEN1c3Rv
bVByb21pc2VGdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24p
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fdGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24pOwpAQCAtMTU5Myw3ICsx
NTg0LDYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Twogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3Bl
cmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9idWZmZXJTb3VyY2VQ
YXJhbWV0ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uKTsKLXN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RSZXR1
cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0Z1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5j
dGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVuY3Rpb24p
OwpAQCAtMTkzNCw3ICsxOTI0LDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE9iakNvbgogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICAg
ICB7ICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAg
eyAidGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pLCAo
aW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlv
biIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1
bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIApAQCAtMjE3Nyw3ICsyMTY2LDYgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgIm1ldGhvZFdp
dGhTdGFuZGFsb25lRW51bUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aFN0YW5kYWxvbmVFbnVtQXJnKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhP
cHRpb25hbEVudW1BcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9w
dGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSksIChpbnRwdHJfdCkgKDAp
IH0gfSwKLSAgICB7ICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKSwg
KGludHB0cl90KSAoMikgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVU1ZTdHJpbmdBcmcpLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcpLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVU1ZT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKSwgKGludHB0cl90KSAoMSkgfSB9LApA
QCAtMjE4Niw5ICsyMTc0LDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alBybwogICAgIHsgIm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInNl
cmlhbGl6ZWRWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fc2VyaWFsaXplZFZhbHVl
KSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhSZWNvcmQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhSZWNvcmQpLCAoaW50cHRyX3QpICgxKSB9IH0s
Ci0gICAgeyAibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJtZXRob2RX
aXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0
aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAg
eyAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCksIChpbnRwdHJfdCkg
KDApIH0gfSwKICAgICB7ICJjdXN0b21NZXRob2QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2N1c3RvbU1ldGhvZCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJjdXN0b21NZXRob2RX
aXRoQXJncyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY3VzdG9tTWV0aG9kV2l0aEFyZ3Mp
LCAoaW50cHRyX3QpICgzKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjMpCkBAIC0yMjA2LDEx
ICsyMTkxLDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAg
IHsgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZUV2ZW50TGlzdGVuZXIpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAid2l0aEV4ZWNTdGF0
ZVZvaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lkKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAogICAgIHsgIndpdGhFeGVjU3RhdGVPYmoiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVPYmopLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAg
eyAid2l0aEV4ZWNTdGF0ZVZvaWRFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X3dpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsg
IndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dp
dGhFeGVjU3RhdGVPYmpFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSksIChpbnRwdHJfdCkg
KDApIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9i
akV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAg
ICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4
ZWNTdGF0ZVdpdGhTcGFjZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAid2l0aERvY3Vt
ZW50QXJndW1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhEb2N1bWVudEFyZ3Vt
ZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIndpdGhDYWxsZXJEb2N1bWVudEFyZ3Vt
ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVu
dCksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTIzMDUsNyArMjI4Nyw2IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJhbnkiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX2FueSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlz
ZUZ1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9u
KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxv
YXRBcmd1bWVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50KSwgKGludHB0cl90KSAoMSkgfSB9LAotICAgIHsgInRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVu
dCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidGVzdEN1c3RvbVByb21pc2VGdW5j
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdEN1c3RvbVByb21pc2VGdW5jdGlv
biksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTIzMjEsNyArMjMwMiw2IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJvcGVyYXRpb25XaXRoRXh0ZXJu
YWxEaWN0aW9uYXJ5UGFyYW1ldGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRp
b25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAog
ICAgIHsgImJ1ZmZlclNvdXJjZVBhcmFtZXRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
YnVmZmVyU291cmNlUGFyYW1ldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uKSwgKGludHB0cl90KSAoMikgfSB9LAotICAgIHsgInRlc3RS
ZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX3Rlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24pLCAoaW50cHRy
X3QpICgyKSB9IH0sCiAgICAgeyAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9u
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
RnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dvcmtlckZ1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25h
bGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVu
Y3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0yNTAwLDExICsyNDgwLDEzIEBAIHZvaWQg
SlNUZXN0T2JqOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWwKIAogYm9vbCBKU1Rlc3RPYmo6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgewogICAgICAgICBpZiAoaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5udWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoaW5kZXgudmFsdWUoKSkpOworICAgICAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5udWxsYWJs
ZVN0cmluZ1NwZWNpYWxNZXRob2QoaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0yNTE0LDExICsyNDk2LDE0IEBAIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmoKIAogYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9i
aio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkgewogICAg
ICAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubnVsbGFibGVTdHJpbmdTcGVj
aWFsTWV0aG9kKGluZGV4KSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExOdWxs
YWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgdGhp
c09iamVjdC0+d3JhcHBlZCgpLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChpbmRleCkpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAg
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC01MDA2LDcgKzQ5OTEsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0T2JqX3Rlc3RSZWFkCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMVW5kZWZp
bmVkPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwudGVzdFJlYWRPbmx5Vm9pZFByb21pc2VBdHRyaWJ1dGUoKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlzZTxJRExVbmRl
ZmluZWQ+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UmVh
ZE9ubHlWb2lkUHJvbWlzZUF0dHJpYnV0ZSgpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0T2JqX3Rlc3RSZWFkT25seVZvaWRQcm9taXNlQXR0cmlidXRlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTUwMTksNyArNTAwNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpfdGVzdFJlYWQKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMUHJvbWlzZTxJRExJbnRlcmZhY2U8
VGVzdE5vZGU+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIGltcGwudGVzdFJlYWRPbmx5UHJvbWlzZUF0dHJpYnV0ZSgpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExQcm9taXNlPElETElu
dGVyZmFjZTxUZXN0Tm9kZT4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC50ZXN0UmVhZE9ubHlQcm9taXNlQXR0cmlidXRlKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfdGVzdFJlYWRPbmx5UHJvbWlzZUF0dHJpYnV0ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC01Mzg5LDkgKzUzNzQsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB0ZXN0
UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZW5hYmxl
ZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQog
CiAjZW5kaWYKQEAgLTU0MDcsOSArNTM5MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZl
cnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiAjZW5kaWYKQEAgLTU0NTUs
OSArNTQzNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIFRlc3RPYmo6OmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoV1RGTW92
ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjplbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljKFdURk1vdmUodGVzdFBhcmFtKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX2VuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb25TdGF0aWMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTQ3OSw5ICs1NDU4LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdGVzdFBh
cmFtID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5lbmFibGVkSW5TcGVj
aWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChXVEZNb3ZlKHRlc3RQYXJhbSkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVu
YWJsZWQoV1RGTW92ZSh0ZXN0UGFyYW0pKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2VuYWJsZWRJblNwZWNpZmljV29ybGRX
aGVuUnVudGltZUZlYXR1cmVFbmFibGVkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTU1MDEsOSArNTQ3OCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwud29y
bGRTcGVjaWZpY01ldGhvZChXVEZNb3ZlKHRlc3RQYXJhbSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwud29y
bGRTcGVjaWZpY01ldGhvZChXVEZNb3ZlKHRlc3RQYXJhbSkpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd29ybGRTcGVjaWZp
Y01ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC01NTE4LDkgKzU0OTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jYWxjdWxhdGVTZWNy
ZXRSZXN1bHQoV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExEb3VibGU+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNhbGN1bGF0ZVNlY3JldFJlc3VsdChXVEZNb3ZlKHBy
b21pc2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NTM1LDcgKzU1
MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZ2V0
U2VjcmV0Qm9vbGVhbigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRTZWNyZXRCb29sZWFuKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9nZXRTZWNyZXRCb29sZWFuLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTU1NTEsNyArNTUyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
Qm9vbGVhbj4oaW1wbC50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVh
bj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
NTU2OCw5ICs1NTQxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5kZWZpbmVkTWV0aG9kKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC51bmRlZmluZWRNZXRob2QoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3VuZGVmaW5lZE1ldGhvZCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01
NTk2LDkgKzU1NjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMik7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ1bmRlZmluZWRNZXRob2RXaXRoQXJncyIsICJU
ZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC51bmRlZmlu
ZWRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpB
cmcpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwudW5kZWZpbmVkTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25n
QXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3VuZGVmaW5lZE1ldGhvZFdp
dGhBcmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTU2MTMsNyArNTU4Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJ5dGU+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmJ5dGVNZXRob2QoKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2J5dGVNZXRob2Qs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpAQCAtNTYzOSw3ICs1NjA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJ
bnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAiYnl0ZU1ldGhvZFdpdGhBcmdz
IiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RGTW92
ZShieXRlQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuYnl0ZU1ldGhvZFdpdGhBcmdzKFdURk1v
dmUoYnl0ZUFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9ieXRlTWV0aG9kV2l0
aEFyZ3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNTY1NCw3ICs1NjIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExPY3RldD4oaW1wbC5vY3RldE1ldGhvZCgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwub2N0ZXRNZXRob2QoKSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29jdGV0TWV0
aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTU2ODAsNyArNTY0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8
SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZh
bHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm9jdGV0TWV0aG9kV2l0
aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3RldD4oaW1wbC5vY3RldE1ldGhvZFdpdGhBcmdz
KFdURk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExPY3Rl
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwub2N0ZXRNZXRob2RXaXRo
QXJncyhXVEZNb3ZlKG9jdGV0QXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29j
dGV0TWV0aG9kV2l0aEFyZ3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTY5NSw3ICs1NjY0LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBsLmxvbmdNZXRob2QoKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubG9uZ01ldGhvZCgpKSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bG9uZ01ldGhvZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC01NzIxLDcgKzU2OTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgYXV0byBvYmpBcmcgPSBj
b252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25nTWV0
aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBsLmxvbmdNZXRob2RXaXRo
QXJncyhXVEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sb25nTWV0aG9kV2l0
aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2xv
bmdNZXRob2RXaXRoQXJncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01NzM2LDcgKzU3MDUsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRob2QoKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm9iak1ldGhvZCgpKSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb2JqTWV0aG9k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTU3NjIsNyArNTczMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVl
KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdz
IiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZFdpdGhBcmdz
KFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVy
ZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5vYmpNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdB
cmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb2JqTWV0aG9kV2l0aEFyZ3MsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtNTc3Nyw3ICs1NzQ2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExM
b25nPihpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uX3VuZm9yZ2Vh
YmxlTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTU3OTcsOSArNTc2Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGFyZyA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdU
Rk1vdmUoYXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZyhXVEZNb3ZlKGFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTgxOSw5ICs1Nzg2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gcmVzb2x2
ZXIgPSBjb252ZXJ0PElETEludGVyZmFjZTxYUGF0aE5TUmVzb2x2ZXI+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgInJlc29sdmVyIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIsICJYUGF0aE5TUmVz
b2x2ZXIiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKnJlc29sdmVyKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1l
dGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKnJlc29sdmVyKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhv
ZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTgzNiw3ICs1ODAxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExO
dWxsYWJsZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbnVsbGFibGVTdHJpbmdNZXRob2QsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtNTg1MCw3ICs1ODE1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIFRlc3RP
Ymo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0
cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpudWxsYWJs
ZVN0cmluZ1N0YXRpY01ldGhvZCgpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9udWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC01ODcwLDcgKzU4MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8SURMVW5z
aWduZWRMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51
bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLm51bGxhYmxl
U3RyaW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGluZGV4KSkpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERP
TVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxl
U3RyaW5nU3BlY2lhbE1ldGhvZChXVEZNb3ZlKGluZGV4KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9udWxsYWJsZVN0cmluZ1Nw
ZWNpYWxNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNTg5MCw5ICs1ODU1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gZW51bUFyZyA9
IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11
c3RCZUVudW1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImVudW1BcmciLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwubWV0aG9kV2l0aEVudW1BcmcoV1RGTW92ZShlbnVtQXJnKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5tZXRob2RXaXRoRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhFbnVtQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTU5MTIsOSArNTg3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGVudW1BcmcgPSBj
b252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZUVudW1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImVudW1B
cmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmciLCBleHBlY3Rl
ZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KCkpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVt
QXJnKFdURk1vdmUoZW51bUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFN0YW5kYWxv
bmVFbnVtQXJnKFdURk1vdmUoZW51bUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aFN0YW5kYWxvbmVF
bnVtQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTU5MzIsOSArNTg5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGVudW1BcmcgPSBhcmd1bWVudDAudmFs
dWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETEVudW1lcmF0aW9uPFRl
c3RPYmo6OkVudW1UeXBlPj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURM
RW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExF
bnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRl
c3RPYmo6OkVudW1UeXBlPigpKTsgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKFdURk1vdmUoZW51bUFyZykpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX21ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTk1Miw5ICs1OTExLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8g
ZW51bUFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBUZXN0T2JqOjpFbnVt
VHlwZTo6RW51bVZhbHVlMSA6IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5
cGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJn
QW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVt
VHlwZT4oKSk7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoZW51bUFyZykpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShXVEZN
b3ZlKGVudW1BcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNTk2MiwyOSArNTkxOSw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0Fu
ZERlZmF1bHRWYWx1ZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0ckFyZyA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDEsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzIiwgIlRlc3RPYmoiKTsgfSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
Lm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoV1RGTW92ZShzdHJBcmcpLCAqb2Jq
QXJnKSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoVVNWU3RyaW5nQXJnQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBA
IC01OTk3LDkgKzU5MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBjb252ZXJ0PElETFVTVlN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhXVEZNb3ZlKHN0cikp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aFVTVlN0cmluZ0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MDE5LDkgKzU5NTEsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBzdHIgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVTVlN0cmluZz4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhXVEZNb3ZlKHN0cikp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFdURk1vdmUo
c3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjA0
MSw5ICs1OTcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9k
V2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MDYzLDkgKzU5OTEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBz
dHIgPSBjb252ZXJ0PElETEJ5dGVTdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhCeXRlU3RyaW5nQXJnKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEJ5dGVTdHJpbmdB
cmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtNjA4NSw5ICs2MDExLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExO
dWxsYWJsZTxJRExCeXRlU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE51
bGxhYmxlQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9k
V2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aE51bGxhYmxlQnl0ZVN0cmluZ0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MTA3LDkgKzYwMzEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0
byBzdHIgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExCeXRl
U3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIp
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX21ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC02MTI5LDkgKzYwNTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzZXJpYWxpemVkQXJnID0gY29u
dmVydDxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwuc2VyaWFsaXplZFZhbHVlKFdURk1vdmUoc2VyaWFsaXplZEFyZykp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwuc2VyaWFsaXplZFZhbHVlKFdURk1vdmUoc2VyaWFsaXplZEFyZykp
OyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fc2VyaWFsaXplZFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYxNTEsOSArNjA3MSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIHJlY29yZFBhcmFtZXRlciA9IGNvbnZlcnQ8SURMUmVjb3JkPElETERPTVN0cmluZywgSURM
TG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhSZWNvcmQoV1RGTW92ZShyZWNv
cmRQYXJhbWV0ZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhSZWNvcmQoV1RGTW92ZShy
ZWNvcmRQYXJhbWV0ZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhSZWNvcmQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjE2MSw1
MyArNjA3OSw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aFJlY29yZEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAibWV0aG9kV2l0aFJlY29yZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlv
bkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uKCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoRXhjZXB0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvbkJvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwotfQotCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdCb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoKSkp
KTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX21ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nIik7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Qm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cykKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KCkpKSk7Ci19Ci0K
LUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9k
V2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCIpOwotfQotCiBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fY3VzdG9tTWV0aG9kQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC02MjQ4LDcgKzYxMTksNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
YXV0byBhcmd1bWVudCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGltcGwucHJpdmF0ZU1ldGhvZChXVEZNb3ZlKGFyZ3VtZW50KSkpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwucHJpdmF0ZU1ldGhvZChXVEZN
b3ZlKGFyZ3VtZW50KSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9wcml2YXRlTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYyNjgsNyArNjEzOSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBhdXRvIGFyZ3VtZW50ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW1wbC5wdWJsaWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5w
dWJsaWNBbmRQcml2YXRlTWV0aG9kKFdURk1vdmUoYXJndW1lbnQpKSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3B1YmxpY0FuZFBy
aXZhdGVNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNjI5NCwxMCArNjE2NSwxMCBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgYXV0byB1c2VDYXB0dXJlID0gY29u
dmVydDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5hZGRFdmVudExpc3RlbmVyKFdU
Rk1vdmUodHlwZSksIFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVzZUNhcHR1cmUpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwuYWRkRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGxpc3RlbmVy
KSwgV1RGTW92ZSh1c2VDYXB0dXJlKSk7IH0pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKCZz
dGF0aWNfY2FzdDxKU09iamVjdCY+KCpjYXN0ZWRUaGlzKSwgYXJndW1lbnQxLnZhbHVlKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX2FkZEV2ZW50TGlzdGVuZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjMyMywxMCArNjE5NCwxMCBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgYXV0byB1c2VD
YXB0dXJlID0gY29udmVydDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQyLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5yZW1vdmVF
dmVudExpc3RlbmVyKFdURk1vdmUodHlwZSksIFdURk1vdmUobGlzdGVuZXIpLCBXVEZNb3ZlKHVz
ZUNhcHR1cmUpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUp
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgV1RGTW92ZSh1c2VDYXB0dXJlKSk7IH0pKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKCZzdGF0aWNfY2FzdDxKU09iamVjdCY+KCpjYXN0ZWRUaGlzKSwgYXJn
dW1lbnQxLnZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3JlbW92ZUV2ZW50TGlzdGVuZXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjM0
MSw5ICs2MjEyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwud2l0aEV4ZWNTdGF0ZVZvaWQoKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLndpdGhF
eGVjU3RhdGVWb2lkKCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlVm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02MzU4LDcgKzYyMjcsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRo
RXhlY1N0YXRlT2JqKCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoRXhlY1N0YXRl
T2JqKCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl93aXRoRXhlY1N0YXRlT2JqLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTYzNjYsMzggKzYyMzUsNiBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVP
YmpCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIndpdGhFeGVjU3RhdGVP
YmoiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLndpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uKCpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl93aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17
Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVWb2lkRXhjZXB0aW9uQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJ3aXRoRXhlY1N0YXRlVm9pZEV4Y2VwdGlvbiIpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fd2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0g
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwud2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbigqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
bGV4aWNhbEdsb2JhbE9iamVjdCkpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Ci17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3dpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb25Cb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIndpdGhFeGVjU3RhdGVPYmpFeGNlcHRpb24iKTsKLX0K
LQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsK
ICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC02NDA4
LDkgKzYyNDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9i
YWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCpjb250ZXh0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCpjb250ZXh0KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTY0MjgsOSArNjI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNh
bEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNvbnRleHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwud2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRFeGVjU3RhdGUoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGlj
YWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4dCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZSgqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY0Mzgs
MjQgKzYyNzEsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZEV4ZWNTdGF0ZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVPYmpFeGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKLSAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVPYmpFeGNlcHRpb24oKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCAqY2FsbEZyYW1lLCAqY29udGV4
dCkpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl93aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0
YXRlT2JqRXhjZXB0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZU9iakV4Y2VwdGlvbiIpOwotfQot
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkBAIC02NDY2LDcgKzYyODEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcygqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kRXhlY1N0YXRlV2l0aFNwYWNlcygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNh
bEdsb2JhbE9iamVjdCksICpjYWxsRnJhbWUsICpjb250ZXh0KSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NDg2LDkgKzYzMDEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4o
KmNvbnRleHQpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwud2l0aERvY3Vt
ZW50QXJndW1lbnQoZG9jdW1lbnQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwud2l0aERvY3VtZW50QXJndW1l
bnQoZG9jdW1lbnQpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fd2l0aERvY3VtZW50QXJndW1lbnQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjUwNiw5
ICs2MzE5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8qIGluY3VtYmVudERvY3VtZW50ID0gaW5jdW1iZW50RE9NV2luZG93KCpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNhbGxGcmFtZSkuZG9jdW1l
bnQoKTsKICAgICBpZiAoIWluY3VtYmVudERvY3VtZW50KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwud2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoKmluY3VtYmVudERvY3VtZW50KTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLndpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KCppbmN1bWJlbnREb2N1bWVu
dCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl93aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02NTIzLDkgKzYz
MzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC53aXRoQ2FsbGVyV2luZG93QXJndW1lbnQoaW5jdW1iZW50RE9NV2lu
ZG93KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKmNh
bGxGcmFtZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwud2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KGluY3Vt
YmVudERPTVdpbmRvdygqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9i
amVjdCksICpjYWxsRnJhbWUpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dpdGhDYWxsZXJXaW5kb3dBcmd1bWVudCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC02NTQzLDkgKzYzNTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgYXV0byBvcHQgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5l
ZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9u
YWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBcmcoV1RGTW92ZShvcHQpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhXVEZNb3ZlKG9wdCkpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aE9wdGlvbmFsQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY1NjMsOSArNjM3MCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9wdCA9IGFy
Z3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyA2NjYgOiBjb252ZXJ0PElETExvbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShX
VEZNb3ZlKG9wdCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVm
YXVsdFZhbHVlKFdURk1vdmUob3B0KSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxBcmdBbmRE
ZWZhdWx0VmFsdWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNjU4OCw5ICs2MzkzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGF1dG8gb3B0ID0gYXJndW1lbnQxLnZh
bHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJu
VHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVy
dDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kT3B0aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShub25P
cHQpLCBXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtNjYxNiw5ICs2NDE5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgIGF1dG8gb3B0MiA9IGFyZ3VtZW50Mi52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5
cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8
SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJncyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUob3B0MSksIFdURk1vdmUo
b3B0MikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzKFdURk1vdmUobm9uT3B0KSwgV1RGTW92ZShvcHQxKSwgV1RGTW92ZShvcHQyKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNjYzNiw5ICs2NDM3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IFN0cmluZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjY1Niw5ICs2NDU1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQw
LnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJRExVU1ZTdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhXVEZNb3Zl
KHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKFdURk1v
dmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjY3
Niw5ICs2NDczLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IG51
bGxBdG9tKCkgOiBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcoV1RGTW92ZShz
dHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcoV1RGTW92
ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjY5
Niw5ICs2NDkxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJm
b28iX3MgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1
cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoV1RGTW92ZShz
dHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC02NzE2LDkgKzY1MDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5l
ZCgpID8gQXRvbVN0cmluZygiZm9vIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
IDogY29udmVydDxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdU
Rk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
QW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY3MzYsOSArNjUyNyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9
IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJ
c051bGwoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzTnVsbChXVEZNb3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
SXNOdWxsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTY3NTYsOSArNjU0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVm
aW5lZChXVEZNb3ZlKHN0cikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNVbmRlZmluZWQoV1RGTW92ZShzdHIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzVW5kZWZpbmVkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY3NzYsOSArNjU2Myw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ciA9IGFyZ3VtZW50
MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBudWxsQXRvbSgpIDogY29udmVydDxJRExBdG9tU3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY3OTYsOSArNjU4MSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBh
dXRvIHN0ciA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygp
IDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX21ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjgxNiw5
ICs2NTk5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5
U3RyaW5nKCkgOiBjb252ZXJ0PElETFVTVlN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZN
b3ZlKHN0cikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC02ODM2LDkgKzY2MTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBzdHIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gZW1wdHlBdG9tKCkgOiBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElE
TERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21T
dHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RX
aXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNjg1Niw5
ICs2NjM1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDxJRExVbnJlc3RyaWN0ZWREb3VibGU+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKFdURk1vdmUobnVt
YmVyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihXVEZN
b3ZlKG51bWJlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNjg3Niw5ICs2NjUzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDxJRExVbnJlc3RyaWN0ZWRGbG9h
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihXVEZN
b3ZlKG51bWJlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05h
TihXVEZNb3ZlKG51bWJlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC02ODk2LDkgKzY2NzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBudW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmdMb25nPjo6UmV0dXJuVHlwZT4o
KSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8
SURMTG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxMb25n
TG9uZyhXVEZNb3ZlKG51bWJlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
TG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbExvbmdM
b25nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTY5MTYsOSArNjY4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG51bWJlciA9IGNvbnZlcnQ8SURMTG9uZ0xv
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJv
KFdURk1vdmUobnVtYmVyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxMb25n
TG9uZ0lzWmVybyhXVEZNb3ZlKG51bWJlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTG9u
Z0xvbmdJc1plcm8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQpAQCAtNjkzNiw5ICs2NzA3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gbnVtYmVyID0gYXJndW1lbnQw
LnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnNpZ25lZExv
bmdMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnNpZ25lZExv
bmdMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhXVEZNb3Zl
KG51bWJlcikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25n
TG9uZyhXVEZNb3ZlKG51bWJlcikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkBAIC02OTU2LDkgKzY3MjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PElETFVu
c2lnbmVkTG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFVu
c2lnbmVkTG9uZ0xvbmdJc1plcm8oV1RGTW92ZShudW1iZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8oV1RGTW92ZShudW1iZXIpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
Njk3Niw5ICs2NzQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gYXJyYXkgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgp
ID8gQ29udmVydGVyPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBleyB9IDog
Y29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShXVEZNb3ZlKGFycmF5KSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShXVEZNb3ZlKGFycmF5KSk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02OTk2LDkgKzY3NjEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBhcnJheSA9
IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj46OlJldHVyblR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElETERP
TVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNl
SXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxTZXF1ZW5jZUlzRW1wdHkoV1RGTW92ZShhcnJheSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2VJc0VtcHR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcwMTYsOSArNjc3OSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGIgPSBhcmd1bWVu
dDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETEJvb2xlYW4+
OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETEJvb2xlYW4+OjpSZXR1cm5U
eXBlPihjb252ZXJ0PElETEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuKFdURk1vdmUoYikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbihXVEZNb3ZlKGIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtNzAzNiw5ICs2Nzk3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gYiA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoV1RGTW92
ZShiKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShX
VEZNb3ZlKGIpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTcwNTYsOSArNjgxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETEFueT4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQW55KFdURk1vdmUoYSkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsQW55KFdURk1vdmUoYSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlv
bmFsQW55LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKQEAgLTcwNzYsOSArNjgzMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETE9iamVjdD46OlJldHVyblR5cGU+
KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMT2JqZWN0Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExPYmplY3Q+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxPYmplY3Qo
V1RGTW92ZShhKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoV1RG
TW92ZShhKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxPYmplY3QsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzA5Niw5
ICs2ODUxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGF1dG8gb2JqID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IG51bGxw
dHIgOiBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxXcmFwcGVyIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIob2JqKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIob2JqKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhPcHRpb25hbFdyYXBwZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzExNiw5ICs2ODY5LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gb2JqID0gY29udmVy
dDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsICJUZXN0T2JqIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdy
YXBwZXIoV1RGTW92ZShvYmopKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlcihXVEZNb3ZlKG9iaikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKQEAgLTcxMzYsOSArNjg4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIG9iaiA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVySXNOdWxsKFdURk1vdmUob2JqKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoV1RGTW92ZShvYmopKTsgfSkpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdp
dGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MTU2LDkgKzY5MDUsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0
byByZXNvbHZlciA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFhQYXRoTlNSZXNv
bHZlcj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jl
c29sdmVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwotICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKFdURk1vdmUocmVz
b2x2ZXIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZl
cihXVEZNb3ZlKHJlc29sdmVyKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNzE3Niw5ICs2OTIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gcmVjb3JkID0gYXJndW1lbnQwLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IFdURjo6bnVsbG9wdCA6IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
UmVjb3JkPElETERPTVN0cmluZywgSURMTG9uZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFJlY29yZChXVEZNb3ZlKHJlY29yZCkpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0
aE9wdGlvbmFsUmVjb3JkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcxOTYsOSArNjk0MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHByb21pc2UgPSBhcmd1
bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gbnVsbHB0ciA6IGNvbnZlcnQ8SURMUHJvbWlz
ZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxQ
cm9taXNlKFdURk1vdmUocHJvbWlzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFBy
b21pc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNzIxOCw5ICs2OTYxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252
ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFj
ZUFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhDYWxsYmFj
a0ludGVyZmFjZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MjQwLDkgKzY5ODEsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFj
ayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11
c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE51bGxh
YmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFj
aykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNzI2NSw5ICs3MDA0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxi
YWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNl
QXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShub25DYWxsYmFjayksIGNhbGxiYWNr
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNr
SW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShub25DYWxsYmFjayks
IGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbkNhbGxiYWNr
SW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzI4NSw5ICs3MDIy
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVy
dGVyPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj46OlJldHVy
blR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2Jq
ZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxDYWxs
YmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0p
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9tZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MzA1
LDkgKzcwNDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJ
bnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNl
QXJnKFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03
MzI3LDkgKzcwNjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1
bmN0aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKGNhbGxiYWNrLnJlbGVh
c2VOb25OdWxsKCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNzM0OSw5ICs3MDgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxh
YmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFy
ZyhXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVD
YWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhO
dWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzM3NCw5ICs3MTAzLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUobm9uQ2FsbGJh
Y2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShub25DYWxsYmFj
ayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbkNhbGxi
YWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03Mzk0LDkgKzcxMjEsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBj
YWxsYmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj46OlJldHVyblR5cGUoKSA6
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVuY3Rp
b25BcmcoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RX
aXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTc0MTQsOSArNzEzOSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRv
IGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVz
dENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJj
YWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJh
Y2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJh
Y2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzQzMyw5ICs3MTU2LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8g
Y2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9k
V2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhX
VEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9zdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03NDU0LDkgKzcxNzUsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RP
Ymo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJh
Y2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3N0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fy
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC03NDcyLDcgKzcxOTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuY29uZGl0aW9uYWxNZXRo
b2QxKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbE1ldGhvZDEsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpA
QCAtNzQ5MCw5ICs3MjA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsTWV0aG9k
MiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC03NTEwLDkgKzcyMjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMygpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9u
YWxNZXRob2QzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTc1MzUsOSArNzI1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQx
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIHN0ckFyZyA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9k
KFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShzdHJBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKHN0ckFyZykpOyB9KSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzU1Myw5ICs3
MjY2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwog
ICAgIGF1dG8gbG9uZ0FyZyA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0
ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZN
b3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2QzQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKQEAgLTc1NjgsOSArNzI3OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0ckFyZyA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUoc3RyQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUo
c3RyQXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kNEJvZHkoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCkBAIC03NTgzLDkgKzcyOTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUobG9u
Z0FyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGxvbmdBcmcp
KTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2Q1Qm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
QEAgLTc1OTgsOSArNzMwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1l
dGhvZChjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2QoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVy
bG9hZGVkTWV0aG9kNkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03NjEzLDkgKzczMTgsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBsaXN0QXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8RE9NU3Ry
aW5nTGlzdD4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMCwgImxpc3RBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkRPTVN0
cmluZ0xpc3QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShsaXN0QXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVk
TWV0aG9kKFdURk1vdmUobGlzdEFyZykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhv
ZDdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzYyOCw5ICs3MzMxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYXJy
YXlBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRv
KSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOyB9KSkp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZDhCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzY0
Myw5ICs3MzQ0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVz
dE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAw
LCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9k
KCpvYmpBcmcpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2JqQXJnKTsgfSkp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2Q5Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc2
NTgsOSArNzM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHdpbmRvdyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFdp
bmRvd1Byb3h5Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJ3aW5kb3ciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIldpbmRv
d1Byb3h5Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9h
ZGVkTWV0aG9kKCp3aW5kb3cpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2lu
ZG93KTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2QxMEJvZHkoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCkBAIC03NjczLDkgKzczNzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhcnJheUFyZyA9IGNvbnZlcnQ8SURM
U2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1l
dGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9k
KFdURk1vdmUoYXJyYXlBcmcpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2QxMUJv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03Njg4LDkgKzczODMsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhcnJheUFy
ZyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMVW5zaWduZWRMb25nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYXJyYXlBcmcpKTsgfSkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292
ZXJsb2FkZWRNZXRob2QxMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCkBAIC03NzAzLDkgKzczOTYsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAg
IGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKHN0ckFyZykpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKHN0ckFyZykpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3Zlcmxv
YWRlZE1ldGhvZDEzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc3MTcsOSArNzQwOCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYmxvYkFyZ3MgPSBjb252ZXJ0VmFyaWFk
aWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPEJsb2I+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1l
dGhvZChXVEZNb3ZlKGJsb2JBcmdzKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9k
T3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzc5MSw5ICs3NDgwLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGF1dG8g
b2JqQXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm9iakFyZyIs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAi
VGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3Zlcmxv
YWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKHN0ckFyZyksIFdURk1vdmUo
b2JqQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyKFdURk1vdmUoc3RyQXJnKSwgV1RGTW92ZShvYmpBcmcpKTsgfSkpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X292ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cykKQEAgLTc4MDksOSArNzQ5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKICAgICBhdXRvIGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDog
T3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1l
dGVyKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25nQXJnKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKFdURk1vdmUob2JqQXJnKSwgV1RG
TW92ZShsb25nQXJnKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlv
bmFsUGFyYW1ldGVyT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzg1NSw5
ICs3NTQwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0gY29udmVydDxJRExVbmlvbjxJRExJ
bnRlcmZhY2U8VGVzdE9iaj4sIElETEludGVyZmFjZTxUZXN0Tm9kZT4+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oV1RGTW92ZShv
YmplY3RPck5vZGUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAt
PiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGlu
Z3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOyB9KSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3Zl
cmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uMkJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMp
CkBAIC03ODcwLDkgKzc1NTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1Vu
aW9uKFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRo
RGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKHZhbHVlKSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVy
bG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb25PdmVybG9hZERpc3BhdGNoZXIoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCkBAIC03OTEwLDkgKzc1OTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBvYmplY3RPck5vZGUg
PSBjb252ZXJ0PElETFVuaW9uPElETEludGVyZmFjZTxUZXN0T2JqPiwgSURMSW50ZXJmYWNlPFRl
c3ROb2RlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rp
bmd1aXNoaW5nVW5pb25zKFdURk1vdmUob2JqZWN0T3JOb2RlKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5v
dmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyhXVEZNb3ZlKG9iamVjdE9y
Tm9kZSkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hp
bmdVbmlvbnMyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc5MjUsOSArNzYwNCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBh
dXRvIHZhbHVlID0gY29udmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdEludGVyZmFjZT4s
IElETERPTVN0cmluZywgSURMTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRN
ZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKFdURk1vdmUodmFsdWUpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zKFdURk1vdmUo
dmFsdWUpKTsgfSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNo
aW5nVW5pb25zT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzk3MCw5ICs3
NjQ3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOwogICAgIGF1dG8gb2JqZWN0ID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2Jq
ZWN0IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGlu
Z1VuaW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihXVEZNb3ZlKG9i
amVjdE9yTm9kZSksICpvYmplY3QpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdp
dGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSwgKm9iamVjdCk7
IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5p
b24yQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTc5ODgsOSArNzY2Myw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvIG5v
ZGUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAibm9kZSIsICJUZXN0T2JqZWN0IiwgIm92
ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIsICJUZXN0Tm9kZSIpOyB9
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdp
dGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKFdURk1vdmUob2JqZWN0T3JOb2RlKSwgKm5vZGUpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9u
KFdURk1vdmUob2JqZWN0T3JOb2RlKSwgKm5vZGUpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRl
ZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQpAQCAtODAyNSw5ICs3Njk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExJbnRlcmZhY2U8VGVzdE9iaj4sIElETElu
dGVyZmFjZTxUZXN0Tm9kZT4+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwub3ZlcmxvYWRXaXRoTnVs
bGFibGVVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3Zlcmxv
YWRXaXRoTnVsbGFibGVVbmlvbihXVEZNb3ZlKG9iamVjdE9yTm9kZSkpOyB9KSkpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fb3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtODA0
MCw5ICs3NzExLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oV1RGTW92ZShpbmRleCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwub3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbihXVEZNb3ZlKGluZGV4KSk7
IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uT3ZlcmxvYWREaXNwYXRj
aGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtODA4Miw5ICs3NzUxLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gb2JqZWN0T3JOb2RlID0g
YXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHRydWUgOiBjb252ZXJ0PElETFVuaW9u
PElETERPTVN0cmluZywgSURMQm9vbGVhbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShvYmplY3RPck5vZGUpKTsgfSkpKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX292ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24yQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
QEAgLTgwOTcsOSArNzc2NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5vdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uKFdURk1vdmUoaW5k
ZXgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24oV1RGTW92ZShp
bmRleCkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbk92ZXJsb2Fk
RGlzcGF0Y2hlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKQEAgLTgxNDMsOSArNzgwOCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRv
IG5vZGUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAibm9kZSIsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiLCAiVGVzdE5v
ZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0
aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoV1RGTW92ZShvYmopLCAqbm9kZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5vdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFy
YW1ldGVyKFdURk1vdmUob2JqKSwgKm5vZGUpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3ZlcmxvYWRXaXRo
TnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjJCb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQpA
QCAtODE2MSw5ICs3ODI0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PElETExvbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQ
YXJhbWV0ZXIoV1RGTW92ZShub2RlKSwgV1RGTW92ZShpbmRleCkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
b3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcihXVEZNb3ZlKG5v
ZGUpLCBXVEZNb3ZlKGluZGV4KSk7IH0pKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZFdpdGhOdWxsYWJs
ZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQpAQCAtODE5NSw5ICs3ODU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBUZXN0T2JqOjpjbGFzc01ldGhv
ZCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6OmNsYXNzTWV0aG9kKCk7IH0pKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX2NsYXNzTWV0
aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTgyMTQsNyArNzg3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkg
OiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9u
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oVGVz
dE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoV1RGTW92ZShhcmcpKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0
aE9wdGlvbmFsKFdURk1vdmUoYXJnKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX2NsYXNzTWV0aG9kV2l0aE9wdGlvbmFsLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTgyNDYsOSArNzkwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGFyZyA9IGNvbnZlcnQ8SURMTG9uZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKFdURk1vdmUoYXJnKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoV1RGTW92ZShhcmcpKTsgfSkp
KTsKIH0KIAogI2VuZGlmCkBAIC04MjYzLDkgKzc5MjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB0eXBlID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBUZXN0T2JqOjpvdmVybG9hZGVkTWV0
aG9kMShXVEZNb3ZlKHR5cGUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpvdmVybG9hZGVkTWV0aG9k
MShXVEZNb3ZlKHR5cGUpKTsgfSkpKTsKIH0KIAogI2VuZGlmCkBAIC04MzE0LDkgKzc5NjksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7
CiAgICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETFVuc2ln
bmVkTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aENsYW1wKFdURk1v
dmUob2JqQXJnc1Nob3J0KSwgV1RGTW92ZShvYmpBcmdzTG9uZykpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
Y2xhc3NNZXRob2RXaXRoQ2xhbXAoV1RGTW92ZShvYmpBcmdzU2hvcnQpLCBXVEZNb3ZlKG9iakFy
Z3NMb25nKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9jbGFzc01ldGhvZFdpdGhDbGFtcCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04MzM0LDkgKzc5
ODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgYXV0byBvYmpBcmdzTG9uZyA9IGNvbnZlcnQ8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwoV1RGTW92
ZShvYmpBcmdzTG9uZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9w
dGlvbmFsKFdURk1vdmUob2JqQXJnc0xvbmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NsYXNzTWV0aG9kV2l0aENsYW1w
T25PcHRpb25hbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC04MzU5LDkgKzgwMTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byBvYmpBcmdzTG9u
ZyA9IGNvbnZlcnQ8SURMRW5mb3JjZVJhbmdlQWRhcHRvcjxJRExVbnNpZ25lZExvbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoV1RGTW92ZShvYmpB
cmdzU2hvcnQpLCBXVEZNb3ZlKG9iakFyZ3NMb25nKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jbGFzc01l
dGhvZFdpdGhFbmZvcmNlUmFuZ2UoV1RGTW92ZShvYmpBcmdzU2hvcnQpLCBXVEZNb3ZlKG9iakFy
Z3NMb25nKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODM3
OSw5ICs4MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGF1dG8gb2JqQXJnc0xvbmcgPSBjb252ZXJ0PElETEVuZm9yY2VSYW5nZUFkYXB0
b3I8SURMTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VS
YW5nZU9uT3B0aW9uYWwoV1RGTW92ZShvYmpBcmdzTG9uZykpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuY2xh
c3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlT25PcHRpb25hbChXVEZNb3ZlKG9iakFyZ3NMb25nKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbl9jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg0
MDEsOSArODA0OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHVuc2lnbmVkTG9uZ1NlcXVlbmNlID0gY29udmVydDxJ
RExTZXF1ZW5jZTxJRExVbnNpZ25lZExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoVW5zaWduZWRMb25nU2VxdWVuY2UoV1RGTW92ZSh1bnNpZ25lZExvbmdTZXF1ZW5jZSkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKFdURk1vdmUodW5z
aWduZWRMb25nU2VxdWVuY2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC04NDYxLDkgKzgxMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBvcHRpb25hbFVuaW9uID0gYXJndW1lbnQwLnZh
bHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExET01T
dHJpbmcsIElETFNlcXVlbmNlPElETFVucmVzdHJpY3RlZERvdWJsZT4+Pjo6UmV0dXJuVHlwZT4o
KSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExET01TdHJpbmcsIElETFNlcXVlbmNl
PElETFVucmVzdHJpY3RlZERvdWJsZT4+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbmlvbjxJ
RExET01TdHJpbmcsIElETFNlcXVlbmNlPElETFVucmVzdHJpY3RlZERvdWJsZT4+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwotICAgIGltcGwub3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoV1RGTW92
ZShvcHRpb25hbFVuaW9uKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9uYWxV
bmlvblBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFsVW5pb24pKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbldp
dGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg0ODYsOSArODEyOSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBh
dXRvIG51bGxhYmxlQXJyYXlBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElE
TFVuc2lnbmVkTG9uZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdURk1vdmUobnVsbGFibGVBcnJh
eUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVl
bmNlKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X21ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NTA4LDcgKzgx
NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBjb252ZXJ0PElETFJlcXVpcmVzRXhpc3RpbmdB
dG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxFbGVtZW50Pj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxl
bWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNl
PEVsZW1lbnQ+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgdGhyb3dTY29wZSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3ZlKGVsZW1lbnRJZCkp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fZ2V0RWxlbWVudEJ5SWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODU0Myw5ICs4MTg0LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
dmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAidmFsdWUiLCAiVGVzdE9iamVjdCIs
ICJjb252ZXJ0MSIsICJUZXN0Tm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwuY29udmVydDEoKnZhbHVlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNvbnZlcnQxKCp2YWx1
ZSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9jb252ZXJ0MSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NTY1LDkgKzgyMDQsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2
YWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAidmFsdWUiLCAi
VGVzdE9iamVjdCIsICJjb252ZXJ0MiIsICJUZXN0Tm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwuY29udmVydDIoV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwuY29udmVydDIoV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29udmVydDIsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
ODU4Nyw5ICs4MjI0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwuY29udmVydDMoV1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwuY29udmVydDMoV1RGTW92ZSh2YWx1ZSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29udmVydDMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
ODYwOSw5ICs4MjQ0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmNvbnZlcnQ0KFdURk1vdmUodmFsdWUp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLmNvbnZlcnQ0KFdURk1vdmUodmFsdWUpKTsgfSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbnZl
cnQ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTg2MjYsNyArODI1OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPFNWR1BvaW50Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJ
bnRlcmZhY2U8U1ZHUG9pbnQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tdXRhYmxlUG9pbnRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04NjQxLDkgKzgyNzQsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5iYW5hbmEoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmJhbmFuYSgpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fb3JhbmdlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTg2NjUsOSArODI5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAxKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFkKSwg
V1RGTW92ZSh0YWlsKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZN
b3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGljU3RyaW5nTWV0aG9kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTg2ODksOSArODMxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbnJl
c3RyaWN0ZWREb3VibGU+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAxKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudmFyaWFkaWNEb3VibGVNZXRob2QoV1RG
TW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC52YXJpYWRpY0RvdWJs
ZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGljRG91
YmxlTWV0aG9kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTg3MTMsOSArODM0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3Vt
ZW50czxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudmFyaWFkaWNOb2RlTWV0
aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnZhcmlhZGljTm9kZU1l
dGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJpYWRpY05vZGVNZXRob2QsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpAQCAtODczNyw5ICs4MzYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETFVuaW9u
PElETEludGVyZmFjZTxOb2RlPiwgSURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC52YXJp
YWRpY1VuaW9uTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwudmFyaWFkaWNVbmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX3ZhcmlhZGljVW5pb25NZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtODc2Miw5ICs4Mzg1LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAg
IGF1dG8gYiA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuYW55KFdURk1v
dmUoYSksIFdURk1vdmUoYikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuYW55KFdURk1vdmUoYSksIFdURk1v
dmUoYikpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fYW55LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg3NzksOSArODQwMCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRl
c3RQcm9taXNlRnVuY3Rpb24oV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24o
V1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg4
MDEsOSArODQyMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PElETEZsb2F0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoV1RGTW92ZShh
KSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVu
dChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rp
b25XaXRoRmxvYXRBcmd1bWVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04ODExLDIzICs4NDI4LDYgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVyYXRpb25S
ZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Qm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1l
bnQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1vdmUocHJvbWlz
ZSkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1K
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFBy
b21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIHJldHVybiBJRExPcGVyYXRp
b25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7
Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKQEAgLTg4MzgsOSArODQzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5l
ZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9u
YWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1l
bnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
T3B0aW9uYWxJbnRBcmd1bWVudChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC04ODU4
LDkgKzg0NTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgYXV0byBhID0gY29udmVydDxJRExGbG9hdD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oV1RGTW92ZShhKSwgV1RGTW92
ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKFdURk1vdmUoYSksIFdU
Rk1vdmUocHJvbWlzZSkpOyB9KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24yQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9t
aXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKQEAgLTg4NzMsOSArODQ2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHJlcXVlc3Qg
PSBjb252ZXJ0PElETEludGVyZmFjZTxGZXRjaFJlcXVlc3Q+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgInJlcXVlc3QiLCAiVGVzdE9iamVjdCIs
ICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbiIsICJGZXRjaFJlcXVlc3QiKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1
bmN0aW9uKCpyZXF1ZXN0LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVk
RnVuY3Rpb24oKnJlcXVlc3QsIFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVz
dFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb25PdmVybG9hZERpc3BhdGNoZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC04
OTA3LDkgKzg1MDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVu
Y3Rpb24oV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMUHJvbWlzZTxJRExVbmRlZmluZWQ+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjp0ZXN0U3Rh
dGljUHJvbWlzZUZ1bmN0aW9uKFdURk1vdmUocHJvbWlzZSkpOyB9KSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90ZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTg5MTcsMjIgKzg1MDksNiBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RyCiAgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uX3Rlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgInRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24iKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25f
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Cb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIHByb3Bh
Z2F0ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgVGVzdE9iajo6
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oV1RGTW92ZShwcm9taXNlKSkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLUpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0
aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25C
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRlc3RTdGF0aWNQcm9taXNl
RnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0
aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkBAIC04OTgyLDcgKzg1NTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC50ZXN0UmV0dXJuc093blByb21pc2VBbmRQcm9t
aXNlUHJveHlGdW5jdGlvbigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdFJldHVybnNPd25Qcm9taXNl
QW5kUHJvbWlzZVByb3h5RnVuY3Rpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RSZXR1cm5zT3duUHJvbWlzZUFu
ZFByb21pc2VQcm94eUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkwMDEsOSArODU3Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRv
IHN0ciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5jb25kaXRp
b25hbE92ZXJsb2FkKFdURk1vdmUoc3RyKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5jb25kaXRpb25hbE92
ZXJsb2FkKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtOTAxOSw5ICs4NTkz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
Y29uZGl0aW9uYWxPdmVybG9hZChXVEZNb3ZlKGEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNvbmRpdGlv
bmFsT3ZlcmxvYWQoV1RGTW92ZShhKSk7IH0pKSk7CiB9CiAKICNlbmRpZgpAQCAtOTA2NSw5ICs4
NjM3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gc3RyID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLnNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLnNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoV1RGTW92ZShzdHIpKTsgfSkpKTsK
IH0KIAogI2lmIEVOQUJMRShDT05ESVRJT04pCkBAIC05MDgxLDkgKzg2NTEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0
byBhID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5zaW5nbGVDb25kaXRp
b25hbE92ZXJsb2FkKFdURk1vdmUoYSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2luZ2xlQ29uZGl0aW9u
YWxPdmVybG9hZChXVEZNb3ZlKGEpKTsgfSkpKTsKIH0KIAogI2VuZGlmCkBAIC05MTIzLDkgKzg2
OTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAgICAgYXV0byBpbml0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRp
Y3Rpb25hcnk+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5hdHRhY2hTaGFkb3dSb290KFdURk1vdmUo
aW5pdCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuYXR0YWNoU2hhZG93Um9vdChXVEZNb3ZlKGluaXQpKTsg
fSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX2F0dGFjaFNoYWRvd1Jvb3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTE0NSw5ICs4NzExLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gZGljdCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5vcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVy
KFdURk1vdmUoZGljdCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uV2l0aEV4dGVybmFsRGlj
dGlvbmFyeVBhcmFtZXRlcihXVEZNb3ZlKGRpY3QpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbldpdGhFeHRl
cm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTE2Nyw5ICs4NzMxLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gZGF0YSA9IGNvbnZlcnQ8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1
ZmZlcj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmJ1ZmZlclNvdXJjZVBhcmFtZXRlcihXVEZNb3Zl
KGRhdGEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmJ1ZmZlclNvdXJjZVBhcmFtZXRlcihXVEZNb3ZlKGRh
dGEpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX2J1ZmZlclNvdXJjZVBhcmFtZXRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MTkyLDggKzg3NTQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MSk7CiAgICAgYXV0byBiID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiYiIsICJUZXN0T2JqZWN0
IiwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIsICJOb2RlIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC50ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb24oKmEs
ICpiKTsKKyAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwudGVzdFJl
dHVyblZhbHVlT3B0aW1pemF0aW9uKCphLCAqYik7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYXJndW1lbnQwLnZhbHVlKCkpOwogfQogCkBAIC05MjAyLDMxICs4NzYzLDYgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UmV0
dXJuVmFsdWVPcHRpbWl6YXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJldHVyblZh
bHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGEgPSBjb252ZXJ0PElE
TEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDAsICJhIiwgIlRlc3RPYmplY3QiLCAidGVzdFJldHVyblZhbHVlT3B0aW1pemF0
aW9uV2l0aEV4Y2VwdGlvbiIsICJOb2RlIik7IH0pOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBi
ID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiYiIsICJUZXN0T2JqZWN0IiwgInRlc3RSZXR1cm5W
YWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb24iLCAiTm9kZSIpOyB9KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC50ZXN0UmV0dXJuVmFsdWVPcHRpbWl6YXRpb25XaXRoRXhjZXB0
aW9uKCphLCAqYikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQwLnZhbHVl
KCkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fdGVzdFJldHVyblZhbHVlT3B0aW1pemF0aW9uV2l0aEV4Y2VwdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0g
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RSZXR1cm5WYWx1ZU9wdGltaXphdGlvbldpdGhFeGNlcHRpb25Cb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRlc3RSZXR1cm5WYWx1ZU9wdGltaXph
dGlvbldpdGhFeGNlcHRpb24iKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5k
b3dGdW5jdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtOTIzNCw5ICs4NzcwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5j
b25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05MjUxLDkgKzg3ODUsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAg
aW1wbC5jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbigpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyNjgsOSArODgwMCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbigp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwuY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1
bmN0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyRnVu
Y3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtOTI4NSw5ICs4ODE1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwubGVhZGluZ0h5cGhlbkZ1
bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5sZWFkaW5nSHlwaGVuRnVuY3Rpb24oKTsgfSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
X2Rhc2hfbGVhZGluZ19kYXNoX2h5cGhlbl9kYXNoX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkzMDIsOSAr
ODgzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLnRyYWlsaW5nSHlwaGVuRnVuY3Rpb24oKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLnRyYWlsaW5nSHlwaGVuRnVuY3Rpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3RyYWlsaW5nX2Rhc2hfaHlwaGVu
X2Rhc2hfZnVuY3Rpb25fZGFzaF8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTMxOSw5ICs4ODQ1LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
bGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5sZWFkaW5nX3Vu
ZGVyc2NvcmVfZnVuY3Rpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC05MzM2LDkgKzg4NjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5fZG91YmxlX2xlYWRpbmdfdW5kZXJz
Y29yZV9mdW5jdGlvbigpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2Nv
cmVfZnVuY3Rpb24oKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpAQCAtOTM1Myw5ICs4ODc1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudHJhaWxpbmdfdW5kZXJzY29yZV9m
dW5jdGlvbl8oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25f
KCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl90cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05Mzc1LDcg
Kzg4OTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGNvbnZlcnQ8SURMQWxsb3dTaGFyZWRB
ZGFwdG9yPElETFVpbnQ4QXJyYXk+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMCwgImRlc3RpbmF0aW9uIiwgIlRlc3RPYmplY3QiLCAiZW5jb2RlSW50
byIsICJVaW50OEFycmF5Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuZW5jb2RlSW50byhkZXN0aW5h
dGlvbi5yZWxlYXNlTm9uTnVsbCgpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZW5jb2RlSW50byhkZXN0aW5hdGlvbi5yZWxlYXNlTm9uTnVs
bCgpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uX2VuY29kZUludG8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTM5MCw3ICs4OTEwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVTVlN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc3RyaW5naWZpZXJBdHRyaWJ1dGUoKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rv
U3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
LmNwcAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk1LDkgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm5vbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC5ub25Db25kaXRpb25hbE9wZXJhdGlvbigpOyB9KSkpOwogfQogCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGVG
dW5jdGlvbl9ub25Db25kaXRpb25hbE9wZXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yMTUsOSArMjEzLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwuY29uZGl0aW9uYWxPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLmNvbmRpdGlv
bmFsT3BlcmF0aW9uKCk7IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsT3BlcmF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQu
Y3BwCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVq
ZWMKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMUHJvbWlzZTxJRExBbnk+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5wcm9taXNlKCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFByb21pc2U8SURMQW55
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwucHJvbWlzZSgpOyB9
KSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50X3Byb21pc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55
Pihmb3J3YXJkR2V0VG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgZm9yd2FyZEdldFRvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9n
ZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
Zm9yd2FyZEhhc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNh
c3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGZvcndhcmRIYXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25faGFz
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KGZvcndhcmRLZXlzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGZvcndhcmRLZXlzVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9rZXlzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI3Nyw3
ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZv
cndhcmRWYWx1ZXNUb01hcExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpj
YXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
Zm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
KmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI5Niw3ICsyOTYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQW55PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNh
bGxiYWNrKSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZv
cndhcmRGb3JFYWNoVG9NYXBMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAq
Y2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVhZE9ubHlTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
YXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRIYXNUb1NldExpa2UoKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkSGFzVG9TZXRMaWtl
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShr
ZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5U2V0
TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hhcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRW50cmllc1RvU2V0
TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRW50cmllc1Rv
U2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlTZXRMaWtlUHJv
dG90eXBlRnVuY3Rpb25fZW50cmllcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvU2V0TGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkS2V5c1RvU2V0TGlrZSgq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVu
Y3Rpb25fa2V5cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC0yNTYsNyArMjU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRWYWx1ZXNUb1NldExpa2UoKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX3Zh
bHVlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0
PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+
KGZvcndhcmRGb3JFYWNoVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAqY2FzdGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkRm9yRWFjaFRvU2V0TGlrZSgqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFJlYWRPbmx5U2V0TGlrZVBy
b3RvdHlwZUZ1bmN0aW9uX2ZvckVhY2gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsOSAr
MzIzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0PElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5mdW5jdGlvbihX
VEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkg
LT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5mdW5jdGlvbihXVEZNb3ZlKHZhbHVlKSk7
IH0pKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbl9mdW5jdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zNDAs
NyArMzM4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXJpYWxpemVkU2Ny
aXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5mdW5jdGlvblJldHVybmluZygpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1w
bC5mdW5jdGlvblJldHVybmluZygpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fZnVu
Y3Rpb25SZXR1cm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
dExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEhhc1RvU2V0TGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVu
Y3Rpb25faGFzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRFbnRyaWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRFbnRyaWVzVG9TZXRMaWtlKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fZW50cmllcywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55Pihmb3J3YXJkS2V5c1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBmb3J3YXJkS2V5c1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgKmNhc3RlZFRoaXMpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNUZXN0U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2tleXMsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjYyLDcgKzI2Miw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZFZh
bHVlc1RvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRo
aXMpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJk
VmFsdWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVk
VGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlUHJv
dG90eXBlRnVuY3Rpb25fdmFsdWVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb1NldExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRGb3JFYWNoVG9T
ZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RG
TW92ZShjYWxsYmFjaykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2ZvckVhY2gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzAwLDcgKzMwMCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIGtleSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEFkZFRvU2V0TGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRBZGRUb1Nl
dExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZN
b3ZlKGtleSkpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlr
ZVByb3RvdHlwZUZ1bmN0aW9uX2FkZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMTQsOSArMzE0LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBmb3J3YXJkQ2xlYXJUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICpjYXN0ZWRUaGlzKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkQ2xlYXJU
b1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VQcm90b3R5cGVG
dW5jdGlvbl9jbGVhciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkBAIC0zMzUsNyArMzMzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8ga2V5ID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55Pihmb3J3YXJkRGVsZXRlVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92ZShrZXkpKSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZERlbGV0ZVRvU2V0TGlrZSgqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVu
Y3Rpb25fZGVsZXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDkgKzI0OSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLmRlbGV0ZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuZGVsZXRlKCk7IH0pKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZGVsZXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTI3MCw3ICsyNjgsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBrZXkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRIYXNUb1NldExpa2UoKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBmb3J3YXJkSGFzVG9TZXRM
aWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcywgV1RGTW92
ZShrZXkpKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9oYXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMjg0
LDcgKzI4Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4o
Zm9yd2FyZEVudHJpZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICpjYXN0ZWRUaGlzKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgZm9yd2FyZEVudHJpZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVz
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTI5OCw3ICsyOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExBbnk+KGZvcndhcmRLZXlzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGZvcndhcmRLZXlzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25f
a2V5cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC0zMTIsNyArMzEwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMQW55Pihmb3J3YXJkVmFsdWVzVG9TZXRMaWtlKCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAqY2FzdGVkVGhpcykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGZvcndhcmRWYWx1ZXNUb1NldExpa2UoKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVG
dW5jdGlvbl92YWx1ZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtMzMxLDcgKzMyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvU2V0TGlrZSgqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZm9yd2FyZEZvckVhY2hUb1NldExpa2Uo
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGNh
bGxiYWNrKSkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBA
IC0zNDUsOSArMzQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBmb3J3YXJkQ2xlYXJUb1NldExpa2UoKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBmb3J3YXJkQ2xlYXJUb1NldExpa2UoKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICpjYXN0ZWRUaGlzKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlv
bl9jbGVhciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGltcGwudG9TdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC50b1N0cmluZygpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbi5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwudG9TdHJpbmcoKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50
b1N0cmluZygpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuaWRlbnRpZmllcigpKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZpZXIo
KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9pZGVudGlmaWVyLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE5NSw3ICsx
OTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGltcGwuaWRlbnRpZmllcigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmlkZW50aWZpZXIoKSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Q
cm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmFs
dGVybmF0ZUlkZW50aWZpZXIoKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uX2lk
ZW50aWZpZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5hbHRlcm5hdGVJ
ZGVudGlmaWVyKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuYWx0ZXJuYXRlSWRlbnRpZmllcigpKSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90
eXBlRnVuY3Rpb25fdG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzgsNyArMTc4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbXBsLnRvU3RyaW5nKCkpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudG9TdHJpbmcoKSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pZGVudGlmaWVyKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigpKSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pZGVudGlmaWVyKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaWRlbnRpZmllcigp
KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDcgKzgwLDYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0VAog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbl9zdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fc3RyaW5nU2VxdWVuY2VG
dW5jdGlvbjIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbl9jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uX21ldGhvZFdpdGhFeGNlcHRpb24pOwogCiAvLyBBdHRyaWJ1dGVzCiAKQEAgLTIy
Myw3ICsyMjIsNiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0VHlwZWRlCiAg
ICAgeyAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbl9zdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsg
InN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
X3N0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImNh
bGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uX2NhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKSwgKGludHB0cl90
KSAoMSkgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
IH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdFR5cGVkZWZzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSkgfTsKQEAgLTQ5OSw5ICs0OTcs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
YXV0byB4ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExT
ZXF1ZW5jZTxJRExMb25nPj46OlJldHVyblR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElE
TExvbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5mdW5jKFdURk1vdmUoeCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwuZnVuYyhXVEZNb3ZlKHgpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fZnVuYywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01MzMsOSAr
NTI5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDQpOwog
ICAgIGF1dG8gYWxwaGEgPSBhcmd1bWVudDQudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8Q29udmVydGVyPElETFVucmVzdHJpY3RlZEZsb2F0Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlv
bmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8
SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDQudmFs
dWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5zZXRTaGFkb3coV1RG
TW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyKSwgV1RGTW92ZShjb2xv
ciksIFdURk1vdmUoYWxwaGEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnNldFNoYWRvdyhXVEZNb3ZlKHdp
ZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3ZlKGJsdXIpLCBXVEZNb3ZlKGNvbG9yKSwgV1RG
TW92ZShhbHBoYSkpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9zZXRTaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNTU1LDcgKzU0OSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExTZXJpYWxp
emVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oaW1wbC5tZXRob2RX
aXRoU2VxdWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbnNpZ25lZExvbmdM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5tZXRob2RXaXRoU2Vx
dWVuY2VBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoU2VxdWVu
Y2VBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtNTc1LDkgKzU2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0gY29u
dmVydDxJRExOdWxsYWJsZTxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwubnVsbGFibGVTZXF1ZW5jZUFyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5udWxsYWJsZVNlcXVlbmNlQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsgfSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25fbnVsbGFibGVTZXF1ZW5jZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC01OTcsOSArNTg5LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETE51bGxhYmxlPElETERP
TVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5zZXF1ZW5jZU9mTnVsbGFibGVzQXJnKFdU
Rk1vdmUoc2VxdWVuY2VBcmcpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnNlcXVlbmNlT2ZOdWxsYWJsZXNB
cmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9zZXF1ZW5jZU9mTnVsbGFibGVz
QXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKQEAgLTYxOSw5ICs2MDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZl
cnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgaW1wbC5udWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoV1RGTW92
ZShzZXF1ZW5jZUFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFi
bGVzQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcpKTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fbnVsbGFibGVTZXF1ZW5j
ZU9mTnVsbGFibGVzQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY0MSw5ICs2MjksNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBzZXF1ZW5j
ZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8SURMVW5pb248SURMRE9NU3Ry
aW5nLCBJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5u
dWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwubnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKFdURk1vdmUoc2VxdWVuY2VBcmcp
KTsgfSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25fbnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTY2Myw5
ICs2NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byB1bmlvbkFyZyA9IGNvbnZlcnQ8SURMVW5pb248SURMRE9NU3Ry
aW5nLCBJRExMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5pb25BcmcoV1RGTW92ZSh1bmlv
bkFyZykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudW5pb25BcmcoV1RGTW92ZSh1bmlvbkFyZykpOyB9KSkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbl91bmlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC02ODgsOSArNjcyLDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGF1dG8gYXJnMiA9IGFyZ3VtZW50
MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMQ2xhbXBBZGFw
dG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZl
cnRlcjxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsK
LSAgICBpbXBsLmZ1bmNXaXRoQ2xhbXAoV1RGTW92ZShhcmcxKSwgV1RGTW92ZShhcmcyKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC5mdW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikp
OyB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbl9mdW5jV2l0aENsYW1wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcxMCw5ICs2OTIsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
YXV0byBhcmcgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExMb25nPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwuZnVuY1dpdGhDbGFtcEluVHlwZWRlZihXVEZNb3ZlKGFyZykpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwuZnVuY1dpdGhDbGFtcEluVHlwZWRlZihXVEZNb3ZlKGFyZykpOyB9KSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9m
dW5jV2l0aENsYW1wSW5UeXBlZGVmLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTcyNyw3ICs3MDcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9pbnRGdW5jdGlvbigp
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnBvaW50RnVuY3Rpb24oKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25fcG9pbnRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03ODcsNyArNzY3LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8g
c2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0RXZlbnRU
YXJnZXQ+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29s
ZWFuPihpbXBsLmNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKFdURk1vdmUoc2Vx
dWVuY2VBcmcpKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoV1RGTW92ZShzZXF1
ZW5jZUFyZykpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbl9jYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCkBAIC03OTUsMjMgKzc3NSw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RU
eXBlZGVmc1AKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX2NhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWly
ZXNJbmNsdWRlQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJjYWxsV2l0
aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRo
RXhjZXB0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlw
ZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewotICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRp
b24oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4Y2Vw
dGlvbigpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQot
Ci1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoRXhjZXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhv
ZFdpdGhFeGNlcHRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1l
dGhvZFdpdGhFeGNlcHRpb24iKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0VHlwZWRl
ZnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDYgQEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgRXhwb3Nl
ZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENTU0dyb3VwaW5nUnVsZSA6IENTU1J1bGUgewogICAgIFtT
YW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoQ1NTT01TdHJpbmcg
cnVsZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
dW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKENTU09NU3RyaW5nIHJ1bGUsIG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICB1bmRlZmluZWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBs
b25nIGluZGV4KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFy
YXRpb24uaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAKICAgICBE
T01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01TdHJpbmcgcHJvcGVydHkpOwogICAgIC8vIEZJ
WE1FOiBUaGUgcmV0dXJuIHZhbHVlIG9mICdnZXRQcm9wZXJ0eVByaW9yaXR5JyBzaG91bGQgbm90
IGJlIG51bGxhYmxlLgogICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0eShET01TdHJp
bmcgcHJvcGVydHkpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHksIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdd
IERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSBET01TdHJpbmcgcmVtb3ZlUHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5KTsKKyAg
ICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHks
IFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHkpOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlPyBwYXJlbnRSdWxlOwogICAgIFtDRVJlYWN0
aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNzc0Zs
b2F0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDExICsyMiwxMSBAQAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFj
ZSBDU1NTdHlsZVNoZWV0IDogU3R5bGVTaGVldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENT
U1J1bGUgb3duZXJSdWxlOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1j
c3NSdWxlc0ZvckJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVs
ZXM7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoRE9N
U3RyaW5nIHJ1bGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIFtJbXBsZW1lbnRlZEFzPWNzc1J1bGVzRm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKKyAgICB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUo
RE9NU3RyaW5nIHJ1bGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICB1
bmRlZmluZWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1ydWxlc0ZvckJpbmRpbmdzXSByZWFkb25seSBhdHRy
aWJ1dGUgQ1NTUnVsZUxpc3QgcnVsZXM7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGFk
ZFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5lZCIsIG9wdGlvbmFs
IERPTVN0cmluZyBzdHlsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmVSdWxlKG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1ydWxlc0Zv
ckJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgcnVsZXM7CisgICAgbG9u
ZyBhZGRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBvcHRp
b25hbCBET01TdHJpbmcgc3R5bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgdW5kZWZpbmVkIHJlbW92ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBpbmRleCA9IDApOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3Bh
Y2UrQ1NTUHJvcGVydGllc2FuZFZhbHVlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU05hbWVzcGFjZStDU1NQcm9wZXJ0aWVzYW5kVmFsdWVzLmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZStDU1NQcm9w
ZXJ0aWVzYW5kVmFsdWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNSArMjgsNSBAQAogICAg
IEVuYWJsZWRCeVNldHRpbmc9Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlcywKICAgICBJbXBs
ZW1lbnRlZEJ5PURPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkKIF0gcGFydGlhbCBpbnRlcmZh
Y2UgRE9NQ1NTTmFtZXNwYWNlIHsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhj
ZXB0aW9uXSBzdGF0aWMgdW5kZWZpbmVkIHJlZ2lzdGVyUHJvcGVydHkoRE9NQ1NTQ3VzdG9tUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gc3Rh
dGljIHVuZGVmaW5lZCByZWdpc3RlclByb3BlcnR5KERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3Jp
cHRvciBkZXNjcmlwdG9yKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKIF0gaW50ZXJmYWNlIERPTU1hdHJpeCA6IERPTU1h
dHJpeFJlYWRPbmx5IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29u
c3RydWN0b3Iob3B0aW9uYWwgKERPTVN0cmluZyBvciBzZXF1ZW5jZTx1bnJlc3RyaWN0ZWQgZG91
YmxlPikgaW5pdCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGlj
IERPTU1hdHJpeCBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9h
dDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5MzIpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5
IGFycmF5NjQpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbU1hdHJpeChv
cHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9N
TWF0cml4IGZyb21GbG9hdDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5MzIpOworICAgIFtOZXdP
YmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJy
YXk2NCk7CiAKICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBmb3Ig
Y2VydGFpbiBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJpeAogICAgIGluaGVyaXQgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgYTsgLy8gQWxpYXMgZm9yIG0xMS4KQEAgLTYyLDggKzYyLDgg
QEAKICAgICBpbmhlcml0IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG00NDsKIAogICAg
IC8vIE11dGFibGUgdHJhbnNmb3JtIG1ldGhvZHMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TU1hdHJpeCBtdWx0aXBseVNlbGYob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBET01NYXRyaXggcHJlTXVsdGlwbHlTZWxmKG9wdGlvbmFsIERP
TU1hdHJpeEluaXQgb3RoZXIpOworICAgIERPTU1hdHJpeCBtdWx0aXBseVNlbGYob3B0aW9uYWwg
RE9NTWF0cml4SW5pdCBvdGhlcik7CisgICAgRE9NTWF0cml4IHByZU11bHRpcGx5U2VsZihvcHRp
b25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKICAgICBET01NYXRyaXggdHJhbnNsYXRlU2VsZihv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHR4ID0gMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHR5ID0gMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHR6ID0gMCk7CkBA
IC05MCw1ICs5MCw1IEBACiAgICAgRE9NTWF0cml4IHNrZXdZU2VsZihvcHRpb25hbCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCiAgICAgRE9NTWF0
cml4IGludmVydFNlbGYoKTsKIAotICAgIFtFeHBvc2VkPVdpbmRvdywgTWF5VGhyb3dFeGNlcHRp
b24sIEltcGxlbWVudGVkQXM9c2V0TWF0cml4VmFsdWVGb3JCaW5kaW5nc10gRE9NTWF0cml4IHNl
dE1hdHJpeFZhbHVlKERPTVN0cmluZyB0cmFuc2Zvcm1MaXN0KTsKKyAgICBbRXhwb3NlZD1XaW5k
b3csIEltcGxlbWVudGVkQXM9c2V0TWF0cml4VmFsdWVGb3JCaW5kaW5nc10gRE9NTWF0cml4IHNl
dE1hdHJpeFZhbHVlKERPTVN0cmluZyB0cmFuc2Zvcm1MaXN0KTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDkgKzMwLDkgQEAKIF0gaW50ZXJmYWNlIERPTU1hdHJpeFJlYWRPbmx5IHsKICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3Iob3B0aW9uYWwgKERPTVN0
cmluZyBvciBzZXF1ZW5jZTx1bnJlc3RyaWN0ZWQgZG91YmxlPikgaW5pdCk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21N
YXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5
KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVj
dF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5
IGFycmF5NjQpOworICAgIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9t
TWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOworICAgIFtOZXdPYmplY3RdIHN0
YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJh
eTMyKTsKKyAgICBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0
NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CiAKICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVz
IGFyZSBzaW1wbGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJp
eAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGE7IC8vIEFsaWFz
IGZvciBtMTEuCkBAIC04NywxNSArODcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgYW5nbGUgPSAwKTsg
Ly8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggc2tld1go
b3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdy
ZWVzLgogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBza2V3WShvcHRpb25hbCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCi0gICAgW01heVRocm93
RXhjZXB0aW9uLCBOZXdPYmplY3RdIERPTU1hdHJpeCBtdWx0aXBseShvcHRpb25hbCBET01NYXRy
aXhJbml0IG90aGVyKTsKKyAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggbXVsdGlwbHkob3B0aW9u
YWwgRE9NTWF0cml4SW5pdCBvdGhlcik7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGZsaXBY
KCk7CiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGZsaXBZKCk7CiAgICAgW05ld09iamVjdF0g
RE9NTWF0cml4IGludmVyc2UoKTsKIAogICAgIFtOZXdPYmplY3RdIERPTVBvaW50IHRyYW5zZm9y
bVBvaW50KG9wdGlvbmFsIERPTVBvaW50SW5pdCBwb2ludCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBGbG9hdDMyQXJyYXkgdG9GbG9hdDMyQXJyYXkoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIEZsb2F0NjRBcnJheSB0b0Zsb2F0NjRBcnJheSgpOworICAgIEZsb2F0MzJBcnJheSB0b0Zs
b2F0MzJBcnJheSgpOworICAgIEZsb2F0NjRBcnJheSB0b0Zsb2F0NjRBcnJheSgpOwogCi0gICAg
W0V4cG9zZWQ9V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc3RyaW5naWZpZXI7CisgICAgW0V4
cG9zZWQ9V2luZG93XSBzdHJpbmdpZmllcjsKICAgICBbRGVmYXVsdF0gb2JqZWN0IHRvSlNPTigp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NP
TVByaW1pdGl2ZVZhbHVlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMTMgKzU2LDEzIEBACiAgICAgCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNo
b3J0IHByaW1pdGl2ZVR5cGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBz
ZXRGbG9hdFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCwgb3B0aW9u
YWwgdW5yZXN0cmljdGVkIGZsb2F0IGZsb2F0VmFsdWUgPSBOYU4pOwotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgdW5pdFR5cGUgPSAwKTsKKyAgICB1bmRlZmluZWQgc2V0RmxvYXRWYWx1ZShvcHRp
b25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBm
bG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKKyAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0RmxvYXRW
YWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOwogCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3RyaW5nVmFsdWUob3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgc3RyaW5nVHlwZSA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmdWYWx1ZSk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICB1
bmRlZmluZWQgc2V0U3RyaW5nVmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RyaW5nVHlw
ZSA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgRE9NU3RyaW5nIGdl
dFN0cmluZ1ZhbHVlKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERlcHJlY2F0ZWRDU1NP
TUNvdW50ZXIgZ2V0Q291bnRlclZhbHVlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBEZXBy
ZWNhdGVkQ1NTT01SZWN0IGdldFJlY3RWYWx1ZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RGVwcmVjYXRlZENTU09NUkdCQ29sb3IgZ2V0UkdCQ29sb3JWYWx1ZSgpOworICAgIERlcHJlY2F0
ZWRDU1NPTUNvdW50ZXIgZ2V0Q291bnRlclZhbHVlKCk7CisgICAgRGVwcmVjYXRlZENTU09NUmVj
dCBnZXRSZWN0VmFsdWUoKTsKKyAgICBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBnZXRSR0JDb2xv
clZhbHVlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOwogCiAgICAgUHJvbWlzZTxz
ZXF1ZW5jZTxGb250RmFjZT4+IGxvYWQoRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmlu
ZyB0ZXh0ID0gIiAiKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gY2hlY2soRE9N
U3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0gIiAiKTsKKyAgICBib29sZWFu
IGNoZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIgIik7CiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxGb250RmFjZVNldD4gcmVhZHk7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyBzdGF0dXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDYgQEAKIAog
ICAgIGdldHRlciBET01TdHJpbmc/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9sZE1l
ZGl1bSk7CisgICAgdW5kZWZpbmVkIGRlbGV0ZU1lZGl1bShET01TdHJpbmcgb2xkTWVkaXVtKTsK
ICAgICB1bmRlZmluZWQgYXBwZW5kTWVkaXVtKERPTVN0cmluZyBuZXdNZWRpdW0pOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BYm9ydFNpZ25hbC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2lnbmFsLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2lnbmFsLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogICAgIFByaXZhdGVJZGVudGlmaWVyLAogICAgIFB1YmxpY0lkZW50aWZpZXIKIF0g
aW50ZXJmYWNlIEFib3J0U2lnbmFsIDogRXZlbnRUYXJnZXQgewotICAgIFsgUHJpdmF0ZUlkZW50
aWZpZXIgXSBzdGF0aWMgdW5kZWZpbmVkIHdoZW5TaWduYWxBYm9ydGVkKEFib3J0U2lnbmFsIG9i
amVjdCwgQWJvcnRBbGdvcml0aG0gYWxnb3JpdGhtKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXJd
IHN0YXRpYyBib29sZWFuIHdoZW5TaWduYWxBYm9ydGVkKEFib3J0U2lnbmFsIG9iamVjdCwgQWJv
cnRBbGdvcml0aG0gYWxnb3JpdGhtKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGFib3J0ZWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFib3J0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMSAr
MjIsMTEgQEAKIF0gaW50ZXJmYWNlIENoYXJhY3RlckRhdGEgOiBOb2RlIHsKICAgICBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZGF0YTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBET01TdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQg
bG9uZyBjb3VudCk7CisgICAgRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBv
ZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIHVuZGVmaW5lZCBhcHBlbmREYXRhKERP
TVN0cmluZyBkYXRhKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBpbnNlcnRE
YXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBET01TdHJpbmcgZGF0YSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgZGVsZXRlRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5z
aWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVw
bGFjZURhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQsIERPTVN0
cmluZyBkYXRhKTsKKyAgICB1bmRlZmluZWQgaW5zZXJ0RGF0YSh1bnNpZ25lZCBsb25nIG9mZnNl
dCwgRE9NU3RyaW5nIGRhdGEpOworICAgIHVuZGVmaW5lZCBkZWxldGVEYXRhKHVuc2lnbmVkIGxv
bmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICB1bmRlZmluZWQgcmVwbGFjZURh
dGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQsIERPTVN0cmluZyBk
YXRhKTsKIH07CiAKIENoYXJhY3RlckRhdGEgaW5jbHVkZXMgQ2hpbGROb2RlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAKIC8v
IGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY2hpbGRub2RlCiBpbnRlcmZhY2UgbWl4aW4g
Q2hpbGROb2RlIHsKLSAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAg
IFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBh
ZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbQ0VSZWFjdGlvbnMsIFVu
c2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVwbGFjZVdpdGgoKE5vZGUg
b3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZSgpOworICAgIFtDRVJlYWN0aW9ucywg
VW5zY29wYWJsZV0gdW5kZWZpbmVkIGJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVz
KTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCBhZnRlcigoTm9kZSBv
ciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVu
ZGVmaW5lZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBb
Q0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCByZW1vdmUoKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDYgQEAKIF0gaW50ZXJmYWNlIEN1c3RvbUVsZW1l
bnRSZWdpc3RyeSB7CiAgICAgW0NFUmVhY3Rpb25zLCBDdXN0b21dIHVuZGVmaW5lZCBkZWZpbmUo
RE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsKICAgICBhbnkgZ2V0KERPTVN0
cmluZyBuYW1lKTsKLSAgICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbiwgUmV0dXJuc093blBy
b21pc2VdIFByb21pc2U8dW5kZWZpbmVkPiB3aGVuRGVmaW5lZChET01TdHJpbmcgbmFtZSk7Cisg
ICAgW0N1c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8dW5kZWZpbmVkPiB3aGVuRGVm
aW5lZChET01TdHJpbmcgbmFtZSk7CiAgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgdXBncmFk
ZShOb2RlIHJvb3QpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOCBAQAogICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIERP
TUltcGxlbWVudGF0aW9uIHsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9j
dW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9N
U3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQpOwotICAgIFtOZXdPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5h
bWVzcGFjZVVSSSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CisgICAgW05ld09i
amVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQpOworICAgIFtOZXdP
YmplY3RdIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJ
LCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBvcHRp
b25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKICAgICBbTmV3T2JqZWN0XSBIVE1M
RG9jdW1lbnQgY3JlYXRlSFRNTERvY3VtZW50KG9wdGlvbmFsIERPTVN0cmluZyB0aXRsZSk7CiAK
ICAgICBib29sZWFuIGhhc0ZlYXR1cmUoKTsgLy8gVXNlbGVzczsgYWx3YXlzIHJldHVybnMgdHJ1
ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Qb2ludFJlYWRPbmx5LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NUG9pbnRSZWFkT25seS5pZGwJKHJldmlzaW9u
IDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01Qb2ludFJlYWRPbmx5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIHo7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBk
b3VibGUgdzsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUG9pbnQgbWF0cml4VHJhbnNm
b3JtKG9wdGlvbmFsIERPTU1hdHJpeEluaXQgbWF0cml4KTsKKyAgICBET01Qb2ludCBtYXRyaXhU
cmFuc2Zvcm0ob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBtYXRyaXgpOwogCiAgICAgW0RlZmF1bHRd
IG9iamVjdCB0b0pTT04oKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwx
MCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRGF0
YVRyYW5zZmVySXRlbSBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCi0gICAgW01heVRocm93
RXhjZXB0aW9uXSBEYXRhVHJhbnNmZXJJdGVtPyBhZGQoRE9NU3RyaW5nIGRhdGEsIERPTVN0cmlu
ZyB0eXBlKTsKKyAgICBEYXRhVHJhbnNmZXJJdGVtPyBhZGQoRE9NU3RyaW5nIGRhdGEsIERPTVN0
cmluZyB0eXBlKTsKICAgICBEYXRhVHJhbnNmZXJJdGVtPyBhZGQoRmlsZSBmaWxlKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICB1bmRlZmluZWQgcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgdW5k
ZWZpbmVkIGNsZWFyKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50K0hU
TUwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudCtIVE1MLmlk
bAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50K0hUTUwu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMSArNTgsMTEgQEAgcGFydGlhbCBpbnRlcmZhY2Ug
RG9jdW1lbnQgewogICAgIC8vIEZJWE1FOiBUaGUgSFRNTCBzcGVjIHNheXMgdGhpcyBzaG91bGQg
Y29uc3VsdCB0aGUgInJlc3BvbnNpYmxlIGRvY3VtZW50Ii4gV2Ugc2hvdWxkIGVuc3VyZQogICAg
IC8vIHRoYXQgdGhlIGNhbGxlciBkb2N1bWVudCBtYXRjaGVzIHRob3NlIHNlbWFudGljcy4gSXQg
aXMgcG9zc2libGUgd2Ugc2hvdWxkIHJlcGxhY2UgaXQgd2l0aAogICAgIC8vIHRoZSBleGlzdGlu
ZyAnaW5jdW1iZW50IGRvY3VtZW50JyBjb25jZXB0LgotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdp
dGg9UmVzcG9uc2libGVEb2N1bWVudCwgSW1wbGVtZW50ZWRBcz1vcGVuRm9yQmluZGluZ3MsIE1h
eVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBvcGVuKG9wdGlvbmFsIERPTVN0cmluZyB1bnVzZWQx
LCBvcHRpb25hbCBET01TdHJpbmcgdW51c2VkMik7IC8vIGJvdGggYXJndW1lbnRzIGFyZSBpZ25v
cmVkLgotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIEltcGxlbWVudGVk
QXM9b3BlbkZvckJpbmRpbmdzLCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2luZG93UHJveHkgb3BlbihV
U1ZTdHJpbmcgdXJsLCBET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIGZlYXR1cmVzKTsKLSAgICBb
Q0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9Y2xvc2VGb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBjbG9zZSgpOwotICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVz
cG9uc2libGVEb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB3cml0ZShET01T
dHJpbmcuLi4gdGV4dCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHdyaXRlbG4oRE9NU3RyaW5nLi4u
IHRleHQpOworICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudCwg
SW1wbGVtZW50ZWRBcz1vcGVuRm9yQmluZGluZ3NdIERvY3VtZW50IG9wZW4ob3B0aW9uYWwgRE9N
U3RyaW5nIHVudXNlZDEsIG9wdGlvbmFsIERPTVN0cmluZyB1bnVzZWQyKTsgLy8gYm90aCBhcmd1
bWVudHMgYXJlIGlnbm9yZWQuCisgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRv
dywgSW1wbGVtZW50ZWRBcz1vcGVuRm9yQmluZGluZ3NdIFdpbmRvd1Byb3h5IG9wZW4oVVNWU3Ry
aW5nIHVybCwgRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyBmZWF0dXJlcyk7CisgICAgW0NFUmVh
Y3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb3NlRm9yQmluZGluZ3NdIHVuZGVmaW5lZCBjbG9zZSgp
OworICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudF0gdW5kZWZp
bmVkIHdyaXRlKERPTVN0cmluZy4uLiB0ZXh0KTsKKyAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRo
PVJlc3BvbnNpYmxlRG9jdW1lbnRdIHVuZGVmaW5lZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0
KTsKIAogICAgIC8vIHVzZXIgaW50ZXJhY3Rpb24KICAgICBbSW1wbGVtZW50ZWRBcz13aW5kb3dQ
cm94eV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBkZWZhdWx0VmlldzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudCtTdG9yYWdlQWNjZXNzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQrU3RvcmFnZUFjY2Vzcy5pZGwJKHJldmlz
aW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudCtTdG9yYWdlQWNjZXNz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNiBAQAogICAgIEVuYWJsZWRCeVNldHRp
bmc9c3RvcmFnZUFjY2Vzc0FQSSwKICAgICBJbXBsZW1lbnRlZEJ5PURvY3VtZW50U3RvcmFnZUFj
Y2VzcwogXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1bWVudCB7Ci0gICAgUHJvbWlzZTxib29sPiBo
YXNTdG9yYWdlQWNjZXNzKCk7CisgICAgUHJvbWlzZTxib29sZWFuPiBoYXNTdG9yYWdlQWNjZXNz
KCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHJlcXVlc3RTdG9yYWdlQWNjZXNzKCk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02MSwyMSArNjEsMjEg
QEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3IgU1ZHU2NyaXB0RQogICAgIEhUTUxDb2xs
ZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERP
TVN0cmluZyBsb2NhbE5hbWUpOwogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlDbGFz
c05hbWUoRE9NU3RyaW5nIGNsYXNzTmFtZXMpOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhyb3dF
eGNlcHRpb24sIEltcGxlbWVudGVkQXM9Y3JlYXRlRWxlbWVudEZvckJpbmRpbmdzXSBFbGVtZW50
IGNyZWF0ZUVsZW1lbnQoRE9NU3RyaW5nIGxvY2FsTmFtZSk7IC8vIEZJWE1FOiBtaXNzaW5nIG9w
dGlvbnMgcGFyYW1ldGVyLgotICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBFbGVt
ZW50IGNyZWF0ZUVsZW1lbnROUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KKyAgICBb
TmV3T2JqZWN0LCBJbXBsZW1lbnRlZEFzPWNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5nc10gRWxlbWVu
dCBjcmVhdGVFbGVtZW50KERPTVN0cmluZyBsb2NhbE5hbWUpOyAvLyBGSVhNRTogbWlzc2luZyBv
cHRpb25zIHBhcmFtZXRlci4KKyAgICBbTmV3T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnRO
UyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOyAvLyBG
SVhNRTogbWlzc2luZyBvcHRpb25zIHBhcmFtZXRlci4KICAgICBbTmV3T2JqZWN0XSBEb2N1bWVu
dEZyYWdtZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBbTmV3T2JqZWN0XSBUZXh0
IGNyZWF0ZVRleHROb2RlKERPTVN0cmluZyBkYXRhKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gQ0RBVEFTZWN0aW9uIGNyZWF0ZUNEQVRBU2VjdGlvbihET01TdHJpbmcgZGF0
YSk7CisgICAgW05ld09iamVjdF0gQ0RBVEFTZWN0aW9uIGNyZWF0ZUNEQVRBU2VjdGlvbihET01T
dHJpbmcgZGF0YSk7CiAgICAgW05ld09iamVjdF0gQ29tbWVudCBjcmVhdGVDb21tZW50KERPTVN0
cmluZyBkYXRhKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvY2Vzc2lu
Z0luc3RydWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihET01TdHJpbmcgdGFyZ2V0
LCBET01TdHJpbmcgZGF0YSk7CisgICAgW05ld09iamVjdF0gUHJvY2Vzc2luZ0luc3RydWN0aW9u
IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihET01TdHJpbmcgdGFyZ2V0LCBET01TdHJpbmcg
ZGF0YSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3Rd
IE5vZGUgaW1wb3J0Tm9kZShOb2RlIG5vZGUsIG9wdGlvbmFsIGJvb2xlYW4gZGVlcCA9IGZhbHNl
KTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2RlIGFkb3B0Tm9kZShO
b2RlIG5vZGUpOworICAgIFtDRVJlYWN0aW9ucywgTmV3T2JqZWN0XSBOb2RlIGltcG9ydE5vZGUo
Tm9kZSBub2RlLCBvcHRpb25hbCBib29sZWFuIGRlZXAgPSBmYWxzZSk7CisgICAgW0NFUmVhY3Rp
b25zXSBOb2RlIGFkb3B0Tm9kZShOb2RlIG5vZGUpOwogCi0gICAgW05ld09iamVjdCwgTWF5VGhy
b3dFeGNlcHRpb25dIEF0dHIgY3JlYXRlQXR0cmlidXRlKERPTVN0cmluZyBsb2NhbE5hbWUpOwot
ICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIGNyZWF0ZUF0dHJpYnV0ZU5T
KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAg
W05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRyaWJ1dGUoRE9NU3RyaW5nIGxvY2FsTmFtZSk7Cisg
ICAgW05ld09iamVjdF0gQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFj
ZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
LCBOZXdPYmplY3RdIEV2ZW50IGNyZWF0ZUV2ZW50KERPTVN0cmluZyB0eXBlKTsKKyAgICBbTmV3
T2JqZWN0XSBFdmVudCBjcmVhdGVFdmVudChET01TdHJpbmcgdHlwZSk7CiAKICAgICBbTmV3T2Jq
ZWN0XSBSYW5nZSBjcmVhdGVSYW5nZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudCtET01QYXJzaW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudCtET01QYXJzaW5nLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQrRE9NUGFyc2luZy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDUgKzI2LDUg
QEAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10
aGUtZWxlbWVudC1pbnRlcmZhY2UKIHBhcnRpYWwgaW50ZXJmYWNlIEVsZW1lbnQgewogICAgIFtD
RVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IG91dGVySFRNTDsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgaW5zZXJ0QWRqYWNlbnRIVE1MKERPTVN0cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQp
OworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGluc2VydEFkamFjZW50SFRNTChET01TdHJp
bmcgcG9zaXRpb24sIERPTVN0cmluZyB0ZXh0KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudCtQb2ludGVyRXZlbnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudCtQb2ludGVyRXZlbnRzLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQrUG9pbnRlckV2ZW50cy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVu
dHMvI2V4dGVuc2lvbnMtdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlCiBwYXJ0aWFsIGludGVyZmFj
ZSBFbGVtZW50IHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQb2ludGVy
Q2FwdHVyZSAobG9uZyBwb2ludGVySWQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSAobG9uZyBwb2ludGVySWQpOworICAgIHVuZGVmaW5l
ZCBzZXRQb2ludGVyQ2FwdHVyZSAobG9uZyBwb2ludGVySWQpOworICAgIHVuZGVmaW5lZCByZWxl
YXNlUG9pbnRlckNhcHR1cmUgKGxvbmcgcG9pbnRlcklkKTsKICAgICBib29sZWFuIGhhc1BvaW50
ZXJDYXB0dXJlIChsb25nIHBvaW50ZXJJZCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksNiArMjA5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSk7CisgICAgdm9pZCBy
ZW1vdmVBdHRyaWJ1dGVGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1l
KSB7IHJlbW92ZUF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKTsgfQorICAgIHZvaWQgcmVtb3ZlQXR0
cmlidXRlTlNGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkgeyByZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkks
IGxvY2FsTmFtZSk7IH0KIAogICAgIFJlZjxBdHRyPiBkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQg
aW5kZXgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDMz
ICs0MiwzMyBAQAogICAgIHNlcXVlbmNlPERPTVN0cmluZz4gZ2V0QXR0cmlidXRlTmFtZXMoKTsK
ICAgICBbRE9NSklUPVJlYWRET01dIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBx
dWFsaWZpZWROYW1lKTsKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBzZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwg
RE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0gICAgW0NFUmVhY3Rp
b25zXSB1bmRlZmluZWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsK
LSAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCByZW1vdmVBdHRyaWJ1dGVOUyhET01TdHJpbmc/
IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB0b2dnbGVBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxp
ZmllZE5hbWUsIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2UpOworICAgIFtDRVJlYWN0aW9uc10gdW5k
ZWZpbmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZh
bHVlKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzZXRBdHRyaWJ1dGVOUyhET01TdHJp
bmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1
ZSk7CisgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPXJlbW92ZUF0dHJpYnV0ZUZvckJp
bmRpbmdzXSB1bmRlZmluZWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1l
KTsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9cmVtb3ZlQXR0cmlidXRlTlNGb3JC
aW5kaW5nc10gdW5kZWZpbmVkIHJlbW92ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICBbQ0VSZWFjdGlvbnNdIGJvb2xlYW4gdG9n
Z2xlQXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBvcHRpb25hbCBib29sZWFuIGZv
cmNlKTsKICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7
CiAgICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9N
U3RyaW5nIGxvY2FsTmFtZSk7CiAKICAgICBbRE9NSklUPVJlYWRET01dIEF0dHI/IGdldEF0dHJp
YnV0ZU5vZGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIEF0dHI/IGdldEF0dHJpYnV0
ZU5vZGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7Ci0g
ICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0QXR0cmlidXRlTm9k
ZShBdHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/
IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyIGF0dHIpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIGF0dHIpOworICAgIFtD
RVJlYWN0aW9uc10gQXR0cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIGF0dHIpOworICAgIFtDRVJl
YWN0aW9uc10gQXR0cj8gc2V0QXR0cmlidXRlTm9kZU5TKEF0dHIgYXR0cik7CisgICAgW0NFUmVh
Y3Rpb25zXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciBhdHRyKTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gU2hhZG93Um9vdCBhdHRhY2hTaGFkb3coU2hhZG93Um9vdEluaXQgaW5p
dCk7CisgICAgU2hhZG93Um9vdCBhdHRhY2hTaGFkb3coU2hhZG93Um9vdEluaXQgaW5pdCk7CiAg
ICAgW0ltcGxlbWVudGVkQXM9c2hhZG93Um9vdEZvckJpbmRpbmdzLCBDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTaGFkb3dSb290PyBzaGFkb3dSb290OwogCi0gICAg
W01heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBjbG9zZXN0KERPTVN0cmluZyBzZWxlY3RvcnMp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBtYXRjaGVzKERPTVN0cmluZyBzZWxl
Y3RvcnMpOwotICAgIFtJbXBsZW1lbnRlZEFzPW1hdGNoZXMsIE1heVRocm93RXhjZXB0aW9uXSBi
b29sZWFuIHdlYmtpdE1hdGNoZXNTZWxlY3RvcihET01TdHJpbmcgc2VsZWN0b3JzKTsgLy8gSGlz
dG9yaWNhbCBhbGlhcyBvZiAubWF0Y2hlcy4KKyAgICBFbGVtZW50PyBjbG9zZXN0KERPTVN0cmlu
ZyBzZWxlY3RvcnMpOworICAgIGJvb2xlYW4gbWF0Y2hlcyhET01TdHJpbmcgc2VsZWN0b3JzKTsK
KyAgICBbSW1wbGVtZW50ZWRBcz1tYXRjaGVzXSBib29sZWFuIHdlYmtpdE1hdGNoZXNTZWxlY3Rv
cihET01TdHJpbmcgc2VsZWN0b3JzKTsgLy8gSGlzdG9yaWNhbCBhbGlhcyBvZiAubWF0Y2hlcy4K
IAogICAgIFtET01KSVQ9UmVhZERPTV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05h
bWUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1l
bnRzQnlUYWdOYW1lTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5h
bWUpOwogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoRE9NU3RyaW5n
IG5hbWUpOwogCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8g
aW5zZXJ0QWRqYWNlbnRFbGVtZW50KERPTVN0cmluZyB3aGVyZSwgRWxlbWVudCBlbGVtZW50KTsg
Ly8gSGlzdG9yaWNhbC4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBpbnNlcnRB
ZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgZGF0YSk7IC8vIEhpc3Rvcmlj
YWwuCisgICAgW0NFUmVhY3Rpb25zXSBFbGVtZW50PyBpbnNlcnRBZGphY2VudEVsZW1lbnQoRE9N
U3RyaW5nIHdoZXJlLCBFbGVtZW50IGVsZW1lbnQpOyAvLyBIaXN0b3JpY2FsLgorICAgIHVuZGVm
aW5lZCBpbnNlcnRBZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJlLCBET01TdHJpbmcgZGF0YSk7
IC8vIEhpc3RvcmljYWwuCiAKICAgICAKICAgICAvLyBGSVhNRTogTW9zdCBvZiB0aGUgZm9sbG93
aW5nIG5vbi1zdGFuZGFyZCBldmVudCBoYW5kbGVycyBwcm9iYWJseSBtYWtlIG1vcmUgc2Vuc2Ug
YXMgcGFydCBvZiB0aGUgR2xvYmFsRXZlbnRIYW5kbGVycyBtaXhpbi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNSArMzAsNSBAQAogCiAg
ICAgW0ltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzXSB1bmRlZmluZWQg
YWRkRXZlbnRMaXN0ZW5lcihbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVu
ZXI/IGNhbGxiYWNrLCBvcHRpb25hbCAoQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVh
bikgb3B0aW9ucyA9IGZhbHNlKTsKICAgICBbSW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3Rl
bmVyRm9yQmluZGluZ3NdIHVuZGVmaW5lZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9tU3RyaW5n
XSBET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lcj8gY2FsbGJhY2ssIG9wdGlvbmFsIChFdmVu
dExpc3RlbmVyT3B0aW9ucyBvciBib29sZWFuKSBvcHRpb25zID0gZmFsc2UpOwotICAgIFtJbXBs
ZW1lbnRlZEFzPWRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb25dIGJv
b2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7CisgICAgW0ltcGxlbWVudGVkQXM9ZGlz
cGF0Y2hFdmVudEZvckJpbmRpbmdzXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQp
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOCArMzEsOCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbCwKICAgICBKU0N1
c3RvbU1hcmtGdW5jdGlvbiwKIF0gaW50ZXJmYWNlIE1lc3NhZ2VQb3J0IDogRXZlbnRUYXJnZXQg
ewotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOwot
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRp
b25zKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2Uo
YW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOworICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwg
UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogICAgIHVuZGVmaW5lZCBzdGFydCgpOwogICAg
IHVuZGVmaW5lZCBjbG9zZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIF0gaW50ZXJm
YWNlIE11dGF0aW9uT2JzZXJ2ZXIgewogICAgIGNvbnN0cnVjdG9yKE11dGF0aW9uQ2FsbGJhY2sg
Y2FsbGJhY2spOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgb2JzZXJ2ZShO
b2RlIHRhcmdldCwgb3B0aW9uYWwgTXV0YXRpb25PYnNlcnZlckluaXQgb3B0aW9ucyk7CisgICAg
dW5kZWZpbmVkIG9ic2VydmUoTm9kZSB0YXJnZXQsIG9wdGlvbmFsIE11dGF0aW9uT2JzZXJ2ZXJJ
bml0IG9wdGlvbnMpOwogICAgIHVuZGVmaW5lZCBkaXNjb25uZWN0KCk7CiAgICAgW1Jlc3VsdEZp
ZWxkPXJlY29yZHNdIHNlcXVlbmNlPE11dGF0aW9uUmVjb3JkPiB0YWtlUmVjb3JkcygpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjksOCArMjksOCBAQAogICAgIGdldHRlciBBdHRyPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OwogICAgIGdldHRlciBBdHRyPyBnZXROYW1lZEl0ZW0oRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUp
OwogICAgIEF0dHI/IGdldE5hbWVkSXRlbU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01T
dHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBB
dHRyPyBzZXROYW1lZEl0ZW0oQXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93
RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXNldE5hbWVkSXRlbV0gQXR0cj8gc2V0TmFtZWRJdGVt
TlMoQXR0ciBhdHRyKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRy
IHJlbW92ZU5hbWVkSXRlbShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7Ci0gICAgW0NFUmVhY3Rp
b25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciByZW1vdmVOYW1lZEl0ZW1OUyhET01TdHJpbmc/
IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CisgICAgW0NFUmVhY3Rpb25zXSBB
dHRyPyBzZXROYW1lZEl0ZW0oQXR0ciBhdHRyKTsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVu
dGVkQXM9c2V0TmFtZWRJdGVtXSBBdHRyPyBzZXROYW1lZEl0ZW1OUyhBdHRyIGF0dHIpOworICAg
IFtDRVJlYWN0aW9uc10gQXR0ciByZW1vdmVOYW1lZEl0ZW0oRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUpOworICAgIFtDRVJlYWN0aW9uc10gQXR0ciByZW1vdmVOYW1lZEl0ZW1OUyhET01TdHJpbmc/
IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBACiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nPyB0ZXh0Q29udGVudDsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBu
b3JtYWxpemUoKTsKIAotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVG
b3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gTm9kZSBjbG9uZU5vZGUo
b3B0aW9uYWwgYm9vbGVhbiBkZWVwID0gZmFsc2UpOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVt
ZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5ncywgTmV3T2JqZWN0XSBOb2RlIGNsb25lTm9kZShv
cHRpb25hbCBib29sZWFuIGRlZXAgPSBmYWxzZSk7CiAgICAgYm9vbGVhbiBpc0VxdWFsTm9kZShO
b2RlPyBvdGhlcik7CiAgICAgYm9vbGVhbiBpc1NhbWVOb2RlKE5vZGU/IG90aGVyKTsgLy8gSGlz
dG9yaWNhbCBhbGlhcyBvZiA9PT0uCiAKQEAgLTc4LDEwICs3OCwxMCBAQAogICAgIERPTVN0cmlu
Zz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKICAgICBib29sZWFuIGlz
RGVmYXVsdE5hbWVzcGFjZShET01TdHJpbmc/IG5hbWVzcGFjZVVSSSk7CiAKLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVd
IE5vZGUgbm9kZSwgTm9kZT8gY2hpbGQpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIE5vZGUgYXBwZW5kQ2hpbGQoW1JldHVyblZhbHVlXSBOb2RlIG5vZGUpOwotICAgIFtD
RVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIE5vZGUgcmVwbGFjZUNoaWxkKE5vZGUgbm9k
ZSwgW1JldHVyblZhbHVlXSBOb2RlIGNoaWxkKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93
RXhjZXB0aW9uXSBOb2RlIHJlbW92ZUNoaWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7Cisg
ICAgW0NFUmVhY3Rpb25zXSBOb2RlIGluc2VydEJlZm9yZShbUmV0dXJuVmFsdWVdIE5vZGUgbm9k
ZSwgTm9kZT8gY2hpbGQpOworICAgIFtDRVJlYWN0aW9uc10gTm9kZSBhcHBlbmRDaGlsZChbUmV0
dXJuVmFsdWVdIE5vZGUgbm9kZSk7CisgICAgW0NFUmVhY3Rpb25zXSBOb2RlIHJlcGxhY2VDaGls
ZChOb2RlIG5vZGUsIFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CisgICAgW0NFUmVhY3Rpb25z
XSBOb2RlIHJlbW92ZUNoaWxkKFtSZXR1cm5WYWx1ZV0gTm9kZSBjaGlsZCk7CiB9OwogCiBkaWN0
aW9uYXJ5IEdldFJvb3ROb2RlT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZUl0ZXJhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJh
dG9yLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBOb2RlRmlsdGVyPyBmaWx0ZXI7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IG5l
eHROb2RlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBwcmV2aW91c05vZGUoKTsK
KyAgICBOb2RlPyBuZXh0Tm9kZSgpOworICAgIE5vZGU/IHByZXZpb3VzTm9kZSgpOwogCiAgICAg
dW5kZWZpbmVkIGRldGFjaCgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnRO
b2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBAIGludGVyZmFjZSBtaXhpbiBQYXJlbnRO
b2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gbGFzdEVsZW1lbnRDaGlsZDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsK
IAotICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtDRVJlYWN0
aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhcHBlbmQoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxl
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcGxhY2VDaGlsZHJlbigoTm9kZSBvciBE
T01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVm
aW5lZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtDRVJlYWN0
aW9ucywgVW5zY29wYWJsZV0gdW5kZWZpbmVkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4u
IG5vZGVzKTsKKyAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCByZXBsYWNl
Q2hpbGRyZW4oKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEVsZW1lbnQ/IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JB
bGwoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgRWxlbWVudD8gcXVlcnlTZWxlY3RvcihET01T
dHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbTmV3T2JqZWN0XSBOb2RlTGlzdCBxdWVyeVNlbGVjdG9y
QWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZStET01QYXJzaW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UrRE9NUGFyc2luZy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZStET01QYXJzaW5nLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNSArMjUsNSBAQAog
CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vRE9NLVBhcnNpbmcvI2V4dGVuc2lvbnMtdG8tdGhl
LXJhbmdlLWludGVyZmFjZQogcGFydGlhbCBpbnRlcmZhY2UgUmFuZ2UgewotICAgIFtDRVJlYWN0
aW9ucywgTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnRGcmFnbWVudCBjcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQoRE9NU3RyaW5nIGZyYWdtZW50KTsKKyAgICBbQ0VSZWFjdGlv
bnMsIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQo
RE9NU3RyaW5nIGZyYWdtZW50KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5pZGwJKHJldmlzaW9u
IDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDQzICsyOCw0MyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgY29tbW9u
QW5jZXN0b3JDb250YWluZXI7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBz
ZXRTdGFydChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRFbmQoTm9kZSBub2RlLCB1bnNpZ25lZCBsb25nIG9mZnNl
dCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3RhcnRCZWZvcmUoTm9k
ZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTdGFydEFmdGVy
KE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RW5kQmVm
b3JlKE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RW5k
QWZ0ZXIoTm9kZSBub2RlKTsKKyAgICB1bmRlZmluZWQgc2V0U3RhcnQoTm9kZSBub2RlLCB1bnNp
Z25lZCBsb25nIG9mZnNldCk7CisgICAgdW5kZWZpbmVkIHNldEVuZChOb2RlIG5vZGUsIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0KTsKKyAgICB1bmRlZmluZWQgc2V0U3RhcnRCZWZvcmUoTm9kZSBub2Rl
KTsKKyAgICB1bmRlZmluZWQgc2V0U3RhcnRBZnRlcihOb2RlIG5vZGUpOworICAgIHVuZGVmaW5l
ZCBzZXRFbmRCZWZvcmUoTm9kZSBub2RlKTsKKyAgICB1bmRlZmluZWQgc2V0RW5kQWZ0ZXIoTm9k
ZSBub2RlKTsKICAgICB1bmRlZmluZWQgY29sbGFwc2Uob3B0aW9uYWwgYm9vbGVhbiB0b1N0YXJ0
ID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbGVjdE5vZGUo
Tm9kZSBub2RlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZWxlY3ROb2Rl
Q29udGVudHMoTm9kZSBub2RlKTsKKyAgICB1bmRlZmluZWQgc2VsZWN0Tm9kZShOb2RlIG5vZGUp
OworICAgIHVuZGVmaW5lZCBzZWxlY3ROb2RlQ29udGVudHMoTm9kZSBub2RlKTsKIAogICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IFNUQVJUX1RPX1NUQVJUID0gMDsKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBTVEFSVF9UT19FTkQgPSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEVORF9U
T19FTkQgPSAyOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEVORF9UT19TVEFSVCA9IDM7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBzaG9ydCBjb21wYXJlQm91bmRhcnlQb2ludHModW5zaWdu
ZWQgc2hvcnQgaG93LCBSYW5nZSBzb3VyY2VSYW5nZSk7CisgICAgc2hvcnQgY29tcGFyZUJvdW5k
YXJ5UG9pbnRzKHVuc2lnbmVkIHNob3J0IGhvdywgUmFuZ2Ugc291cmNlUmFuZ2UpOwogCi0gICAg
W0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0ZUNvbnRlbnRz
KCk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1
bWVudEZyYWdtZW50IGV4dHJhY3RDb250ZW50cygpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7
Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGluc2VydE5v
ZGUoTm9kZSBub2RlKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgc3Vycm91bmRDb250ZW50cyhOb2RlIG5ld1BhcmVudCk7CisgICAgW0NFUmVhY3Rpb25z
XSB1bmRlZmluZWQgZGVsZXRlQ29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMsIE5ld09iamVj
dF0gRG9jdW1lbnRGcmFnbWVudCBleHRyYWN0Q29udGVudHMoKTsKKyAgICBbQ0VSZWFjdGlvbnMs
IE5ld09iamVjdF0gRG9jdW1lbnRGcmFnbWVudCBjbG9uZUNvbnRlbnRzKCk7CisgICAgW0NFUmVh
Y3Rpb25zXSB1bmRlZmluZWQgaW5zZXJ0Tm9kZShOb2RlIG5vZGUpOworICAgIFtDRVJlYWN0aW9u
c10gdW5kZWZpbmVkIHN1cnJvdW5kQ29udGVudHMoTm9kZSBuZXdQYXJlbnQpOwogCiAgICAgW05l
d09iamVjdF0gUmFuZ2UgY2xvbmVSYW5nZSgpOwogICAgIHVuZGVmaW5lZCBkZXRhY2goKTsKIAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1BvaW50SW5SYW5nZShOb2RlIG5vZGUs
IHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNv
bXBhcmVQb2ludChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBib29sZWFu
IGlzUG9pbnRJblJhbmdlKE5vZGUgbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworICAgIHNo
b3J0IGNvbXBhcmVQb2ludChOb2RlIG5vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIAogICAg
IGJvb2xlYW4gaW50ZXJzZWN0c05vZGUoTm9kZSBub2RlKTsKIAogICAgIHN0cmluZ2lmaWVyOwog
CiAgICAgLy8gTm9uLXN0YW5kYXJkOiBXZSBzaG91bGQgZXZlbnR1YWxseSBkcm9wIHRoaXMgc2lu
Y2Ugbm8gb3RoZXIgYnJvd3NlciBzdXBwb3J0cyBpdAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIGV4cGFuZChvcHRpb25hbCBET01TdHJpbmcgdW5pdCk7CisgICAgdW5kZWZpbmVk
IGV4cGFuZChvcHRpb25hbCBET01TdHJpbmcgdW5pdCk7CiAKICAgICAvLyBOb24tc3RhbmRhcmQ6
IFdlIHNob3VsZCBsaWtlbHkgZHJvcCB0aGlzIHNpbmNlIHdlIGFkZGVkIGl0IGZvciBGaXJlZm94
IGludGVyb3BlcmFiaWxpdHksIGJ1dCBub3cgbm8gb3RoZXIgYnJvd3NlciBzdXBwb3J0cyBpdC4K
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHNob3J0IGNvbXBhcmVOb2RlKE5vZGUgbm9kZSk7Cisg
ICAgc2hvcnQgY29tcGFyZU5vZGUoTm9kZSBub2RlKTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBOT0RFX0JFRk9SRSA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9ERV9BRlRFUiA9
IDE7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTk9ERV9CRUZPUkVfQU5EX0FGVEVSID0gMjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogXSBpbnRlcmZh
Y2UgVGV4dCA6IENoYXJhY3RlckRhdGEgewogICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gY29uc3Ry
dWN0b3Iob3B0aW9uYWwgRE9NU3RyaW5nIGRhdGEgPSAiIik7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFRleHQgc3BsaXRUZXh0KHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKKyAgICBUZXh0IHNw
bGl0VGV4dCh1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB3aG9sZVRleHQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dERl
Y29kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDUgKzQxLDUgQEAgZGljdGlvbmFyeSBUZXh0RGVjb2Rl
T3B0aW9ucyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBlbmNvZGluZzsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmYXRhbDsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpZ25vcmVCT007Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBVU1ZTdHJpbmcg
ZGVjb2RlKG9wdGlvbmFsIFtBbGxvd1NoYXJlZF0gQnVmZmVyU291cmNlPyBpbnB1dCwgb3B0aW9u
YWwgVGV4dERlY29kZU9wdGlvbnMgb3B0aW9ucyk7CisgICAgVVNWU3RyaW5nIGRlY29kZShvcHRp
b25hbCBbQWxsb3dTaGFyZWRdIEJ1ZmZlclNvdXJjZT8gaW5wdXQsIG9wdGlvbmFsIFRleHREZWNv
ZGVPcHRpb25zIG9wdGlvbnMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVj
b2RlclN0cmVhbURlY29kZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNiBAQAogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyBsYWJlbCwgYm9vbGVh
biBmYXRhbCwgYm9vbGVhbiBpZ25vcmVCT00pOwogCiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBE
T01TdHJpbmcgZW5jb2RpbmcoKTsKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE1heVRocm93RXhj
ZXB0aW9uXSBET01TdHJpbmcgZGVjb2RlKFtBbGxvd1NoYXJlZF0gQnVmZmVyU291cmNlIHNvdXJj
ZSk7Ci0gICAgW1ByaXZhdGVJZGVudGlmaWVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5n
IGZsdXNoKCk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBET01TdHJpbmcgZGVjb2RlKFtBbGxv
d1NoYXJlZF0gQnVmZmVyU291cmNlIHNvdXJjZSk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBE
T01TdHJpbmcgZmx1c2goKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtl
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCShy
ZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBO
b2RlRmlsdGVyPyBmaWx0ZXI7CiAgICAgYXR0cmlidXRlIE5vZGUgY3VycmVudE5vZGU7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIE5vZGU/IHBhcmVudE5vZGUoKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIE5vZGU/IGZpcnN0Q2hpbGQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE5v
ZGU/IGxhc3RDaGlsZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcHJldmlvdXNT
aWJsaW5nKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBOb2RlPyBuZXh0U2libGluZygpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gcHJldmlvdXNOb2RlKCk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBOb2RlPyBuZXh0Tm9kZSgpOworICAgIE5vZGU/IHBhcmVudE5vZGUoKTsK
KyAgICBOb2RlPyBmaXJzdENoaWxkKCk7CisgICAgTm9kZT8gbGFzdENoaWxkKCk7CisgICAgTm9k
ZT8gcHJldmlvdXNTaWJsaW5nKCk7CisgICAgTm9kZT8gbmV4dFNpYmxpbmcoKTsKKyAgICBOb2Rl
PyBwcmV2aW91c05vZGUoKTsKKyAgICBOb2RlPyBuZXh0Tm9kZSgpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIChC
dWZmZXJTb3VyY2Ugb3IgQmxvYiBvciBVU1ZTdHJpCiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gQmxvYiBzbGljZShvcHRpb25hbCBsb25nIGxvbmcgc3RhcnQgPSAwLCBv
cHRpb25hbCBsb25nIGxvbmcgZW5kID0gMHg3RkZGRkZGRkZGRkZGRkZGLCBvcHRpb25hbCBET01T
dHJpbmcgY29udGVudFR5cGUgPSAiIik7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gUmVhZGFibGVTdHJlYW0gc3Ry
ZWFtKCk7CisgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
UmVhZGFibGVTdHJlYW0gc3RyZWFtKCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxVU1ZTdHJpbmc+IHRleHQoKTsKICAgICBbTmV3T2Jq
ZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlcigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBACiAKICAgICAvLyBGSVhN
RTogSW4gYWxsIGZvdXIgbWV0aG9kcyBmb3VuZCBiZWxvdywgdGhlIGJsb2IgcGFyYW1ldGVyIHNo
b3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgLy8gYXN5bmMgcmVhZCBtZXRob2RzCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYj8gYmxvYik7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVhZEFzQmluYXJ5U3RyaW5nKEJs
b2I/IGJsb2IpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlYWRBc1RleHQo
QmxvYj8gYmxvYiwgb3B0aW9uYWwgRE9NU3RyaW5nIGVuY29kaW5nKTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCByZWFkQXNEYXRhVVJMKEJsb2I/IGJsb2IpOworICAgIHVuZGVm
aW5lZCByZWFkQXNBcnJheUJ1ZmZlcihCbG9iPyBibG9iKTsKKyAgICB1bmRlZmluZWQgcmVhZEFz
QmluYXJ5U3RyaW5nKEJsb2I/IGJsb2IpOworICAgIHVuZGVmaW5lZCByZWFkQXNUZXh0KEJsb2I/
IGJsb2IsIG9wdGlvbmFsIERPTVN0cmluZyBlbmNvZGluZyk7CisgICAgdW5kZWZpbmVkIHJlYWRB
c0RhdGFVUkwoQmxvYj8gYmxvYik7CiAKICAgICB1bmRlZmluZWQgYWJvcnQoKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw4ICszNCw4IEBACiBdIGludGVyZmFjZSBGaWxlUmVhZGVyU3luYyB7CiAg
ICAgY29uc3RydWN0b3IoKTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXJyYXlCdWZmZXIgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYiBi
bG9iKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyByZWFkQXNCaW5hcnlTdHJpbmcoQmxvYiBibG9iKTsKLSAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyByZWFkQXNUZXh0KEJsb2IgYmxvYiwgb3B0aW9uYWwgRE9NU3RyaW5nIGVuY29kaW5nID0gIiIp
OwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIHJlYWRBc0RhdGFVUkwoQmxvYiBibG9iKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gQXJyYXlCdWZmZXIgcmVhZEFzQXJyYXlCdWZmZXIoQmxvYiBi
bG9iKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIHJl
YWRBc0JpbmFyeVN0cmluZyhCbG9iIGJsb2IpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBET01TdHJpbmcgcmVhZEFzVGV4dChCbG9iIGJsb2IsIG9wdGlvbmFsIERPTVN0
cmluZyBlbmNvZGluZyA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gRE9NU3RyaW5nIHJlYWRBc0RhdGFVUkwoQmxvYiBibG9iKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwx
MSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBn
ZXR0ZXIgRE9NU3RyaW5nPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIGJvb2xlYW4g
Y29udGFpbnMoRE9NU3RyaW5nIHRva2VuKTsKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgYWRkKERPTVN0cmluZy4uLiB0b2tlbnMpOwotICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmUoRE9NU3RyaW5nLi4uIHRv
a2Vucyk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiB0b2dn
bGUoRE9NU3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHJlcGxhY2UoRE9NU3RyaW5nIHRva2Vu
LCBET01TdHJpbmcgbmV3VG9rZW4pOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBz
dXBwb3J0cyhET01TdHJpbmcgdG9rZW4pOworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGFk
ZChET01TdHJpbmcuLi4gdG9rZW5zKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCByZW1v
dmUoRE9NU3RyaW5nLi4uIHRva2Vucyk7CisgICAgW0NFUmVhY3Rpb25zXSBib29sZWFuIHRvZ2ds
ZShET01TdHJpbmcgdG9rZW4sIG9wdGlvbmFsIGJvb2xlYW4gZm9yY2UpOworICAgIFtDRVJlYWN0
aW9uc10gYm9vbGVhbiByZXBsYWNlKERPTVN0cmluZyB0b2tlbiwgRE9NU3RyaW5nIG5ld1Rva2Vu
KTsKKyAgICBib29sZWFuIHN1cHBvcnRzKERPTVN0cmluZyB0b2tlbik7CiAgICAgW0NFUmVhY3Rp
b25zXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogICAgIGl0ZXJhYmxl
PERPTVN0cmluZz47CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMSArNDgsMTEgQEAgdHlwZWRl
ZiAoCiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJdIGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKIAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmpl
Y3QsIE1heVRocm93RXhjZXB0aW9uXSBSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0
cmluZyBjb250ZXh0SWQsIGFueS4uLiBhcmd1bWVudHMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIFJlbmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoRE9NU3RyaW5nIGNvbnRleHRJZCwg
YW55Li4uIGFyZ3VtZW50cyk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyB0
b0RhdGFVUkwob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsIG9wdGlvbmFsIGFueSBxdWFsaXR5KTsK
LSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCB0b0Jsb2IoQmxvYkNhbGxiYWNrIGNhbGxiYWNrLCBvcHRpb25hbCBET01TdHJp
bmcgdHlwZSwgb3B0aW9uYWwgYW55IHF1YWxpdHkpOwotICAgIFtDb25kaXRpb25hbD1PRkZTQ1JF
RU5fQ0FOVkFTLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gT2Zmc2NyZWVuQ2FudmFzIHRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7CisgICAg
RE9NU3RyaW5nIHRvRGF0YVVSTChvcHRpb25hbCBET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYW55
IHF1YWxpdHkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB1bmRlZmlu
ZWQgdG9CbG9iKEJsb2JDYWxsYmFjayBjYWxsYmFjaywgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUs
IG9wdGlvbmFsIGFueSBxdWFsaXR5KTsKKyAgICBbQ29uZGl0aW9uYWw9T0ZGU0NSRUVOX0NBTlZB
UywgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gT2Zmc2NyZWVuQ2FudmFzIHRyYW5z
ZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LCBDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gTWVkaWFT
dHJlYW0gY2FwdHVyZVN0cmVhbShvcHRpb25hbCBkb3VibGUgZnJhbWVSZXF1ZXN0UmF0ZSk7Cisg
ICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgQ2FsbFdpdGg9RG9jdW1lbnQsIE5ld09iamVj
dF0gTWVkaWFTdHJlYW0gY2FwdHVyZVN0cmVhbShvcHRpb25hbCBkb3VibGUgZnJhbWVSZXF1ZXN0
UmF0ZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0Vs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw2IEBACiAgICAgW0NFUmVhY3Rp
b25zLCBSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBvcGVuOwogICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgcmV0dXJuVmFsdWU7CiAgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgc2hvdygpOwot
ICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzaG93TW9kYWwo
KTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzaG93TW9kYWwoKTsKICAgICBbQ0VSZWFj
dGlvbnNdIHVuZGVmaW5lZCBjbG9zZShvcHRpb25hbCBET01TdHJpbmcgcmV0dXJuVmFsdWUpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjksNSArMjksNSBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKICAgICBbQ0VSZWFjdGlvbnM9
Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdpZHRoOwogCi0gICAgW0No
ZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9j
dW1lbnQoKTsKKyAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3Vt
ZW50KCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2lu
V2lkdGg7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBE
b2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9j
dW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIHdpZHRoOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGhlaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5k
b3c7CiAKLSAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1
bWVudCBnZXRTVkdEb2N1bWVudCgpOworICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gRG9jdW1l
bnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIAogICAgIFtFbmFibGVkQnlTZXR0aW5nPVJlZmVycmVyUG9s
aWN5QXR0cmlidXRlLCBJbXBsZW1lbnRlZEFzPXJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MsIENF
UmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyByZWZlcnJlclBvbGljeTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lv
biAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBACiAgICAgYXR0cmlidXRlIERhdGU/IHZhbHVl
QXNEYXRlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHZhbHVlQXNOdW1iZXI7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdGVwVXAob3B0aW9uYWwgbG9u
ZyBuID0gMSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc3RlcERvd24ob3B0
aW9uYWwgbG9uZyBuID0gMSk7CisgICAgdW5kZWZpbmVkIHN0ZXBVcChvcHRpb25hbCBsb25nIG4g
PSAxKTsKKyAgICB1bmRlZmluZWQgc3RlcERvd24ob3B0aW9uYWwgbG9uZyBuID0gMSk7CiAKICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3aWxsVmFsaWRhdGU7CkBAIC04MiwxMCAr
ODIsMTAgQEAKICAgICBbSW1wbGVtZW50ZWRBcz1zZWxlY3Rpb25FbmRGb3JCaW5kaW5nc10gYXR0
cmlidXRlIGxvbmcgc2VsZWN0aW9uRW5kOwogICAgIFtJbXBsZW1lbnRlZEFzPXNlbGVjdGlvbkRp
cmVjdGlvbkZvckJpbmRpbmdzXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlbGVjdGlvbkRpcmVjdGlv
bjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFJhbmdlVGV4dChET01T
dHJpbmcgcmVwbGFjZW1lbnQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNl
dFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu
c2lnbmVkIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CisgICAg
dW5kZWZpbmVkIHNldFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQpOworICAgIHVuZGVm
aW5lZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50LCB1bnNpZ25lZCBsb25nIHN0
YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdGlvbk1vZGUp
OwogCi0gICAgW0ltcGxlbWVudGVkQXM9c2V0U2VsZWN0aW9uUmFuZ2VGb3JCaW5kaW5ncywgTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTZWxlY3Rpb25SYW5nZShsb25nIHN0YXJ0LCBs
b25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CisgICAgW0ltcGxlbWVudGVk
QXM9c2V0U2VsZWN0aW9uUmFuZ2VGb3JCaW5kaW5nc10gdW5kZWZpbmVkIHNldFNlbGVjdGlvblJh
bmdlKGxvbmcgc3RhcnQsIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsK
IAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgYWxpZ247CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZyB1c2VNYXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB0eXBlZGVm
ICgKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBFbmFibGVkQnlTZXR0aW5nPUVu
Y3J5cHRlZE1lZGlhQVBJLCBEaXNhYmxlZEJ5UXVpcms9aGFzQnJva2VuRW5jcnlwdGVkTWVkaWFB
UElTdXBwb3J0XSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ud2FpdGluZ2ZvcmtleTsKICAgICBb
Q29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBFbmFibGVkQnlTZXR0aW5nPUVuY3J5cHRlZE1l
ZGlhQVBJLCBEaXNhYmxlZEJ5UXVpcms9aGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0
XSBQcm9taXNlPHVuZGVmaW5lZD4gc2V0TWVkaWFLZXlzKE1lZGlhS2V5cz8gbWVkaWFLZXlzKTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gVGV4dFRyYWNrIGFkZFRleHRUcmFjayhET01TdHJp
bmcga2luZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGxhYmVsID0gIiIsIG9wdGlvbmFsIERPTVN0cmlu
ZyBsYW5ndWFnZSA9ICIiKTsKKyAgICBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKERPTVN0cmluZyBr
aW5kLCBvcHRpb25hbCBET01TdHJpbmcgbGFiZWwgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGxh
bmd1YWdlID0gIiIpOwogICAgIFtJbXBsZW1lbnRlZEFzPWVuc3VyZUF1ZGlvVHJhY2tzXSByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9UcmFja0xpc3QgYXVkaW9UcmFja3M7CiAgICAgW0ltcGxlbWVu
dGVkQXM9ZW5zdXJlVGV4dFRyYWNrc10gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3Qg
dGV4dFRyYWNrczsKICAgICBbSW1wbGVtZW50ZWRBcz1lbnN1cmVWaWRlb1RyYWNrc10gcmVhZG9u
bHkgYXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJhY2tzOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw1ICs0OSw1IEBACiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRy
aWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
aW5kb3dQcm94eSBjb250ZW50V2luZG93OwogCi0gICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKKyAgICBbQ2hlY2tT
ZWN1cml0eUZvck5vZGVdIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBdIGludGVyZmFjZSBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgW0NFUmVhY3Rpb25zXSBzZXR0ZXIgdW5kZWZp
bmVkICh1bnNpZ25lZCBsb25nIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudD8gb3B0aW9uKTsKLSAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWRkKChIVE1MT3B0
aW9uRWxlbWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRN
TEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwpOworICAgIFtDRVJlYWN0aW9uc10gdW5k
ZWZpbmVkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxl
bWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKICAg
ICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCByZW1vdmUobG9uZyBpbmRleCk7CiAKICAgICBhdHRy
aWJ1dGUgbG9uZyBzZWxlY3RlZEluZGV4OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBA
CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAg
Z2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOyAvLyBG
SVhNRTogVGhlIHNwZWMgaGFzIHRoaXMgcmV0dXJuaW5nIEVsZW1lbnQ/LgogICAgIEhUTUxPcHRp
b25FbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJp
bmcgbmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwg
b3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKLSAgICBbQ0VS
ZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVtb3ZlKCk7IC8vIENoaWxk
Tm9kZSBvdmVybG9hZAorICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGFkZCgoSFRNTE9wdGlv
bkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxF
bGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKKyAgICBbQ0VSZWFjdGlvbnNdIHVuZGVm
aW5lZCByZW1vdmUoKTsgLy8gQ2hpbGROb2RlIG92ZXJsb2FkCiAgICAgW0NFUmVhY3Rpb25zXSB1
bmRlZmluZWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwogICAgIFtDRVJlYWN0aW9uc10gc2V0dGVyIHVu
ZGVmaW5lZCAodW5zaWduZWQgbG9uZyBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQ/IG9wdGlvbik7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNiBAQAogICAgIEhUTUxFbGVtZW50IGNyZWF0ZUNh
cHRpb24oKTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBkZWxldGVDYXB0aW9uKCk7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEhUTUxFbGVtZW50IGluc2VydFJvdyhvcHRpb25hbCBs
b25nIGluZGV4ID0gLTEpOwotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CisgICAgSFRNTEVsZW1lbnQgaW5zZXJ0Um93
KG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7CisgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQg
ZGVsZXRlUm93KGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUm93RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dFbGVtZW50LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNiBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcl0gYXR0cmli
dXRlIERPTVN0cmluZyBjaDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWNo
YXJvZmZdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2hPZmY7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB2QWxpZ247Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBIVE1MRWxlbWVudCBpbnNlcnRDZWxsKG9wdGlvbmFsIGxvbmcgaW5kZXggPSAt
MSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0
ZUNlbGwobG9uZyBpbmRleCk7CisgICAgSFRNTEVsZW1lbnQgaW5zZXJ0Q2VsbChvcHRpb25hbCBs
b25nIGluZGV4ID0gLTEpOworICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGRlbGV0ZUNlbGwo
bG9uZyBpbmRleCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw2IEBACiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyb2ZmXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGNoT2ZmOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdkFsaWduOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MQ29sbGVjdGlvbiByb3dzOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSFRNTEVsZW1l
bnQgaW5zZXJ0Um93KG9wdGlvbmFsIGxvbmcgaW5kZXggPSAtMSk7Ci0gICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRlbGV0ZVJvdyhsb25nIGluZGV4KTsKKyAg
ICBIVE1MRWxlbWVudCBpbnNlcnRSb3cob3B0aW9uYWwgbG9uZyBpbmRleCA9IC0xKTsKKyAgICBb
Q0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBkZWxldGVSb3cobG9uZyBpbmRleCk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0
aW9uRW5kOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc2VsZWN0aW9uRGlyZWN0aW9uOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyBy
ZXBsYWNlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UmFuZ2VU
ZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQg
bG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rpb25Nb2RlKTsKKyAgICB1bmRlZmlu
ZWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCk7CisgICAgdW5kZWZpbmVkIHNl
dFJhbmdlVGV4dChET01TdHJpbmcgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu
c2lnbmVkIGxvbmcgZW5kLCBvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0aW9uTW9kZSk7CiAKICAg
ICB1bmRlZmluZWQgc2V0U2VsZWN0aW9uUmFuZ2Uob3B0aW9uYWwgbG9uZyBzdGFydCA9IDAsIG9w
dGlvbmFsIGxvbmcgZW5kID0gMCwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gd2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIHdlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgd2Via2l0RW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdW5kZWZpbmVkIHdlYmtp
dEVudGVyRnVsbHNjcmVlbigpOwogICAgIHVuZGVmaW5lZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigp
OwogCiAgICAgLy8gTWFpbnRhaW4gIkZ1bGxTY3JlZW4iIGNhcGl0YWxpemF0aW9uIHNjaGVtZSBm
b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2MDgxCi0gICAgW0ltcGxlbWVudGVkQXM9d2Via2l0RW50ZXJG
dWxsc2NyZWVuLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHdlYmtpdEVudGVyRnVsbFNj
cmVlbigpOworICAgIFtJbXBsZW1lbnRlZEFzPXdlYmtpdEVudGVyRnVsbHNjcmVlbl0gdW5kZWZp
bmVkIHdlYmtpdEVudGVyRnVsbFNjcmVlbigpOwogICAgIFtJbXBsZW1lbnRlZEFzPXdlYmtpdEV4
aXRGdWxsc2NyZWVuXSB1bmRlZmluZWQgd2Via2l0RXhpdEZ1bGxTY3JlZW4oKTsKIAogICAgIFtD
b25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIGF0dHJpYnV0ZSBib29sZWFuIHdl
YmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4
IEBAIGVudW0gT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dFR5cGUKICAgICBhdHRyaWJ1dGUgW0Vu
Zm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICBhdHRyaWJ1dGUgW0VuZm9yY2VS
YW5nZV0gdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dD8gZ2V0Q29udGV4
dChPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgYW55Li4uIGFyZ3Vt
ZW50cyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBJbWFnZUJpdG1hcCB0cmFuc2ZlclRvSW1h
Z2VCaXRtYXAoKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0PyBnZXRDb250ZXh0KE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRl
eHRUeXBlLCBhbnkuLi4gYXJndW1lbnRzKTsKKyAgICBJbWFnZUJpdG1hcCB0cmFuc2ZlclRvSW1h
Z2VCaXRtYXAoKTsKICAgICBQcm9taXNlPEJsb2I+IGNvbnZlcnRUb0Jsb2Iob3B0aW9uYWwgSW1h
Z2VFbmNvZGVPcHRpb25zIG9wdGlvbnMpOwogCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lUmFuZ2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw2IEBACiAgICAgRXhwb3NlZD1X
aW5kb3cKIF0gaW50ZXJmYWNlIFRpbWVSYW5nZXMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3Rl
ZCBkb3VibGUgc3RhcnQodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bnJlc3RyaWN0ZWQgZG91YmxlIGVuZCh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB1
bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHVucmVz
dHJpY3RlZCBkb3VibGUgZW5kKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBpbnRlcmZhY2UgbWl4aW4gQ2FudmFz
RHJhd0ltYWdlIHsKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJn
dW1lbnRzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KIAogICAgIC8vIGRy
YXdpbmcgaW1hZ2VzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgZHJhd0ltYWdl
KENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3RyaWN0ZWQgZG91YmxlIGR4LCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGR5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBkcmF3
SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBkb3VibGUgZHgsIHVu
cmVzdHJpY3RlZCBkb3VibGUgZHksIHVucmVzdHJpY3RlZCBkb3VibGUgZHcsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgZGgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGRyYXdJbWFn
ZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0
cmljdGVkIGRvdWJsZSBzeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRv
dWJsZSBzaCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CisgICAgdW5k
ZWZpbmVkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRv
dWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSk7CisgICAgdW5kZWZpbmVkIGRyYXdJbWFn
ZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeCwgdW5yZXN0
cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywgdW5yZXN0cmljdGVkIGRv
dWJsZSBkaCk7CisgICAgdW5kZWZpbmVkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFn
ZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBzeSwgdW5yZXN0
cmljdGVkIGRvdWJsZSBzdywgdW5yZXN0cmljdGVkIGRvdWJsZSBzaCwgdW5yZXN0cmljdGVkIGRv
dWJsZSBkeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBkdywg
dW5yZXN0cmljdGVkIGRvdWJsZSBkaCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0eWxlcy5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHls
ZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGludGVyZmFjZSBtaXhpbiBD
YW52YXNGaWxsU3Ryb2tlU3R5bGVzIHsKICAgICBhdHRyaWJ1dGUgKERPTVN0cmluZyBvciBDYW52
YXNHcmFkaWVudCBvciBDYW52YXNQYXR0ZXJuKSBmaWxsU3R5bGU7IC8vIChkZWZhdWx0IGJsYWNr
KQogCiAgICAgLy8gRklYTUU6IEFsbCB0aGUgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQg
YmUgZG91Ymxlcy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0
ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRp
ZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgcjEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybj8gY3JlYXRlUGF0
dGVybihDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBE
T01TdHJpbmcgcmVwZXRpdGlvbik7CisgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3Jh
ZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOworICAgIENhbnZh
c0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQg
cjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOworICAgIENhbnZhc1BhdHRlcm4/IGNy
ZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNSArMzEsNSBAQAogICAgIC8vIEZJWE1FOiBUaGUgZmxvYXQgcGFyYW1ldGVycyBi
ZWxvdyBzaG91bGQgYmUgYSBkb3VibGUuCiAKICAgICAvLyBvcGFxdWUgb2JqZWN0Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYWRkQ29sb3JTdG9wKGZsb2F0IG9mZnNldCwgRE9N
U3RyaW5nIGNvbG9yKTsKKyAgICB1bmRlZmluZWQgYWRkQ29sb3JTdG9wKGZsb2F0IG9mZnNldCwg
RE9NU3RyaW5nIGNvbG9yKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNJbWFnZURhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDkgKzI4LDkgQEAgaW50ZXJmYWNlIG1peGluIENhbnZhc0ltYWdlRGF0YSB7CiAgICAgLy8gRklY
TUU6IEFsbCB0aGUgZmxvYXQgYXJndW1lbnRzIGJlbG93IHNob3VsZCBiZSBsb25ncy4KIAogICAg
IC8vIHBpeGVsIG1hbmlwdWxhdGlvbgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSW1hZ2VEYXRh
IGNyZWF0ZUltYWdlRGF0YShmbG9hdCBzdywgZmxvYXQgc2gpOworICAgIEltYWdlRGF0YSBjcmVh
dGVJbWFnZURhdGEoZmxvYXQgc3csIGZsb2F0IHNoKTsKICAgICBJbWFnZURhdGEgY3JlYXRlSW1h
Z2VEYXRhKEltYWdlRGF0YSBpbWFnZWRhdGEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSW1h
Z2VEYXRhIGdldEltYWdlRGF0YShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBz
aCk7CisgICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0YShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0
IHN3LCBmbG9hdCBzaCk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0YShJbWFnZURhdGEgaW1h
Z2VkYXRhLCBmbG9hdCBkeCwgZmxvYXQgZHkpOwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhIGltYWdlZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkaXJ0eVgsIGZs
b2F0IGRpcnR5WSwgZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGlydHlIZWlnaHQpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBAIGludGVyZmFjZSBtaXhpbiBDYW52YXNQYXRo
IHsKICAgICB1bmRlZmluZWQgbGluZVRvKHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB5KTsKICAgICB1bmRlZmluZWQgcXVhZHJhdGljQ3VydmVUbyh1bnJlc3RyaWN0
ZWQgZG91YmxlIGNweCwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcHksIHVucmVzdHJpY3RlZCBkb3Vi
bGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKICAgICB1bmRlZmluZWQgYmV6aWVyQ3VydmVU
byh1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXgsIHVucmVzdHJpY3RlZCBkb3VibGUgY3AxeSwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBjcDJ4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMnksIHVucmVzdHJp
Y3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHkyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1cyk7Ci0gICAgLy8gW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4MSwgdW5yZXN0cmljdGVk
IGRvdWJsZSB5MSwgdW5yZXN0cmljdGVkIGRvdWJsZSB4MiwgdW5yZXN0cmljdGVkIGRvdWJsZSB5
MiwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1
c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90YXRpb24pOworICAgIHVuZGVmaW5lZCBhcmNUbyh1
bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHJhZGl1cyk7CisgICAgLy8gdW5kZWZpbmVkIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUgeDEs
IHVucmVzdHJpY3RlZCBkb3VibGUgeTEsIHVucmVzdHJpY3RlZCBkb3VibGUgeDIsIHVucmVzdHJp
Y3RlZCBkb3VibGUgeTIsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVk
IGRvdWJsZSByYWRpdXNZLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uKTsKICAgICB1bmRl
ZmluZWQgcmVjdCh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwg
dW5yZXN0cmljdGVkIGRvdWJsZSB3LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFyYyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVz
dHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXMsIHVucmVzdHJpY3Rl
ZCBkb3VibGUgc3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9u
YWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIGVsbGlwc2UodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSByYWRpdXNZLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJv
b2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKKyAgICB1bmRlZmluZWQgYXJjKHVucmVzdHJp
Y3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHJhZGl1cywgdW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFuIGFudGljbG9ja3dpc2UgPSBmYWxzZSk7Cisg
ICAgdW5kZWZpbmVkIGVsbGlwc2UodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGRvdWJs
ZSByYWRpdXNZLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJv
b2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKIAogICAgIFtFbmFibGVkQXRSdW50aW1lPUlu
c3BlY3RvckFkZGl0aW9uc10gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRYOwogICAg
IFtFbmFibGVkQXRSdW50aW1lPUluc3BlY3RvckFkZGl0aW9uc10gcmVhZG9ubHkgYXR0cmlidXRl
IGZsb2F0IGN1cnJlbnRZOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0dGVybi5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1ICsyOCw1IEBA
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0dGVy
biB7CiAgICAgLy8gb3BhcXVlIG9iamVjdAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHNldFRyYW5zZm9ybShvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNmb3JtKTsKKyAg
ICB1bmRlZmluZWQgc2V0VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJpeDJESW5pdCB0cmFuc2Zv
cm0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9y
bS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNiBAQCBp
bnRlcmZhY2UgbWl4aW4gQ2FudmFzVHJhbnNmb3JtIHsKIAogICAgIFtOZXdPYmplY3RdIERPTU1h
dHJpeCBnZXRUcmFuc2Zvcm0oKTsKICAgICB1bmRlZmluZWQgc2V0VHJhbnNmb3JtKHVucmVzdHJp
Y3RlZCBmbG9hdCBhLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYiwgdW5yZXN0cmljdGVkIGZsb2F0IGMs
IHVucmVzdHJpY3RlZCBmbG9hdCBkLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZSwgdW5yZXN0cmljdGVk
IGZsb2F0IGYpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFRyYW5zZm9y
bShvcHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNmb3JtKTsKKyAgICB1bmRlZmluZWQgc2V0
VHJhbnNmb3JtKG9wdGlvbmFsIERPTU1hdHJpeDJESW5pdCB0cmFuc2Zvcm0pOwogICAgIHVuZGVm
aW5lZCByZXNldFRyYW5zZm9ybSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNiBAQAogXSBp
bnRlcmZhY2UgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgdHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA/IGJpdG1hcCk7
CisgICAgdW5kZWZpbmVkIHRyYW5zZmVyRnJvbUltYWdlQml0bWFwKEltYWdlQml0bWFwPyBiaXRt
YXApOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0aDJELmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAgICAgLy8gY29uc3RydWN0b3Ioc2VxdWVu
Y2U8UGF0aDJEPiBwYXRocywgb3B0aW9uYWwgQ2FudmFzRmlsbFJ1bGUgZmlsbFJ1bGUgPSAibm9u
emVybyIpOwogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyBkKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGFkZFBhdGgoUGF0aDJEIHBhdGgsIG9wdGlvbmFsIERPTU1hdHJp
eDJESW5pdCB0cmFuc2Zvcm0pOworICAgIHVuZGVmaW5lZCBhZGRQYXRoKFBhdGgyRCBwYXRoLCBv
cHRpb25hbCBET01NYXRyaXgyREluaXQgdHJhbnNmb3JtKTsKIH07CiAKIFBhdGgyRCBpbmNsdWRl
cyBDYW52YXNQYXRoOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00NjksMTEgKzQ2OSwxMSBAQCB0eXBlZGVmIChJbWFnZUJpdG1hcCBvciBJbWFn
ZURhdGEgb3IgSFRNCiAgICAgLy8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBBUEkuCiAKICAgICB1
bmRlZmluZWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludHB0ciBwYm9PZmZzZXQpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VT
b3VyY2Ugc291cmNlKTsKKyAgICB1bmRlZmluZWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFn
ZVNvdXJjZSBzb3VyY2UpOwogICAgIHVuZGVmaW5lZCB0ZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFtBbGxv
d1NoYXJlZF0gQXJyYXlCdWZmZXJWaWV3IHNyY0RhdGEsIEdMdWludCBzcmNPZmZzZXQpOwogCiAg
ICAgdW5kZWZpbmVkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnRwdHIgcGJvT2Zmc2V0KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFRleEltYWdlU291
cmNlIHNvdXJjZSk7CisgICAgdW5kZWZpbmVkIHRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3Vy
Y2Ugc291cmNlKTsKICAgICB1bmRlZmluZWQgdGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBbQWxsb3dTaGFyZWRd
IEFycmF5QnVmZmVyVmlldyBzcmNEYXRhLCBHTHVpbnQgc3JjT2Zmc2V0KTsKIAogICAgIHVuZGVm
aW5lZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQg
Ym9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTA4LDEw
ICs1MDgsMTAgQEAgdHlwZWRlZiAoSFRNTENhbnZhc0VsZW1lbnQpIFdlYkdMQ2FudmFzOwogICAg
IHVuZGVmaW5lZCBjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyIHNoYWRlcik7CiAKICAgICB1bmRl
ZmluZWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgW0FsbG93U2hhcmVkXSBBcnJheUJ1ZmZlclZpZXc/
IHBpeGVscyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgdGV4SW1hZ2UyRChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2Ugc291cmNlKTsKKyAgICB1bmRlZmlu
ZWQgdGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2Ugc291cmNl
KTsKIAogICAgIHVuZGVmaW5lZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIFtBbGxvd1NoYXJlZF0gQXJyYXlC
dWZmZXJWaWV3PyBwaXhlbHMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHRl
eFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSBz
b3VyY2UpOworICAgIHVuZGVmaW5lZCB0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgVGV4SW1hZ2VTb3VyY2Ugc291cmNlKTsKIAogICAgIHVuZGVmaW5lZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBbQWxs
b3dTaGFyZWRdIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKICAgICB1bmRlZmluZWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0LCBbQWxsb3dTaGFyZWRdIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUs
MTIgKzQ1LDEyIEBAIGVudW0gVGV4dFRyYWNrS2luZCB7ICJzdWJ0aXRsZXMiLCAiY2FwdGkKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrQ3VlTGlzdD8gY3VlczsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgVGV4dFRyYWNrQ3VlTGlzdD8gYWN0aXZlQ3VlczsKIAotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFkZEN1ZShUZXh0VHJhY2tDdWUgY3VlKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlIGN1ZSk7Cisg
ICAgdW5kZWZpbmVkIGFkZEN1ZShUZXh0VHJhY2tDdWUgY3VlKTsKKyAgICB1bmRlZmluZWQgcmVt
b3ZlQ3VlKFRleHRUcmFja0N1ZSBjdWUpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmN1ZWNoYW5nZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWVFRSZWdpb25MaXN0IHJlZ2lv
bnM7CiAgICAgdW5kZWZpbmVkIGFkZFJlZ2lvbihWVFRSZWdpb24gcmVnaW9uKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZW1vdmVSZWdpb24oVlRUUmVnaW9uIHJlZ2lvbik7
CisgICAgdW5kZWZpbmVkIHJlbW92ZVJlZ2lvbihWVFRSZWdpb24gcmVnaW9uKTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDE3ICsyOCwxNyBAQAogICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0LAogICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRo
cm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPiBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKERP
TVN0cmluZyByb2xlLCBvcHRpb25hbCBOb2RlPyBjb250YWluZXIpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gc2VxdWVuY2U8Tm9kZT4gZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShET01TdHJp
bmcgcm9sZSwgb3B0aW9uYWwgTm9kZT8gY29udGFpbmVyKTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gTm9kZT8gZ2V0QWN0aXZlRGVzY2VuZGFudChOb2RlIG5vZGUpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4/IGdldENoaWxkTm9kZXMoTm9kZSBub2RlKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbXB1dGVkUHJvcGVydGllcz8gZ2V0Q29tcHV0ZWRQcm9w
ZXJ0aWVzKE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxOb2Rl
Pj8gZ2V0Q29udHJvbGxlZE5vZGVzKE5vZGUgbm9kZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBzZXF1ZW5jZTxOb2RlPj8gZ2V0Rmxvd2VkTm9kZXMoTm9kZSBub2RlKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIE5vZGU/IGdldE1vdXNlRXZlbnROb2RlKE5vZGUgbm9kZSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPj8gZ2V0T3duZWROb2RlcyhOb2RlIG5vZGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZT8gZ2V0UGFyZW50Tm9kZShOb2RlIG5vZGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4/IGdldFNlbGVjdGVkQ2hp
bGROb2RlcyhOb2RlIG5vZGUpOworICAgIE5vZGU/IGdldEFjdGl2ZURlc2NlbmRhbnQoTm9kZSBu
b2RlKTsKKyAgICBzZXF1ZW5jZTxOb2RlPj8gZ2V0Q2hpbGROb2RlcyhOb2RlIG5vZGUpOworICAg
IENvbXB1dGVkUHJvcGVydGllcz8gZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKE5vZGUgbm9kZSk7Cisg
ICAgc2VxdWVuY2U8Tm9kZT4/IGdldENvbnRyb2xsZWROb2RlcyhOb2RlIG5vZGUpOworICAgIHNl
cXVlbmNlPE5vZGU+PyBnZXRGbG93ZWROb2RlcyhOb2RlIG5vZGUpOworICAgIE5vZGU/IGdldE1v
dXNlRXZlbnROb2RlKE5vZGUgbm9kZSk7CisgICAgc2VxdWVuY2U8Tm9kZT4/IGdldE93bmVkTm9k
ZXMoTm9kZSBub2RlKTsKKyAgICBOb2RlPyBnZXRQYXJlbnROb2RlKE5vZGUgbm9kZSk7CisgICAg
c2VxdWVuY2U8Tm9kZT4/IGdldFNlbGVjdGVkQ2hpbGROb2RlcyhOb2RlIG5vZGUpOwogfTsKIAog
WwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVk
aXRET01PYmplY3QuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1
ICsyOCw1IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnNwZWN0b3JBdWRpdERPTU9iamVjdCB7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBib29sZWFuIGhhc0V2ZW50TGlzdGVuZXJzKE5vZGUgbm9kZSwgb3B0
aW9uYWwgRE9NU3RyaW5nIHR5cGUpOworICAgIGJvb2xlYW4gaGFzRXZlbnRMaXN0ZW5lcnMoTm9k
ZSBub2RlLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmpl
Y3QuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsy
OCw4IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBJbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdCB7Ci0gICAg
W0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8UmVzb3VyY2U+
IGdldFJlc291cmNlcygpOwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRp
b25dIFJlc291cmNlQ29udGVudCBnZXRSZXNvdXJjZUNvbnRlbnQoRE9NU3RyaW5nIGlkKTsKKyAg
ICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHNlcXVlbmNlPFJlc291cmNlPiBnZXRSZXNvdXJjZXMoKTsK
KyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFJlc291cmNlQ29udGVudCBnZXRSZXNvdXJjZUNvbnRl
bnQoRE9NU3RyaW5nIGlkKTsKIH07CiAKIFsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQAogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE9CU09MRVRFID0gNTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
c2hvcnQgc3RhdHVzOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgdXBkYXRl
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc3dhcENhY2hlKCk7CisgICAg
dW5kZWZpbmVkIHVwZGF0ZSgpOworICAgIHVuZGVmaW5lZCBzd2FwQ2FjaGUoKTsKICAgICB1bmRl
ZmluZWQgYWJvcnQoKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jaGVja2luZzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNSBAQAog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIF0gaW50
ZXJmYWNlIENyeXB0byB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9DUllQVE9dIHJlYWRvbmx5IGF0
dHJpYnV0ZSBTdWJ0bGVDcnlwdG8gc3VidGxlOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXJy
YXlCdWZmZXJWaWV3IGdldFJhbmRvbVZhbHVlcyhbUmV0dXJuVmFsdWVdIEFycmF5QnVmZmVyVmll
dyBhcnJheSk7CisgICAgQXJyYXlCdWZmZXJWaWV3IGdldFJhbmRvbVZhbHVlcyhbUmV0dXJuVmFs
dWVdIEFycmF5QnVmZmVyVmlldyBhcnJheSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01TZWxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyMyArNDQsMjMgQEAKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gUmFuZ2UgZ2V0UmFuZ2VBdCh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBSYW5nZSBn
ZXRSYW5nZUF0KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHVuZGVmaW5lZCBhZGRSYW5nZShS
YW5nZSByYW5nZSk7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9TGl2ZVJhbmdlU2VsZWN0aW9uLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlbW92ZVJhbmdlKFJhbmdlIHJhbmdlKTsKKyAg
ICBbRW5hYmxlZEJ5U2V0dGluZz1MaXZlUmFuZ2VTZWxlY3Rpb25dIHVuZGVmaW5lZCByZW1vdmVS
YW5nZShSYW5nZSByYW5nZSk7CiAgICAgdW5kZWZpbmVkIHJlbW92ZUFsbFJhbmdlcygpOwogCiAg
ICAgdW5kZWZpbmVkIGVtcHR5KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBjb2xsYXBzZShOb2RlPyBub2RlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFBvc2l0aW9uKE5vZGU/IG5v
ZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdW5kZWZpbmVkIGNv
bGxhcHNlKE5vZGU/IG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7Cisg
ICAgdW5kZWZpbmVkIHNldFBvc2l0aW9uKE5vZGU/IG5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIGxv
bmcgb2Zmc2V0ID0gMCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb2xs
YXBzZVRvU3RhcnQoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb2xsYXBz
ZVRvRW5kKCk7CisgICAgdW5kZWZpbmVkIGNvbGxhcHNlVG9TdGFydCgpOworICAgIHVuZGVmaW5l
ZCBjb2xsYXBzZVRvRW5kKCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBl
eHRlbmQoTm9kZSBub2RlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOworICAg
IHVuZGVmaW5lZCBleHRlbmQoTm9kZSBub2RlLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNl
dCA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0QmFzZUFuZEV4
dGVudChOb2RlPyBiYXNlTm9kZSwgdW5zaWduZWQgbG9uZyBiYXNlT2Zmc2V0LCBOb2RlPyBleHRl
bnROb2RlLCB1bnNpZ25lZCBsb25nIGV4dGVudE9mZnNldCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2VsZWN0QWxsQ2hpbGRyZW4oTm9kZSBub2RlKTsKKyAgICB1bmRlZmlu
ZWQgc2V0QmFzZUFuZEV4dGVudChOb2RlPyBiYXNlTm9kZSwgdW5zaWduZWQgbG9uZyBiYXNlT2Zm
c2V0LCBOb2RlPyBleHRlbnROb2RlLCB1bnNpZ25lZCBsb25nIGV4dGVudE9mZnNldCk7CisgICAg
dW5kZWZpbmVkIHNlbGVjdEFsbENoaWxkcmVuKE5vZGUgbm9kZSk7CiAKICAgICBbQ0VSZWFjdGlv
bnNdIHVuZGVmaW5lZCBkZWxldGVGcm9tRG9jdW1lbnQoKTsKICAgICBib29sZWFuIGNvbnRhaW5z
Tm9kZShOb2RlIG5vZGUsIG9wdGlvbmFsIGJvb2xlYW4gYWxsb3dQYXJ0aWFsQ29udGFpbm1lbnQg
PSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNzQ3
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTc1LDcgKzc1LDcgQEAKICAgICBbRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3Rv
bVNldHRlcl0gYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBvcGVuZXI7CiAgICAgW1JlcGxhY2VhYmxl
LCBEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBwYXJlbnQ7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRWxlbWVudD8gZnJhbWVFbGVtZW50OwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSBXaW5kb3dQcm94eT8gb3BlbihvcHRpb25hbCBV
U1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQgPSAiX2JsYW5rIiwg
b3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZmVhdHVyZXMgPSAi
Iik7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gV2luZG93UHJveHk/
IG9wZW4ob3B0aW9uYWwgVVNWU3RyaW5nIHVybCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdGFy
Z2V0ID0gIl9ibGFuayIsIG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGZlYXR1cmVzID0gIiIpOwogCiAgICAgLy8gdGhlIHVzZXIgYWdlbnQKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTmF2aWdhdG9yIG5hdmlnYXRvcjsKQEAgLTkxLDggKzkxLDggQEAKICAgICBE
T01TdHJpbmc/IHByb21wdChvcHRpb25hbCBET01TdHJpbmcgbWVzc2FnZSA9ICIiLCBvcHRpb25h
bCBET01TdHJpbmcgZGVmYXVsdFZhbHVlID0gIiIpOwogICAgIHVuZGVmaW5lZCBwcmludCgpOwog
Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tT
ZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVz
c2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0
cmFuc2ZlciA9IFtdKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRv
dywgRG9Ob3RDaGVja1NlY3VyaXR5LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RN
ZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBXaW5kb3dQb3N0TWVzc2FnZU9wdGlvbnMgb3B0
aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90
Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJp
bmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10p
OworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNr
U2VjdXJpdHldIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgV2lu
ZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogCiAKICAgICAvLyBPYnNvbGV0ZTogU3Rp
bGwgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnLyNXaW5kb3ctcGFydGlhbCkuCkBAIC0xMzAsOCArMTMwLDggQEAKICAgICBXZWJLaXRQ
b2ludCB3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZShvcHRpb25hbCBOb2RlPyBub2Rl
ID0gbnVsbCwgb3B0aW9uYWwgV2ViS2l0UG9pbnQ/IHAgPSBudWxsKTsKIAogICAgIC8vIEludGVy
bmFsIG9wZXJhdGlvbnMsIG5vdCBleHBvc2VkIHRvIHRoZSBXZWIuCi0gICAgW01heVRocm93RXhj
ZXB0aW9uLCBFbmFibGVkRm9yV29ybGQ9c2hhZG93Um9vdElzQWx3YXlzT3Blbl0gTm9kZUxpc3Qg
Y29sbGVjdE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBz
ZWxlY3RvcnMpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgRW5hYmxlZEZvcldvcmxkPXNoYWRv
d1Jvb3RJc0Fsd2F5c09wZW5dIEVsZW1lbnQ/IG1hdGNoaW5nRWxlbWVudEluRmxhdFRyZWUoTm9k
ZSBzY29wZSwgRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW0VuYWJsZWRGb3JXb3JsZD1zaGFk
b3dSb290SXNBbHdheXNPcGVuXSBOb2RlTGlzdCBjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxh
dFRyZWUoTm9kZSBzY29wZSwgRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW0VuYWJsZWRGb3JX
b3JsZD1zaGFkb3dSb290SXNBbHdheXNPcGVuXSBFbGVtZW50PyBtYXRjaGluZ0VsZW1lbnRJbkZs
YXRUcmVlKE5vZGUgc2NvcGUsIERPTVN0cmluZyBzZWxlY3RvcnMpOwogfTsKIAogWwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBACiAgICAg
W0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDAp
OwogCiAgICAgLy8gRklYTUU6IHRpdGxlIHNob3VsZCBub3QgYmUgbnVsbGFibGUgYXMgcGVyIHRo
ZSBIVE1MIHNwZWNpZmljYXRpb24uCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cHVzaFN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxlLCBv
cHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHJlcGxhY2VTdGF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgRE9NU3Ry
aW5nPyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKKyAgICB1bmRlZmlu
ZWQgcHVzaFN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxl
LCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOworICAgIHVuZGVmaW5lZCByZXBsYWNl
U3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIERPTVN0cmluZz8gdGl0bGUsIG9wdGlv
bmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CiB9OwogCiBlbnVtIFNjcm9sbFJlc3RvcmF0aW9u
IHsgImF1dG8iLCAibWFudWFsIiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBACiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAg
W1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3Vy
aXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAg
IFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHks
IENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5k
b3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7CisgICAgW0Rv
Tm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSB1bmRl
ZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKICAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93
XSB1bmRlZmluZWQgcmVsb2FkKCk7CiAKICAgICAvLyBVUkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1
dGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcitJc0xvZ2dlZEluLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcitJc0xvZ2dlZEluLmlk
bAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IrSXNM
b2dnZWRJbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDUgKzMwLDUgQEAKIF0gcGFydGlhbCBp
bnRlcmZhY2UgTmF2aWdhdG9yIHsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gc2V0TG9nZ2VkSW4o
KTsKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gc2V0TG9nZ2VkT3V0KCk7Ci0gICAgUHJvbWlzZTxi
b29sPiBpc0xvZ2dlZEluKCk7CisgICAgUHJvbWlzZTxib29sZWFuPiBpc0xvZ2dlZEluKCk7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIu
aWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNl
cnZpY2VXb3JrZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1ICsyOCw1IEBACiAgICAgQ29u
ZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29y
a2VyCiBdIGludGVyZmFjZSBtaXhpbiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyIHsKLSAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb24sIFNlY3VyZUNv
bnRleHQsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyIHNlcnZpY2VXb3JrZXI7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFNlY3VyZUNvbnRleHQsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyIHNlcnZpY2VXb3JrZXI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZStVc2VyVGltaW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlK1VzZXJUaW1pbmcuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlK1VzZXJUaW1pbmcuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby91c2VyLXRp
bWluZy8jZXh0ZW5zaW9ucy1wZXJmb3JtYW5jZS1pbnRlcmZhY2UKIHBhcnRpYWwgaW50ZXJmYWNl
IFBlcmZvcm1hbmNlIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gUGVyZm9ybWFuY2VNYXJrIG1hcmsoRE9NU3RyaW5nIG1hcmtOYW1lLCBvcHRpb25hbCBQ
ZXJmb3JtYW5jZU1hcmtPcHRpb25zIG1hcmtPcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBQZXJmb3JtYW5jZU1hcmsgbWFyayhET01TdHJpbmcgbWFya05hbWUsIG9wdGlvbmFs
IFBlcmZvcm1hbmNlTWFya09wdGlvbnMgbWFya09wdGlvbnMpOwogICAgIHVuZGVmaW5lZCBjbGVh
ck1hcmtzKG9wdGlvbmFsIERPTVN0cmluZyBtYXJrTmFtZSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uLCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIFBlcmZvcm1hbmNlTWVhc3VyZSBtZWFzdXJlKERP
TVN0cmluZyBtZWFzdXJlTmFtZSwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBQZXJmb3JtYW5jZU1l
YXN1cmVPcHRpb25zKSBzdGFydE9yTWVhc3VyZU9wdGlvbnMsIG9wdGlvbmFsIERPTVN0cmluZyBl
bmRNYXJrKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBQZXJmb3JtYW5jZU1lYXN1cmUg
bWVhc3VyZShET01TdHJpbmcgbWVhc3VyZU5hbWUsIG9wdGlvbmFsIChET01TdHJpbmcgb3IgUGVy
Zm9ybWFuY2VNZWFzdXJlT3B0aW9ucykgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBvcHRpb25hbCBE
T01TdHJpbmcgZW5kTWFyayk7CiAgICAgdW5kZWZpbmVkIGNsZWFyTWVhc3VyZXMob3B0aW9uYWwg
RE9NU3RyaW5nIG1lYXN1cmVOYW1lKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlT2JzZXJ2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VPYnNlcnZlci5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAKIF0gaW50ZXJmYWNlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgewogICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihQZXJmb3JtYW5jZU9ic2VydmVy
Q2FsbGJhY2sgY2FsbGJhY2spOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
b2JzZXJ2ZShQZXJmb3JtYW5jZU9ic2VydmVySW5pdCBvcHRpb25zKTsKKyAgICB1bmRlZmluZWQg
b2JzZXJ2ZShQZXJmb3JtYW5jZU9ic2VydmVySW5pdCBvcHRpb25zKTsKICAgICB1bmRlZmluZWQg
ZGlzY29ubmVjdCgpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0
aWMgcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PERPTVN0cmluZz4gc3VwcG9ydGVkRW50
cnlUeXBlczsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9VbmRvTWFuYWdlci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDUgKzI5LDUgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxE
b2N1bWVudCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgVW5kb01hbmFnZXIgewot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFkZEl0ZW0oVW5kb0l0ZW0gaXRlbSk7
CisgICAgdW5kZWZpbmVkIGFkZEl0ZW0oVW5kb0l0ZW0gaXRlbSk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw1ICszMCw1IEBACiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRM
RVJTLAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIg
ewotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTxhbnk+IHBvc3RNZXNzYWdlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlKTsKKyAgICBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2Uo
U2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc0
NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDE1IEBAIGludGVyZmFjZSBtaXhpbiBXaW5k
b3dPcldvcmtlckdsb2JhbFNjb3AKICAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBj
cm9zc09yaWdpbklzb2xhdGVkOwogIAogICAgIC8vIEJhc2U2NCB1dGlsaXR5IG1ldGhvZHMuCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgYXRvYihET01TdHJpbmcgc3RyaW5nKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBidG9hKERPTVN0cmluZyBzdHJpbmcp
OworICAgIERPTVN0cmluZyBhdG9iKERPTVN0cmluZyBzdHJpbmcpOworICAgIERPTVN0cmluZyBi
dG9hKERPTVN0cmluZyBzdHJpbmcpOwogCiAgICAgLy8gVGltZXJzLgogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB0YWtlIGEgVGltZXJIYW5kbGVyIChhLmsuYS4gKERPTVN0cmluZyBvciBGdW5j
dGlvbikpIHJhdGhlciB0aGFuIGEgU2NoZWR1bGVkQWN0aW9uLgotICAgIFtDYWxsV2l0aD1HbG9i
YWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBsb25nIHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0
aW9uIGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMp
OworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGxvbmcgc2V0VGltZW91dChTY2hlZHVsZWRB
Y3Rpb24gaGFuZGxlciwgb3B0aW9uYWwgbG9uZyB0aW1lb3V0ID0gMCwgYW55Li4uIGFyZ3VtZW50
cyk7CiAgICAgdW5kZWZpbmVkIGNsZWFyVGltZW91dChvcHRpb25hbCBsb25nIGhhbmRsZSA9IDAp
OwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgVGltZXJIYW5kbGVyIChhLmsuYS4g
KERPTVN0cmluZyBvciBGdW5jdGlvbikpIHJhdGhlciB0aGFuIGEgU2NoZWR1bGVkQWN0aW9uLgot
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBsb25nIHNldElu
dGVydmFsKFNjaGVkdWxlZEFjdGlvbiBoYW5kbGVyLCBvcHRpb25hbCBsb25nIHRpbWVvdXQgPSAw
LCBhbnkuLi4gYXJndW1lbnRzKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBsb25nIHNl
dEludGVydmFsKFNjaGVkdWxlZEFjdGlvbiBoYW5kbGVyLCBvcHRpb25hbCBsb25nIHRpbWVvdXQg
PSAwLCBhbnkuLi4gYXJndW1lbnRzKTsKICAgICB1bmRlZmluZWQgY2xlYXJJbnRlcnZhbChvcHRp
b25hbCBsb25nIGhhbmRsZSA9IDApOwogCiAgICAgLy8gbWljcm90YXNrIHF1ZXVpbmcuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDUgKzMz
LDUgQEAKICAgICBnZXR0ZXIgRE9NU3RyaW5nPyBnZXRJdGVtKERPTVN0cmluZyBrZXkpOwogICAg
IHNldHRlciB1bmRlZmluZWQgc2V0SXRlbShET01TdHJpbmcga2V5LCBET01TdHJpbmcgZGF0YSk7
CiAgICAgZGVsZXRlciB1bmRlZmluZWQgcmVtb3ZlSXRlbShET01TdHJpbmcga2V5KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjbGVhcigpOworICAgIHVuZGVmaW5lZCBjbGVh
cigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNiBAQAogCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1
bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVjaWZp
ZWRVbml0cyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY29udmVydFRvU3Bl
Y2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOworICAgIHVuZGVmaW5lZCBuZXdW
YWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB1bmRlZmluZWQgY29udmVydFRvU3Bl
Y2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNSArMzEsNSBAQAogICAgIGJvb2xlYW4gaXNQb2ludEluRmlsbChvcHRpb25hbCBET01Q
b2ludEluaXQgcG9pbnQpOwogICAgIGJvb2xlYW4gaXNQb2ludEluU3Ryb2tlKG9wdGlvbmFsIERP
TVBvaW50SW5pdCBwb2ludCk7CiAgICAgdW5yZXN0cmljdGVkIGZsb2F0IGdldFRvdGFsTGVuZ3Ro
KCk7Ci0gICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50IGdldFBvaW50
QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IGdldFBv
aW50QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogICAgIFtJbXBsZW1lbnRlZEFzPWdldFNjcmVlbkNUTUZvckJpbmRpbmdzLCBOZXdP
YmplY3RdIFNWR01hdHJpeCBnZXRTY3JlZW5DVE0oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCBpbiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaGFzIGJlZW4gZHJvcHBlZCBieSBCbGluay4K
LSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4IGdldFRyYW5zZm9y
bVRvRWxlbWVudChvcHRpb25hbCBTVkdFbGVtZW50PyBlbGVtZW50ID0gbnVsbCk7CisgICAgW05l
d09iamVjdF0gU1ZHTWF0cml4IGdldFRyYW5zZm9ybVRvRWxlbWVudChvcHRpb25hbCBTVkdFbGVt
ZW50PyBlbGVtZW50ID0gbnVsbCk7CiB9OwogCiBTVkdHcmFwaGljc0VsZW1lbnQgaW5jbHVkZXMg
U1ZHVGVzdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDYgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVlSW5T
cGVjaWZpZWRVbml0czsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlQXNTdHJpbmc7CiAK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNp
ZmllZFVuaXRzKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CisgICAgdW5kZWZpbmVkIG5l
d1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIHVucmVzdHJpY3Rl
ZCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgIHVuZGVmaW5lZCBjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEs
MTIgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBTVkdMZW5ndGggaW5pdGlhbGl6ZShTVkdMZW5ndGggbmV3SXRlbSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBnZXR0ZXIgU1ZHTGVuZ3RoIGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRl
eCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5ndGggaW5zZXJ0SXRlbUJlZm9yZShT
VkdMZW5ndGggbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBTVkdMZW5ndGggcmVwbGFjZUl0ZW0oU1ZHTGVuZ3RoIG5ld0l0ZW0sIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTGVuZ3RoIHJlbW92ZUl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdMZW5n
dGggYXBwZW5kSXRlbShTVkdMZW5ndGggbmV3SXRlbSk7CisgICAgdW5kZWZpbmVkIGNsZWFyKCk7
CisgICAgU1ZHTGVuZ3RoIGluaXRpYWxpemUoU1ZHTGVuZ3RoIG5ld0l0ZW0pOworICAgIGdldHRl
ciBTVkdMZW5ndGggZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdMZW5ndGgg
aW5zZXJ0SXRlbUJlZm9yZShTVkdMZW5ndGggbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7
CisgICAgU1ZHTGVuZ3RoIHJlcGxhY2VJdGVtKFNWR0xlbmd0aCBuZXdJdGVtLCB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKyAgICBTVkdMZW5ndGggcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdMZW5ndGggYXBwZW5kSXRlbShTVkdMZW5ndGggbmV3SXRlbSk7CiAgICAgc2V0
dGVyIHVuZGVmaW5lZCAodW5zaWduZWQgbG9uZyBpbmRleCwgU1ZHTGVuZ3RoIG5ld0l0ZW0pOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIg
KzM1LDEyIEBACiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZjsKIAogICAgIFtO
ZXdPYmplY3RdIFNWR01hdHJpeCBtdWx0aXBseShTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4IGludmVyc2UoKTsKKyAg
ICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggaW52ZXJzZSgpOwogICAgIFtOZXdPYmplY3RdIFNWR01h
dHJpeCB0cmFuc2xhdGUodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5
KTsKICAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggc2NhbGUodW5yZXN0cmljdGVkIGZsb2F0IHNj
YWxlRmFjdG9yKTsKICAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggc2NhbGVOb25Vbmlmb3JtKHVu
cmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZhY3RvclgsIHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZh
Y3RvclkpOwogICAgIFtOZXdPYmplY3RdIFNWR01hdHJpeCByb3RhdGUodW5yZXN0cmljdGVkIGZs
b2F0IGFuZ2xlKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4
IHJvdGF0ZUZyb21WZWN0b3IodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9h
dCB5KTsKKyAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3Rvcih1bnJlc3Ry
aWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOwogICAgIFtOZXdPYmplY3RdIFNW
R01hdHJpeCBmbGlwWCgpOwogICAgIFtOZXdPYmplY3RdIFNWR01hdHJpeCBmbGlwWSgpOwogICAg
IFtOZXdPYmplY3RdIFNWR01hdHJpeCBza2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxMiArMzAsMTIgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBs
ZW5ndGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVt
czsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgaW5pdGlhbGl6ZShTVkdOdW1iZXIgbmV3SXRlbSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBnZXR0ZXIgU1ZHTnVtYmVyIGdldEl0ZW0odW5zaWdu
ZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgaW5zZXJ0
SXRlbUJlZm9yZShTVkdOdW1iZXIgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdOdW1iZXIgcmVwbGFjZUl0ZW0oU1ZHTnVtYmVyIG5ld0l0
ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTnVt
YmVyIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSBTVkdOdW1iZXIgYXBwZW5kSXRlbShTVkdOdW1iZXIgbmV3SXRlbSk7CisgICAgdW5kZWZp
bmVkIGNsZWFyKCk7CisgICAgU1ZHTnVtYmVyIGluaXRpYWxpemUoU1ZHTnVtYmVyIG5ld0l0ZW0p
OworICAgIGdldHRlciBTVkdOdW1iZXIgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBTVkdOdW1iZXIgaW5zZXJ0SXRlbUJlZm9yZShTVkdOdW1iZXIgbmV3SXRlbSwgdW5zaWduZWQg
bG9uZyBpbmRleCk7CisgICAgU1ZHTnVtYmVyIHJlcGxhY2VJdGVtKFNWR051bWJlciBuZXdJdGVt
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgcmVtb3ZlSXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBTVkdOdW1iZXIgYXBwZW5kSXRlbShTVkdOdW1iZXIgbmV3SXRl
bSk7CiAgICAgc2V0dGVyIHVuZGVmaW5lZCAodW5zaWduZWQgbG9uZyBpbmRleCwgU1ZHTnVtYmVy
IG5ld0l0ZW0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmlkbAko
cmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIG51bWJlck9mSXRlbXM7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHUGF0aFNlZyBpbml0aWFsaXpl
KFNWR1BhdGhTZWcgbmV3SXRlbSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBnZXR0ZXIgU1ZH
UGF0aFNlZyBnZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU1ZHUGF0aFNlZyBpbnNlcnRJdGVtQmVmb3JlKFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5z
aWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIHJl
cGxhY2VJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQYXRoU2VnIGFwcGVuZEl0ZW0oU1ZH
UGF0aFNlZyBuZXdJdGVtKTsKKyAgICB1bmRlZmluZWQgY2xlYXIoKTsKKyAgICBTVkdQYXRoU2Vn
IGluaXRpYWxpemUoU1ZHUGF0aFNlZyBuZXdJdGVtKTsKKyAgICBnZXR0ZXIgU1ZHUGF0aFNlZyBn
ZXRJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1BhdGhTZWcgaW5zZXJ0SXRlbUJl
Zm9yZShTVkdQYXRoU2VnIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1Bh
dGhTZWcgcmVwbGFjZUl0ZW0oU1ZHUGF0aFNlZyBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdQYXRoU2VnIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
U1ZHUGF0aFNlZyBhcHBlbmRJdGVtKFNWR1BhdGhTZWcgbmV3SXRlbSk7CiAgICAgc2V0dGVyIHVu
ZGVmaW5lZCAodW5zaWduZWQgbG9uZyBpbmRleCwgU1ZHUGF0aFNlZyBuZXdJdGVtKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDEyICsyOSwxMiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgY2xlYXIoKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFNWR1BvaW50IGluaXRpYWxpemUoU1ZHUG9pbnQgbmV3SXRlbSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBnZXR0ZXIgU1ZHUG9pbnQgZ2V0SXRlbSh1bnNpZ25lZCBsb25n
IGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50IGluc2VydEl0ZW1CZWZv
cmUoU1ZHUG9pbnQgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBTVkdQb2ludCByZXBsYWNlSXRlbShTVkdQb2ludCBuZXdJdGVtLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1BvaW50IHJlbW92ZUl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdQb2lu
dCBhcHBlbmRJdGVtKFNWR1BvaW50IG5ld0l0ZW0pOworICAgIHVuZGVmaW5lZCBjbGVhcigpOwor
ICAgIFNWR1BvaW50IGluaXRpYWxpemUoU1ZHUG9pbnQgbmV3SXRlbSk7CisgICAgZ2V0dGVyIFNW
R1BvaW50IGdldEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHUG9pbnQgaW5zZXJ0
SXRlbUJlZm9yZShTVkdQb2ludCBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBT
VkdQb2ludCByZXBsYWNlSXRlbShTVkdQb2ludCBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBTVkdQb2ludCByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNW
R1BvaW50IGFwcGVuZEl0ZW0oU1ZHUG9pbnQgbmV3SXRlbSk7CiAgICAgc2V0dGVyIHVuZGVmaW5l
ZCAodW5zaWduZWQgbG9uZyBpbmRleCwgU1ZHUG9pbnQgbmV3SXRlbSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiAr
MjksMTIgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGNsZWFyKCk7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSBET01TdHJpbmcgaW5pdGlhbGl6ZShET01TdHJpbmcgbmV3SXRlbSk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBnZXR0ZXIgRE9NU3RyaW5nIGdldEl0ZW0odW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5zZXJ0SXRlbUJlZm9y
ZShET01TdHJpbmcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgcmVwbGFjZUl0ZW0oRE9NU3RyaW5nIG5ld0l0ZW0sIHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92
ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01T
dHJpbmcgYXBwZW5kSXRlbShET01TdHJpbmcgbmV3SXRlbSk7CisgICAgdW5kZWZpbmVkIGNsZWFy
KCk7CisgICAgRE9NU3RyaW5nIGluaXRpYWxpemUoRE9NU3RyaW5nIG5ld0l0ZW0pOworICAgIGdl
dHRlciBET01TdHJpbmcgZ2V0SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJp
bmcgaW5zZXJ0SXRlbUJlZm9yZShET01TdHJpbmcgbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgRE9NU3RyaW5nIHJlcGxhY2VJdGVtKERPTVN0cmluZyBuZXdJdGVtLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBET01TdHJpbmcgcmVtb3ZlSXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBET01TdHJpbmcgYXBwZW5kSXRlbShET01TdHJpbmcgbmV3SXRlbSk7CiAgICAg
c2V0dGVyIHVuZGVmaW5lZCAodW5zaWduZWQgbG9uZyBpbmRleCwgRE9NU3RyaW5nIG5ld0l0ZW0p
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
aWRsCShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBACiAKICAgICBs
b25nIGdldE51bWJlck9mQ2hhcnMoKTsKICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Q29tcHV0
ZWRUZXh0TGVuZ3RoKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxv
YXQgZ2V0U3ViU3RyaW5nTGVuZ3RoKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b24sIE5ld09iamVjdF0gU1ZHUG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2Jq
ZWN0XSBTVkdQb2ludCBnZXRFbmRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25n
IG9mZnNldCA9IDApOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdSZWN0
IGdldEV4dGVudE9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDApOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdldFJvdGF0aW9uT2ZDaGFy
KG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgdW5yZXN0cmljdGVkIGZs
b2F0IGdldFN1YlN0cmluZ0xlbmd0aChvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IDAs
IG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMCk7CisgICAgW05ld09iamVjdF0gU1ZH
UG9pbnQgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNl
dCA9IDApOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IGdldEVuZFBvc2l0aW9uT2ZDaGFyKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCk7CisgICAgW05ld09iamVjdF0gU1ZHUmVj
dCBnZXRFeHRlbnRPZkNoYXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwKTsKKyAg
ICB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0Um90YXRpb25PZkNoYXIob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBvZmZzZXQgPSAwKTsKICAgICBsb25nIGdldENoYXJOdW1BdFBvc2l0aW9uKERPTVBvaW50
SW5pdCBwb2ludCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VsZWN0U3Vi
U3RyaW5nKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwgb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBsZW5ndGggPSAwKTsKKyAgICB1bmRlZmluZWQgc2VsZWN0U3ViU3RyaW5nKG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5n
dGggPSAwKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAkocmV2aXNp
b24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDExICszNiwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdN
YXRyaXggbWF0cml4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQg
YW5nbGU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRNYXRyaXgob3B0
aW9uYWwgRE9NTWF0cml4MkRJbml0IG1hdHJpeCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgc2V0VHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB0eCwgdW5yZXN0cmljdGVk
IGZsb2F0IHR5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTY2FsZSh1
bnJlc3RyaWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJpY3RlZCBmbG9hdCBzeSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Um90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBhbmds
ZSwgdW5yZXN0cmljdGVkIGZsb2F0IGN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3kpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFNrZXdYKHVucmVzdHJpY3RlZCBmbG9hdCBh
bmdsZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2tld1kodW5yZXN0
cmljdGVkIGZsb2F0IGFuZ2xlKTsKKyAgICB1bmRlZmluZWQgc2V0TWF0cml4KG9wdGlvbmFsIERP
TU1hdHJpeDJESW5pdCBtYXRyaXgpOworICAgIHVuZGVmaW5lZCBzZXRUcmFuc2xhdGUodW5yZXN0
cmljdGVkIGZsb2F0IHR4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgdHkpOworICAgIHVuZGVmaW5lZCBz
ZXRTY2FsZSh1bnJlc3RyaWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJpY3RlZCBmbG9hdCBzeSk7Cisg
ICAgdW5kZWZpbmVkIHNldFJvdGF0ZSh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUsIHVucmVzdHJp
Y3RlZCBmbG9hdCBjeCwgdW5yZXN0cmljdGVkIGZsb2F0IGN5KTsKKyAgICB1bmRlZmluZWQgc2V0
U2tld1godW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlKTsKKyAgICB1bmRlZmluZWQgc2V0U2tld1ko
dW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtTGlzdC5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE1
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBjbGVhcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU1ZHVHJhbnNmb3JtIGluaXRpYWxpemUoU1ZHVHJhbnNmb3JtIG5ld0l0ZW0pOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gZ2V0dGVyIFNWR1RyYW5zZm9ybSBnZXRJdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHVHJhbnNmb3JtIGluc2VydEl0
ZW1CZWZvcmUoU1ZHVHJhbnNmb3JtIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHVHJhbnNmb3JtIHJlcGxhY2VJdGVtKFNWR1RyYW5zZm9y
bSBuZXdJdGVtLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFNWR1RyYW5zZm9ybSByZW1vdmVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gU1ZHVHJhbnNmb3JtIGFwcGVuZEl0ZW0oU1ZHVHJhbnNmb3JtIG5ld0l0
ZW0pOworICAgIHVuZGVmaW5lZCBjbGVhcigpOworICAgIFNWR1RyYW5zZm9ybSBpbml0aWFsaXpl
KFNWR1RyYW5zZm9ybSBuZXdJdGVtKTsKKyAgICBnZXR0ZXIgU1ZHVHJhbnNmb3JtIGdldEl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgU1ZHVHJhbnNmb3JtIGluc2VydEl0ZW1CZWZvcmUo
U1ZHVHJhbnNmb3JtIG5ld0l0ZW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFNWR1RyYW5z
Zm9ybSByZXBsYWNlSXRlbShTVkdUcmFuc2Zvcm0gbmV3SXRlbSwgdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgU1ZHVHJhbnNmb3JtIHJlbW92ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgU1ZHVHJhbnNmb3JtIGFwcGVuZEl0ZW0oU1ZHVHJhbnNmb3JtIG5ld0l0ZW0pOwogICAgIHNl
dHRlciB1bmRlZmluZWQgKHVuc2lnbmVkIGxvbmcgaW5kZXgsIFNWR1RyYW5zZm9ybSBuZXdJdGVt
KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0gY3Jl
YXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXgyREluaXQgbWF0cml4
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBjb25zb2xpZGF0ZSgpOwor
ICAgIFtOZXdPYmplY3RdIFNWR1RyYW5zZm9ybSBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4
KG9wdGlvbmFsIERPTU1hdHJpeDJESW5pdCBtYXRyaXgpOworICAgIFNWR1RyYW5zZm9ybSBjb25z
b2xpZGF0ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjQgKzQwLDI0IEBAIGVu
dW0gVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSB7ICJDb24KICAgICBFeHBvcnRNYWNybz1X
RUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIEludGVybmFsU2V0dGluZ3Mg
OiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkIHsKICAgICAvLyBTZXR0aW5ncwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN0YW5kYXJkRm9udEZhbWlseShET01TdHJpbmcg
ZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzZXRTZXJpZkZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlw
dCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U2Fuc1NlcmlmRm9udEZh
bWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRGaXhlZEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwg
RE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0
Q3Vyc2l2ZUZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RmFudGFzeUZvbnRGYW1pbHkoRE9N
U3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9N
U3RyaW5nIHNjcmlwdCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Rm9u
dExvYWRUaW1pbmdPdmVycmlkZShGb250TG9hZFRpbWluZ092ZXJyaWRlIG92ZXJyaWRlKTsKKyAg
ICB1bmRlZmluZWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KERPTVN0cmluZyBmYW1pbHksIERPTVN0
cmluZyBzY3JpcHQpOworICAgIHVuZGVmaW5lZCBzZXRTZXJpZkZvbnRGYW1pbHkoRE9NU3RyaW5n
IGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdW5kZWZpbmVkIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwgRE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdW5kZWZp
bmVkIHNldEZpeGVkRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0
KTsKKyAgICB1bmRlZmluZWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoRE9NU3RyaW5nIGZhbWlseSwg
RE9NU3RyaW5nIHNjcmlwdCk7CisgICAgdW5kZWZpbmVkIHNldEZhbnRhc3lGb250RmFtaWx5KERP
TVN0cmluZyBmYW1pbHksIERPTVN0cmluZyBzY3JpcHQpOworICAgIHVuZGVmaW5lZCBzZXRQaWN0
b2dyYXBoRm9udEZhbWlseShET01TdHJpbmcgZmFtaWx5LCBET01TdHJpbmcgc2NyaXB0KTsKKyAg
ICB1bmRlZmluZWQgc2V0Rm9udExvYWRUaW1pbmdPdmVycmlkZShGb250TG9hZFRpbWluZ092ZXJy
aWRlIG92ZXJyaWRlKTsKICAgICAvLyBGb3J3YXJkcyB0byBUZXh0QXV0b3NpemluZ1dpbmRvd1Np
emVPdmVycmlkZUhlaWdodCBhbmQgVGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGVXaWR0
aC4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRUZXh0QXV0b3NpemluZ1dp
bmRvd1NpemVPdmVycmlkZShsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlk
aW5nQ29udHJvbHModW5yZXN0cmljdGVkIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcyk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwodW5y
ZXN0cmljdGVkIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcyk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB1bmRlZmluZWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvclR5cGUgYmVo
YXZpb3IpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeShTdG9yYWdlQmxvY2tpbmdQb2xpY3kgcG9saWN5KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNo
aW5nUG9saWN5IHBvbGljeSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0
RnJhbWVGbGF0dGVuaW5nKEZyYW1lRmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0VXNlckludGVyZmFjZURpcmVjdGlv
blBvbGljeShVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5IHBvbGljeSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKFN5c3RlbUxh
eW91dERpcmVjdGlvbiBkaXJlY3Rpb24pOworICAgIHVuZGVmaW5lZCBzZXRUZXh0QXV0b3Npemlu
Z1dpbmRvd1NpemVPdmVycmlkZShsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CisgICAgdW5kZWZp
bmVkIHNldFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKHVucmVz
dHJpY3RlZCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpOworICAgIHVuZGVmaW5lZCBzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCh1bnJlc3RyaWN0ZWQgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKTsK
KyAgICB1bmRlZmluZWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvclR5cGUgYmVo
YXZpb3IpOworICAgIHVuZGVmaW5lZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU3RvcmFnZUJs
b2NraW5nUG9saWN5IHBvbGljeSk7CisgICAgdW5kZWZpbmVkIHNldFBERkltYWdlQ2FjaGluZ1Bv
bGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kgcG9saWN5KTsKKyAgICB1bmRlZmluZWQgc2V0RnJh
bWVGbGF0dGVuaW5nKEZyYW1lRmxhdHRlbmluZ1ZhbHVlIGZyYW1lRmxhdHRlbmluZyk7CisgICAg
dW5kZWZpbmVkIHNldFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koVXNlckludGVyZmFjZURp
cmVjdGlvblBvbGljeSBwb2xpY3kpOworICAgIHVuZGVmaW5lZCBzZXRTeXN0ZW1MYXlvdXREaXJl
Y3Rpb24oU3lzdGVtTGF5b3V0RGlyZWN0aW9uIGRpcmVjdGlvbik7CiAgICAgYXR0cmlidXRlIEZv
cmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3JjZWRDb2xvcnNBcmVJbnZlcnRlZEFjY2Vzc2liaWxp
dHlWYWx1ZTsKICAgICBhdHRyaWJ1dGUgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlIGZvcmNlZERp
c3BsYXlJc01vbm9jaHJvbWVBY2Nlc3NpYmlsaXR5VmFsdWU7CiAgICAgYXR0cmlidXRlIEZvcmNl
ZEFjY2Vzc2liaWxpdHlWYWx1ZSBmb3JjZWRQcmVmZXJzQ29udHJhc3RBY2Nlc3NpYmlsaXR5VmFs
dWU7CkBAIC02NSwzNCArNjUsMzQgQEAgZW51bSBVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5
IHsgIkNvbgogICAgIGF0dHJpYnV0ZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgZm9yY2VkU3Vw
cG9ydHNIaWdoRHluYW1pY1JhbmdlVmFsdWU7CiAKICAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFdlYkdMMkVuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRX
ZWJHUFVFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgc2V0RmV0Y2hBUElLZWVwQWxpdmVFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFF
bmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldFdlYkdMMkVuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0V2ViR1BVRW5hYmxlZChib29sZWFu
IGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRGZXRjaEFQSUtlZXBBbGl2ZUVuYWJsZWQoYm9v
bGVhbiBlbmFibGVkKTsKKyAgICB1bmRlZmluZWQgc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFi
bGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB2
cDlEZWNvZGVyRW5hYmxlZDsKIAogICAgIC8vIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy4KLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Np
b25DYXRlZ29yeShib29sZWFuIHNob3VsZCk7CisgICAgdW5kZWZpbmVkIHNldFNob3VsZE1hbmFn
ZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KGJvb2xlYW4gc2hvdWxkKTsKIAogICAgIC8vIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTaG91
bGREaXNwbGF5VHJhY2tLaW5kKFRyYWNrS2luZCBraW5kLCBib29sZWFuIGVuYWJsZWQpOwotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzaG91bGREaXNwbGF5VHJhY2tLaW5kKFRyYWNr
S2luZCBraW5kKTsKKyAgICB1bmRlZmluZWQgc2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZChUcmFj
a0tpbmQga2luZCwgYm9vbGVhbiBlbmFibGVkKTsKKyAgICBib29sZWFuIHNob3VsZERpc3BsYXlU
cmFja0tpbmQoVHJhY2tLaW5kIGtpbmQpOwogCiAgICAgLy8gUGFnZQotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldENhblN0YXJ0TWVkaWEoYm9vbGVhbiBlbmFibGVkKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRFZGl0YWJsZVJlZ2lvbkVuYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRV
c2VEYXJrQXBwZWFyYW5jZShib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRDYW5T
dGFydE1lZGlhKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldEVkaXRhYmxlUmVn
aW9uRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRVc2VEYXJrQXBw
ZWFyYW5jZShib29sZWFuIGVuYWJsZWQpOwogCiAgICAgLy8gU2Nyb2xsVmlldwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEFsbG93VW5jbGFtcGVkU2Nyb2xsUG9zaXRpb24o
Ym9vbGVhbiBhbGxvd1VuY2xhbXBlZCk7CisgICAgdW5kZWZpbmVkIHNldEFsbG93VW5jbGFtcGVk
U2Nyb2xsUG9zaXRpb24oYm9vbGVhbiBhbGxvd1VuY2xhbXBlZCk7CiAKICAgICAvLyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
c2V0U2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbihib29sZWFuIHNob3VsZERlYWN0aXZhdGUp
OworICAgIHVuZGVmaW5lZCBzZXRTaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKGJvb2xlYW4g
c2hvdWxkRGVhY3RpdmF0ZSk7CiAKICAgICAvLyBSZW5kZXJUaGVtZS9Gb250Q2FjaGUKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRG
b3JBY2Nlc3NpYmlsaXR5KGJvb2xlYW4gc2hvdWxkTW9jayk7CisgICAgdW5kZWZpbmVkIHNldFNo
b3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoYm9vbGVhbiBzaG91bGRNb2Nr
KTsKIAogICAgIC8vIEF1ZGlvQ29udGV4dAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHNldERlZmF1bHRBdWRpb0NvbnRleHRTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIHVuZGVmaW5lZCBzZXREZWZhdWx0QXVkaW9Db250ZXh0U2FtcGxlUmF0ZShmbG9hdCBzYW1w
bGVSYXRlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZp
c2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBib29s
ZWFuIGlzUGFpbnRpbmdGcmVxdWVudGx5KEVsZW1lbnQgZWxlbWVudCk7CiAgICAgdW5kZWZpbmVk
IGluY3JlbWVudEZyZXF1ZW50UGFpbnRDb3VudGVyKEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVt
ZW50IGVsZW1lbnQpOworICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVt
ZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoRE9NU3RyaW5nIHVybCk7CiAg
ICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoRE9NU3RyaW5nIHVybCk7CiAgICAg
RE9NU3RyaW5nIGZldGNoUmVzcG9uc2VTb3VyY2UoRmV0Y2hSZXNwb25zZSByZXNwb25zZSk7CkBA
IC0zMDksMjMgKzMwOSwyMyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBsb25nIGRlZmVycmVkR3Jv
dXBSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hlZXQpOwogICAgIGxvbmcgZGVmZXJyZWRLZXlmcmFt
ZXNSdWxlc0NvdW50KFN0eWxlU2hlZXQgc2hlZXQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBET01TdHJpbmcgc2hhZG93Um9vdFR5cGUoTm9kZSByb290KTsKKyAgICBET01TdHJpbmcgc2hh
ZG93Um9vdFR5cGUoTm9kZSByb290KTsKICAgICBET01TdHJpbmcgc2hhZG93UHNldWRvSWQoRWxl
bWVudCBlbGVtZW50KTsKICAgICB1bmRlZmluZWQgc2V0U2hhZG93UHNldWRvSWQoRWxlbWVudCBl
bGVtZW50LCBET01TdHJpbmcgaWQpOwogICAgIE5vZGUgdHJlZVNjb3BlUm9vdE5vZGUoTm9kZSBu
b2RlKTsKICAgICBOb2RlIHBhcmVudFRyZWVTY29wZShOb2RlIG5vZGUpOwogCiAgICAgLy8gU3Bh
dGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVk
IGxvbmcgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50KCk7CiAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmZsaWdodEJlYWNvbnNDb3VudDsKIAogICAg
IC8vIENTUyBBbmltYXRpb24gdGVzdGluZy4KICAgICBib29sZWFuIGFuaW1hdGlvbldpdGhJZEV4
aXN0cyhET01TdHJpbmcgaWQpOwogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc3VzcGVuZEFuaW1h
dGlvbnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXN1bWVBbmltYXRp
b25zKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGFuaW1hdGlvbnNBcmVTdXNw
ZW5kZWQoKTsKKyAgICB1bmRlZmluZWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICB1bmRlZmlu
ZWQgcmVzdW1lQW5pbWF0aW9ucygpOworICAgIGJvb2xlYW4gYW5pbWF0aW9uc0FyZVN1c3BlbmRl
ZCgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYW5pbWF0aW9uc0ludGVydmFsOwog
CiAgICAgLy8gV2ViIEFuaW1hdGlvbnMgdGVzdGluZy4KQEAgLTMzNCw1MiArMzM0LDUyIEBAIGVu
dW0gVHJlZVR5cGUgewogICAgIGRvdWJsZSB0aW1lVG9OZXh0QW5pbWF0aW9uVGljayhXZWJBbmlt
YXRpb24gYW5pbWF0aW9uKTsKIAogICAgIC8vIEZvciBhbmltYXRpb25zIHRlc3RpbmcsIHdlIG5l
ZWQgYSB3YXkgdG8gZ2V0IGF0IHBzZXVkbyBlbGVtZW50cy4KLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIEVsZW1lbnQ/IHBzZXVkb0VsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcHNl
dWRvSWQpOworICAgIEVsZW1lbnQ/IHBzZXVkb0VsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBET01T
dHJpbmcgcHNldWRvSWQpOwogCiAgICAgRE9NU3RyaW5nIHZpc2libGVQbGFjZWhvbGRlcihFbGVt
ZW50IGVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhU
TUxJbnB1dEVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGNvbG9yVmFsdWUpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8RE9NU3RyaW5nPiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2
aW91c0hpc3RvcnlJdGVtKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0
Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShzZXF1ZW5jZTxET01TdHJpbmc+
IHZhbHVlcyk7CisgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2
aW91c0hpc3RvcnlJdGVtKCk7CisgICAgdW5kZWZpbmVkIHNldEZvcm1Db250cm9sU3RhdGVPZlBy
ZXZpb3VzSGlzdG9yeUl0ZW0oc2VxdWVuY2U8RE9NU3RyaW5nPiB2YWx1ZXMpOwogCi0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01SZWN0IGFic29sdXRlQ2FyZXRCb3VuZHMoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNDYXJldEJsaW5raW5nU3VzcGVuZGVkKCk7CisgICAg
RE9NUmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CisgICAgYm9vbGVhbiBpc0NhcmV0Qmxpbmtp
bmdTdXNwZW5kZWQoKTsKIAogICAgIERPTVJlY3QgYm91bmRpbmdCb3goRWxlbWVudCBlbGVtZW50
KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNwZWN0b3JHcmlk
T3ZlcmxheUNvdW50KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01SZWN0TGlzdCBpbnNw
ZWN0b3JIaWdobGlnaHRSZWN0cygpOworICAgIHVuc2lnbmVkIGxvbmcgaW5zcGVjdG9yR3JpZE92
ZXJsYXlDb3VudCgpOworICAgIERPTVJlY3RMaXN0IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKCk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JO
b2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUpOwotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gUmFuZ2U/IG1hcmtlclJhbmdlRm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJr
ZXJUeXBlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9kZSBub2RlLCBET01TdHJpbmcgbWFy
a2VyVHlwZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBE
T01TdHJpbmcgZHVtcE1hcmtlclJlY3RzKERPTVN0cmluZyBtYXJrZXJUeXBlKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKGJvb2xlYW4gZmxhZyk7CisgICAgdW5zaWduZWQgbG9uZyBtYXJrZXJDb3VudEZvck5vZGUo
Tm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSk7CisgICAgUmFuZ2U/IG1hcmtlclJhbmdl
Rm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBET01TdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKE5vZGUgbm9kZSwg
RE9NU3RyaW5nIG1hcmtlclR5cGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmlu
ZyBkdW1wTWFya2VyUmVjdHMoRE9NU3RyaW5nIG1hcmtlclR5cGUpOworICAgIHVuZGVmaW5lZCBz
ZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2xlYW4gZmxhZyk7CiAKICAgICB1
bmRlZmluZWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogICAgIHVuZGVmaW5lZCBzZXRGb250U21v
b3RoaW5nRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGxvbmcgeCwgbG9uZyB5KTsKKyAgICB1
bmRlZmluZWQgc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKGxvbmcgeCwgbG9uZyB5KTsKIAogICAgIC8v
IExpa2UgRWxlbWVudC5zY3JvbGxUbygpLCBidXQgd2l0aG91dCBjb25zdGFpbnRzLCBmb3IgdGVz
dGluZyBydWJiZXItYmFuZGluZy4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB1
bmNvbnN0cmFpbmVkU2Nyb2xsVG8oRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgdW5kZWZpbmVkIHVuY29uc3RyYWluZWRT
Y3JvbGxUbyhFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmlj
dGVkIGRvdWJsZSB5KTsKIAogICAgIC8vIFNjcm9sbHMgdGhlIGVsZW1lbnQgYnkgdGhlIGdpdmVu
IGRlbHRhLCBhcHByb3hpbWF0aW5nIHRoZSBhc3luYyB3aGVlbCBldmVudCBoYW5kbGluZyBjb2Rl
IHBhdGggd2hlcmUgYXZhaWxhYmxlLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHNjcm9sbEJ5U2ltdWxhdGluZ1doZWVsRXZlbnQoRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0
ZWQgZG91YmxlIGRlbHRhWCwgdW5yZXN0cmljdGVkIGRvdWJsZSBkZWx0YVkpOworICAgIHVuZGVm
aW5lZCBzY3JvbGxCeVNpbXVsYXRpbmdXaGVlbEV2ZW50KEVsZW1lbnQgZWxlbWVudCwgdW5yZXN0
cmljdGVkIGRvdWJsZSBkZWx0YVgsIHVucmVzdHJpY3RlZCBkb3VibGUgZGVsdGFZKTsKIAotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3QgdmlzdWFsVmlld3BvcnRSZWN0KCk7CisgICAgRE9N
UmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKTsKKyAgICBET01SZWN0IHZpc3VhbFZpZXdwb3J0UmVj
dCgpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Vmlld0lzVHJhbnNw
YXJlbnQoYm9vbGVhbiB0cm5hc3BhcmVudCk7CisgICAgdW5kZWZpbmVkIHNldFZpZXdJc1RyYW5z
cGFyZW50KGJvb2xlYW4gdHJuYXNwYXJlbnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBE
T01TdHJpbmcgdmlld0Jhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBzZXRWaWV3QmFzZUJhY2tncm91bmRDb2xvcihET01TdHJpbmcgY29sb3JW
YWx1ZSk7CisgICAgRE9NU3RyaW5nIHZpZXdCYXNlQmFja2dyb3VuZENvbG9yKCk7CisgICAgdW5k
ZWZpbmVkIHNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKERPTVN0cmluZyBjb2xvclZhbHVlKTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFBhZ2luYXRpb24oRE9NU3Ry
aW5nIG1vZGUsIGxvbmcgZ2FwLCBvcHRpb25hbCBsb25nIHBhZ2VMZW5ndGggPSAwKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVk
KGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldFBhZ2luYXRpb24oRE9NU3RyaW5n
IG1vZGUsIGxvbmcgZ2FwLCBvcHRpb25hbCBsb25nIHBhZ2VMZW5ndGggPSAwKTsKKyAgICB1bmRl
ZmluZWQgc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgY29uZmlndXJhdGlvbkZvclZpZXdwb3J0
KHVucmVzdHJpY3RlZCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvLCBsb25nIGRldmljZVdpZHRoLCBs
b25nIGRldmljZUhlaWdodCwgbG9uZyBhdmFpbGFibGVXaWR0aCwgbG9uZyBhdmFpbGFibGVIZWln
aHQpOworICAgIERPTVN0cmluZyBjb25maWd1cmF0aW9uRm9yVmlld3BvcnQodW5yZXN0cmljdGVk
IGZsb2F0IGRldmljZVBpeGVsUmF0aW8sIGxvbmcgZGV2aWNlV2lkdGgsIGxvbmcgZGV2aWNlSGVp
Z2h0LCBsb25nIGF2YWlsYWJsZVdpZHRoLCBsb25nIGF2YWlsYWJsZUhlaWdodCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gd2FzTGFzdENoYW5nZVVzZXJFZGl0KEVsZW1lbnQg
dGV4dEZpZWxkKTsKKyAgICBib29sZWFuIHdhc0xhc3RDaGFuZ2VVc2VyRWRpdChFbGVtZW50IHRl
eHRGaWVsZCk7CiAgICAgYm9vbGVhbiBlbGVtZW50U2hvdWxkQXV0b0NvbXBsZXRlKEhUTUxJbnB1
dEVsZW1lbnQgaW5wdXRFbGVtZW50KTsKICAgICB1bmRlZmluZWQgc2V0QXV0b2ZpbGxlZChIVE1M
SW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgYm9vbGVhbiBlbmFibGVkKTsKICAgICB1bmRlZmlu
ZWQgc2V0QXV0b0ZpbGxlZEFuZFZpZXdhYmxlKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50
LCBib29sZWFuIGVuYWJsZWQpOwpAQCAtMzkyLDE2ICszOTIsMTYgQEAgZW51bSBUcmVlVHlwZSB7
CiAgICAgRWxlbWVudCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9uZyBoZWln
aHQpOwogICAgIHVuZGVmaW5lZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50
KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlT2ZTdHJpbmcoRE9NU3Ry
aW5nIHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5k
T3B0aW9ucyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50TWF0
Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlv
bnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNp
Z25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0
cmluZz4gZmluZE9wdGlvbnMpOworICAgIFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0
ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlv
bnMpOworICAgIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJpbmcgdGV4
dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtNYXRjaGVz
KTsKKyAgICB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRleHQsIHNl
cXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBET01TdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCBmb3JtQ29udHJvbEVsZW1lbnQp
OworICAgIERPTVN0cmluZyBhdXRvZmlsbEZpZWxkTmFtZShFbGVtZW50IGZvcm1Db250cm9sRWxl
bWVudCk7CiAgICAgYm9vbGVhbiBpc1NwZWxsY2hlY2tEaXNhYmxlZEV4Y2VwdFRleHRSZXBsYWNl
bWVudChIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBpbnZhbGlkYXRlQ29udHJvbFRpbnRzKCk7CisgICAgdW5kZWZpbmVk
IGludmFsaWRhdGVDb250cm9sVGludHMoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcg
eSwgbG9uZyB3LCBsb25nIGgpOworICAgIHVuZGVmaW5lZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVs
ZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoKTsKIAogICAgIFJh
bmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCB1bnNpZ25lZCBs
b25nIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2ln
bmVkIGxvbmcgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwpA
QCAtNDA5LDEzICs0MDksMTMgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgRE9NU3RyaW5nIHJhbmdl
QXNUZXh0KFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3
YXJkc1RleHRJdGVyYXRvcihSYW5nZSByYW5nZSk7CiAgICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2Ug
cmFuZ2UsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxl
bmd0aCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxvbmcgeSk7CisgICAgUmFuZ2U/IHJhbmdlRm9yRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24obG9uZyB4LCBsb25nIHkpOwogICAgIFJhbmdlPyByYW5n
ZU9mU3RyaW5nTmVhckxvY2F0aW9uKFJhbmdlIHJhbmdlLCBET01TdHJpbmcgdGV4dCwgbG9uZyB0
YXJnZXRPZmZzZXQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RGVs
ZWdhdGVzU2Nyb2xsaW5nKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldERlbGVn
YXRlc1Njcm9sbGluZyhib29sZWFuIGVuYWJsZWQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdFNwZWxsQ2hlY2tSZXF1ZXN0U2VxdWVuY2UoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0U3BlbGxDaGVja1By
b2Nlc3NlZFNlcXVlbmNlKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxhc3RTcGVsbENoZWNr
UmVxdWVzdFNlcXVlbmNlKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxhc3RTcGVsbENoZWNr
UHJvY2Vzc2VkU2VxdWVuY2UoKTsKICAgICB1bmRlZmluZWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKCk7CiAKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KTsKQEAgLTQyNCwxMyArNDI0LDEzIEBAIGVudW0gVHJlZVR5cGUgewogICAgIHNlcXVlbmNlPERP
TVN0cmluZz4gdXNlclByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCk7CiAgICAgdW5kZWZp
bmVkIHNldFVzZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljKERPTVN0cmluZyBjaGFyYWN0
ZXJpc3RpYyk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgd2hlZWxF
dmVudEhhbmRsZXJDb3VudCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9u
ZyB0b3VjaEV2ZW50SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWduZWQgbG9uZyB3aGVlbEV2ZW50
SGFuZGxlckNvdW50KCk7CisgICAgdW5zaWduZWQgbG9uZyB0b3VjaEV2ZW50SGFuZGxlckNvdW50
KCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3RMaXN0IHRvdWNoRXZlbnRSZWN0
c0ZvckV2ZW50KERPTVN0cmluZyBldmVudE5hbWUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
RE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRMaXN0ZW5lclJlY3RzKCk7CisgICAgRE9NUmVj
dExpc3QgdG91Y2hFdmVudFJlY3RzRm9yRXZlbnQoRE9NU3RyaW5nIGV2ZW50TmFtZSk7CisgICAg
RE9NUmVjdExpc3QgcGFzc2l2ZVRvdWNoRXZlbnRMaXN0ZW5lclJlY3RzKCk7CiAKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIE5vZGVMaXN0PyBub2Rlc0Zyb21SZWN0KERvY3VtZW50IGRvY3VtZW50
LCBsb25nIHgsIGxvbmcgeSwKKyAgICBOb2RlTGlzdD8gbm9kZXNGcm9tUmVjdChEb2N1bWVudCBk
b2N1bWVudCwgbG9uZyB4LCBsb25nIHksCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGlu
ZywgdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKICAgICAgICAgYm9vbGVhbiBpZ25vcmVDbGlw
cGluZywgYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1l
Q29udGVudCk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZTY3JvbGxhYmxlQXJlYXMoKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxlKGxvbmcgcGFnZU51bWJlcik7CisgICAg
Ym9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxlKGxvbmcgcGFnZU51bWJlcik7CiAKICAgICB1bnNpZ25l
ZCBsb25nIGltYWdlRnJhbWVJbmRleChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHVu
c2lnbmVkIGxvbmcgaW1hZ2VGcmFtZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CkBA
IC00ODAsOCArNDgwLDggQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEludGVybmFsU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgd29ya2VyVGhyZWFkQ291bnQ7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFyZVNWR0FuaW1hdGlvbnNQYXVzZWQ7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBkb3VibGUgc3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0VsZW1l
bnQgZWxlbWVudCk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5pbWF0
aW9uc1BhdXNlZDsKKyAgICBkb3VibGUgc3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0VsZW1l
bnQgZWxlbWVudCk7CiAKICAgICBib29sZWFuIHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2Fn
ZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpOwogCkBAIC00OTcsMzcgKzQ5NywzNyBAQCBlbnVt
IFRyZWVUeXBlIHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVT
X1JPT1RfTEFZRVJfUFJPUEVSVElFUyA9IDI1NjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBM
QVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiA9IDUxMjsKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX0RFRVBfQ09MT1IgPSAxMDI0OwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVudCBkb2N1bWVu
dCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01TdHJpbmcgbGF5
ZXJUcmVlQXNUZXh0KERvY3VtZW50IGRvY3VtZW50LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBm
bGFncyA9IDApOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGxvbmcg
bGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgbGF5ZXJJREZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGJhck92ZXJsYXlTdHlsZShvcHRpb25hbCBOb2RlPyBu
b2RlID0gbnVsbCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIHNjcm9sbGJhclVz
aW5nRGFya0FwcGVhcmFuY2Uob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShvcHRpb25h
bCBOb2RlPyBub2RlID0gbnVsbCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcg
dmVydGljYWxTY3JvbGxiYXJTdGF0ZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7CisgICAg
RE9NU3RyaW5nIHNjcm9sbGJhck92ZXJsYXlTdHlsZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVs
bCk7CisgICAgYm9vbGVhbiBzY3JvbGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNlKG9wdGlvbmFsIE5v
ZGU/IG5vZGUgPSBudWxsKTsKKyAgICBET01TdHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRl
KG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKKyAgICBET01TdHJpbmcgdmVydGljYWxTY3Jv
bGxiYXJTdGF0ZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxpbmdUcmVlQXNUZXh0KCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoKTsg
Ly8gRklYTUU6IHJlbmFtZSB0byBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKS4KLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVJlY3RMaXN0IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoKTsK
KyAgICBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgRE9NU3RyaW5n
IHNjcm9sbGluZ1RyZWVBc1RleHQoKTsKKyAgICBET01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMoKTsgLy8gRklYTUU6IHJlbmFtZSB0byBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMoKS4KKyAgICBET01SZWN0TGlzdCBub25GYXN0U2Nyb2xsYWJsZVJlY3RzKCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoKTsKKyAgICBE
T01TdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KCk7CiAKICAgICAvLyBUaGVzZSB0aHJvdyBpZiB0
aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0RWxlbWVudFVzZXNEaXNwbGF5TGlzdERyYXdpbmco
RWxlbWVudCBlbGVtZW50LCBib29sZWFuIHVzZXNEaXNwbGF5TGlzdERyYXdpbmcpOwotICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEVsZW1lbnRUcmFja3NEaXNwbGF5TGlzdFJl
cGxheShFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gdHJhY2tSZXBsYXkpOworICAgIHVuZGVmaW5l
ZCBzZXRFbGVtZW50VXNlc0Rpc3BsYXlMaXN0RHJhd2luZyhFbGVtZW50IGVsZW1lbnQsIGJvb2xl
YW4gdXNlc0Rpc3BsYXlMaXN0RHJhd2luZyk7CisgICAgdW5kZWZpbmVkIHNldEVsZW1lbnRUcmFj
a3NEaXNwbGF5TGlzdFJlcGxheShFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gdHJhY2tSZXBsYXkp
OwogCiAgICAgLy8gRmxhZ3MgZm9yIGRpc3BsYXlMaXN0Rm9yRWxlbWVudC4KICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUyA9
IDE7CiAgICAgLy8gUmV0dXJucyB0aGUgcmVjb3JkZWQgZGlzcGxheSBsaXN0LgotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVs
ZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgRE9NU3RyaW5n
IGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVk
IHNob3J0IGZsYWdzID0gMCk7CiAgICAgLy8gUmV0dXJucyB0aGUgZGlzcGxheSBsaXN0IHRoYXQg
d2FzIGFjdHVhbGx5IHBhaW50ZWQuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcg
cmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5z
aWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBET01TdHJpbmcgcmVwbGF5RGlzcGxheUxpc3RG
b3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3Mg
PSAwKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGdhcmJhZ2VDb2xsZWN0
RG9jdW1lbnRSZXNvdXJjZXMoKTsKKyAgICB1bmRlZmluZWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVu
dFJlc291cmNlcygpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0
QXV0aG9yQ1NTKERPTVN0cmluZyBjc3MpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIGluc2VydFVzZXJDU1MoRE9NU3RyaW5nIGNzcyk7CisgICAgdW5kZWZpbmVkIGluc2VydEF1
dGhvckNTUyhET01TdHJpbmcgY3NzKTsKKyAgICB1bmRlZmluZWQgaW5zZXJ0VXNlckNTUyhET01T
dHJpbmcgY3NzKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVW5kZXJNZW1v
cnlQcmVzc3VyZTsKICAgICB1bmRlZmluZWQgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgp
OwpAQCAtNTQyLDI2ICs1NDIsMjYgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFs
ID0gUkVTSVpFX09CU0VSVkVSXSB1bnNpZ25lZCBsb25nIG51bWJlck9mUmVzaXplT2JzZXJ2ZXJz
KERvY3VtZW50IGRvY3VtZW50KTsKICAgICBXaW5kb3dQcm94eT8gb3BlbkR1bW15SW5zcGVjdG9y
RnJvbnRlbmQoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5kZWZpbmVkIGNsb3NlRHVtbXlJbnNwZWN0
b3JGcm9udGVuZCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldEluc3Bl
Y3RvcklzVW5kZXJUZXN0KGJvb2xlYW4gaXNVbmRlclRlc3QpOworICAgIHVuZGVmaW5lZCBzZXRJ
bnNwZWN0b3JJc1VuZGVyVGVzdChib29sZWFuIGlzVW5kZXJUZXN0KTsKIAogICAgIERPTVN0cmlu
ZyBjb3VudGVyVmFsdWUoRWxlbWVudCBlbGVtZW50KTsKICAgICBsb25nIHBhZ2VOdW1iZXIoRWxl
bWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZVdpZHRoID0gODAw
LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFnZUhlaWdodCA9IDYwMCk7CiAgICAgc2Vx
dWVuY2U8RE9NU3RyaW5nPiBzaG9ydGN1dEljb25VUkxzKCk7CiAgICAgbG9uZyBudW1iZXJPZlBh
Z2VzKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMgPSA4MDAs
IG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzID0gNjAwKTsK
LSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBwYWdlUHJvcGVydHkoRE9NU3RyaW5n
IHByb3BlcnR5TmFtZSwgbG9uZyBwYWdlTnVtYmVyKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IERPTVN0cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhsb25nIHBhZ2VJbmRleCwgbG9u
ZyB3aWR0aCwgbG9uZyBoZWlnaHQsIGxvbmcgbWFyZ2luVG9wLCBsb25nIG1hcmdpblJpZ2h0LCBs
b25nIG1hcmdpbkJvdHRvbSwgbG9uZyBtYXJnaW5MZWZ0KTsKKyAgICBET01TdHJpbmcgcGFnZVBy
b3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7CisgICAgRE9N
U3RyaW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGxvbmcgcGFnZUluZGV4LCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCwgbG9uZyBtYXJnaW5Ub3AsIGxvbmcgbWFyZ2luUmlnaHQsIGxvbmcg
bWFyZ2luQm90dG9tLCBsb25nIG1hcmdpbkxlZnQpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0UGFnZVNjYWxlRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZh
Y3RvciwgbG9uZyB4LCBsb25nIHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yKCk7CisgICAgdW5kZWZpbmVkIHNldFBhZ2VTY2FsZUZhY3Rvcih1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2NhbGVGYWN0b3IsIGxvbmcgeCwgbG9uZyB5KTsKKyAgICBmbG9hdCBwYWdl
U2NhbGVGYWN0b3IoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFBh
Z2Vab29tRmFjdG9yKHVucmVzdHJpY3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRUZXh0Wm9vbUZhY3Rvcih1bnJlc3RyaWN0ZWQgZmxv
YXQgem9vbUZhY3Rvcik7CisgICAgdW5kZWZpbmVkIHNldFBhZ2Vab29tRmFjdG9yKHVucmVzdHJp
Y3RlZCBmbG9hdCB6b29tRmFjdG9yKTsKKyAgICB1bmRlZmluZWQgc2V0VGV4dFpvb21GYWN0b3Io
dW5yZXN0cmljdGVkIGZsb2F0IHpvb21GYWN0b3IpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSB1bmRlZmluZWQgc2V0VXNlRml4ZWRMYXlvdXQoYm9vbGVhbiB1c2VGaXhlZExheW91dCk7Ci0g
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Rml4ZWRMYXlvdXRTaXplKGxvbmcg
d2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB1bmRlZmluZWQgc2V0VXNlRml4ZWRMYXlvdXQoYm9v
bGVhbiB1c2VGaXhlZExheW91dCk7CisgICAgdW5kZWZpbmVkIHNldEZpeGVkTGF5b3V0U2l6ZShs
b25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAgICAgdW5kZWZpbmVkIHNldFByaW50aW5nKGxvbmcg
d2lkdGgsIGxvbmcgaGVpZ2h0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVk
IHNldFZpZXdFeHBvc2VkUmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZs
b2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdo
dCk7CisgICAgdW5kZWZpbmVkIHNldFZpZXdFeHBvc2VkUmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQg
eCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0
cmljdGVkIGZsb2F0IGhlaWdodCk7CiAKICAgICB1bmRlZmluZWQgc2V0SGVhZGVySGVpZ2h0KHVu
cmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQpOwogICAgIHVuZGVmaW5lZCBzZXRGb290ZXJIZWlnaHQo
dW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7CkBAIC01OTYsMzUgKzU5NiwzNSBAQCBlbnVtIFRy
ZWVUeXBlIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBib3RoIHJlc2V0IHRoZSB0cmFja2Vk
IHJlcGFpbnQgcmVjdHMuIFRoZXkgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIGZvbGxv
d2luZyBvcmRlcjoKICAgICAvLyAgc3RhcnRUcmFja2luZ1JlcGFpbnRzLCByZXBhaW50UmVjdHNB
c1RleHQsIHN0b3BUcmFja2luZ1JlcGFpbnRzLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHN0b3BUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgdW5kZWZpbmVkIHN0YXJ0VHJh
Y2tpbmdSZXBhaW50cygpOworICAgIHVuZGVmaW5lZCBzdG9wVHJhY2tpbmdSZXBhaW50cygpOwog
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc3RhcnRUcmFja2luZ0xheWVyRmx1
c2hlcygpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBsYXllckZsdXNo
Q291bnQoKTsKKyAgICB1bmRlZmluZWQgc3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygpOworICAg
IHVuc2lnbmVkIGxvbmcgbGF5ZXJGbHVzaENvdW50KCk7CiAKICAgICAvLyBRdWVyeSBpZiBhIHRp
bWVyIGlzIGN1cnJlbnRseSB0aHJvdHRsZWQsIHRvIGRlYnVnIHRpbWVyIHRocm90dGxpbmcuCi0g
ICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGlzVGltZXJUaHJvdHRsZWQobG9uZyB0aW1l
ckhhbmRsZSk7CisgICAgYm9vbGVhbiBpc1RpbWVyVGhyb3R0bGVkKGxvbmcgdGltZXJIYW5kbGUp
OwogCiAgICAgRE9NU3RyaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxpbmdSZWFzb25z
KCk7CiAgICAgYm9vbGVhbiBhcmVUaW1lcnNUaHJvdHRsZWQoKTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWQoYm9vbGVhbiBlbmFibGVk
KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRPdXRzaWRlVmlld3BvcnRU
aHJvdHRsaW5nRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHVuZGVmaW5lZCBzZXRMb3dQ
b3dlck1vZGVFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHNldE91dHNp
ZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGRvdWJsZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbnRlcnZhbDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzY3JpcHRlZEFuaW1hdGlvbnNBcmVTdXNwZW5kZWQ7
CiAKICAgICAvLyBPdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgV2ViUGFnZTo6ZXZlbnRUaHJvdHRs
aW5nRGVsYXkoKSwgd2hpY2ggb25seSBhZmZlY3RzIGlPUy4KICAgICBhdHRyaWJ1dGUgRXZlbnRU
aHJvdHRsaW5nQmVoYXZpb3I/IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGU7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzdGFydFRyYWNraW5nU3R5bGVSZWNhbGNz
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIHN0eWxlUmVjYWxjQ291
bnQoKTsKKyAgICB1bmRlZmluZWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygpOworICAgIHVu
c2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxhc3RTdHlsZVVwZGF0ZVNpemU7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBzdGFydFRyYWNraW5nQ29tcG9zaXRpbmdVcGRhdGVzKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvbXBvc2l0aW5nVXBkYXRlQ291bnQoKTsK
KyAgICB1bmRlZmluZWQgc3RhcnRUcmFja2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOworICAgIHVu
c2lnbmVkIGxvbmcgY29tcG9zaXRpbmdVcGRhdGVDb3VudCgpOwogCi0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgc3RhcnRUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMoKTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgcmVuZGVyaW5nVXBkYXRlQ291bnQoKTsK
KyAgICB1bmRlZmluZWQgc3RhcnRUcmFja2luZ1JlbmRlcmluZ1VwZGF0ZXMoKTsKKyAgICB1bnNp
Z25lZCBsb25nIHJlbmRlcmluZ1VwZGF0ZUNvdW50KCk7CiAKICAgICBhdHRyaWJ1dGUgQ29tcG9z
aXRpbmdQb2xpY3k/IGNvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGU7CiAKQEAgLTYzMywxMiArNjMz
LDEyIEBAIGVudW0gVHJlZVR5cGUgewogICAgIC8vIHxub2RlfCBzaG91bGQgYmUgRG9jdW1lbnQs
IEhUTUxJRnJhbWVFbGVtZW50LCBvciB1bnNwZWNpZmllZC4KICAgICAvLyBJZiB8bm9kZXwgaXMg
YW4gSFRNTElGcmFtZUVsZW1lbnQsIGl0IGFzc3VtZXMgbm9kZS5jb250ZW50RG9jdW1lbnQgaXMK
ICAgICAvLyBzcGVjaWZpZWQgd2l0aG91dCBzZWN1cml0eSBjaGVja3MuIFVuc3BlY2lmaWVkIG9y
IG51bGwgbWVhbnMgdGhpcyBkb2N1bWVudC4KLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5b3V0
VGFza3Mob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOworICAgIHVuZGVmaW5lZCB1cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5b3V0VGFza3Mob3B0aW9u
YWwgTm9kZT8gbm9kZSA9IG51bGwpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGF5b3V0Q291bnQ7CiAKICAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIG1vdXNlIGN1cnNvciB1c2VkIGF0IHRoZSBzcGVjaWZpZWQgY2xpZW50
IGxvY2F0aW9uLgotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldEN1cnJlbnRD
dXJzb3JJbmZvKCk7CisgICAgRE9NU3RyaW5nIGdldEN1cnJlbnRDdXJzb3JJbmZvKCk7CiAKICAg
ICBET01TdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQgZWxlbWVudCk7CiAKQEAg
LTY2Miw3ICs2NjIsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9d
IHNlcXVlbmNlPERPTVN0cmluZz4gbWVkaWFSZXNwb25zZVNvdXJjZXMoSFRNTE1lZGlhRWxlbWVu
dCBtZWRpYSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBzZXF1ZW5jZTxET01TdHJpbmc+IG1l
ZGlhUmVzcG9uc2VDb250ZW50UmFuZ2VzKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEpOwogICAgIFtD
b25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oSFRN
TE1lZGlhRWxlbWVudCBlbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93
RXhjZXB0aW9uXSBib29sZWFuIG1lZGlhRWxlbWVudEhhc0NoYXJhY3RlcmlzdGljKEhUTUxNZWRp
YUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIGNoYXJhY3RlcmlzdGljKTsKKyAgICBbQ29uZGl0
aW9uYWw9VklERU9dIGJvb2xlYW4gbWVkaWFFbGVtZW50SGFzQ2hhcmFjdGVyaXN0aWMoSFRNTE1l
ZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgY2hhcmFjdGVyaXN0aWMpOwogICAgIFtDb25k
aXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKEhUTUxNZWRp
YUVsZW1lbnQgbWVkaWEpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGVuZFNp
bXVsYXRlZEhEQ1BFcnJvcihIVE1MTWVkaWFFbGVtZW50IG1lZGlhKTsKIApAQCAtNjcwLDkgKzY3
MCw5IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbD1WSURFT10gRE9NU3RyaW5n
IGVsZW1lbnRCdWZmZXJpbmdQb2xpY3koSFRNTE1lZGlhRWxlbWVudCBtZWRpYSk7CiAgICAgW0Nv
bmRpdGlvbmFsPVZJREVPXSBkb3VibGUgcHJpdmF0ZVBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVt
ZW50IG1lZGlhKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIGJvb2xlYW4gcHJpdmF0ZVBsYXll
ck11dGVkKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRPdmVycmlkZVByZWZlcnJlZER5bmFtaWNS
YW5nZU1vZGUoSFRNTE1lZGlhRWxlbWVudCBtZWRpYSwgRE9NU3RyaW5nIG1vZGUpOworICAgIFtD
b25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHNldE92ZXJyaWRlUHJlZmVycmVkRHluYW1pY1Jh
bmdlTW9kZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhLCBET01TdHJpbmcgbW9kZSk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJy
aWRlKG9wdGlvbmFsIGJvb2xlYW4/IGlzUGxheWluZyA9IG51bGwpOworICAgIHVuZGVmaW5lZCBz
ZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKG9wdGlvbmFsIGJvb2xlYW4/IGlzUGxheWlu
ZyA9IG51bGwpOwogCiAgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUFdIHVu
ZGVmaW5lZCBpbml0aWFsaXplTW9ja0NETSgpOwogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUFdIE1vY2tDRE1GYWN0b3J5IHJlZ2lzdGVyTW9ja0NETSgpOwpAQCAtNjgyLDEyICs2ODIs
MTIgQEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICBET01TdHJpbmcgZ2V0SW1hZ2VTb3VyY2VVUkwo
RWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNl
cHRpb25dIERPTVN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOwotICAgIFtDb25k
aXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRDYXB0aW9uc1N0
eWxlU2hlZXRPdmVycmlkZShET01TdHJpbmcgb3ZlcnJpZGUpOwotICAgIFtDb25kaXRpb25hbD1W
SURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcmltYXJ5QXVkaW9UcmFja0xh
bmd1YWdlT3ZlcnJpZGUoRE9NU3RyaW5nIGxhbmd1YWdlKTsKLSAgICBbQ29uZGl0aW9uYWw9VklE
RU8sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKERP
TVN0cmluZyBtb2RlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIERPTVN0cmluZyBjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSgpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVk
IHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKERPTVN0cmluZyBvdmVycmlkZSk7CisgICAg
W0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFn
ZU92ZXJyaWRlKERPTVN0cmluZyBsYW5ndWFnZSk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1
bmRlZmluZWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKERPTVN0cmluZyBtb2RlKTsKICAgICBbQ29u
ZGl0aW9uYWw9VklERU9dIFRleHRUcmFja0N1ZUdlbmVyaWMgY3JlYXRlR2VuZXJpY0N1ZShkb3Vi
bGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgRE9NU3RyaW5nIHRleHQpOwotICAgIFtDb25k
aXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyB0ZXh0VHJhY2tCQ1A0
N0xhbmd1YWdlKFRleHRUcmFjayB0cmFjayk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01T
dHJpbmcgdGV4dFRyYWNrQkNQNDdMYW5ndWFnZShUZXh0VHJhY2sgdHJhY2spOwogCiAgICAgW0Nv
bmRpdGlvbmFsPVZJREVPXSBUaW1lUmFuZ2VzIGNyZWF0ZVRpbWVSYW5nZXMoRmxvYXQzMkFycmF5
IHN0YXJ0VGltZXMsIEZsb2F0MzJBcnJheQogICAgICBlbmRUaW1lcyk7CkBAIC02OTUsMTIgKzY5
NSwxMiBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2li
bGUoSFRNTFNlbGVjdEVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IGJvb2xlYW4gaXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQg
ZWxlbWVudCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdW5hdmFpbGFibGVQ
bHVnaW5SZXBsYWNlbWVudFRleHQoRWxlbWVudCBlbGVtZW50KTsKKyAgICBib29sZWFuIGlzUGx1
Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50IGVsZW1lbnQpOworICAg
IERPTVN0cmluZyB1bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dChFbGVtZW50IGVsZW1l
bnQpOwogICAgIGJvb2xlYW4gaXNQbHVnaW5TbmFwc2hvdHRlZChFbGVtZW50IGVsZW1lbnQpOwog
ICAgIGJvb2xlYW4gcGx1Z2luSXNCZWxvd1NpemVUaHJlc2hvbGQoRWxlbWVudCBlbGVtZW50KTsK
IAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NUmVjdCBzZWxlY3Rpb25Cb3VuZHMoKTsKKyAg
ICBET01SZWN0IHNlbGVjdGlvbkJvdW5kcygpOwogICAgIHVuZGVmaW5lZCBzZXRTZWxlY3Rpb25X
aXRob3V0VmFsaWRhdGlvbihOb2RlIGJhc2VOb2RlLCB1bnNpZ25lZCBsb25nIGJhc2VPZmZzZXQs
IE5vZGU/IGV4dGVudE5vZGUsIHVuc2lnbmVkIGxvbmcgZXh0ZW50T2Zmc2V0KTsKIAogICAgIFtD
b25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHVuZGVmaW5lZCBpbml0aWFsaXplTW9ja01lZGlhU291
cmNlKCk7CkBAIC03MTAsMTkgKzcxMCwxOSBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU09VUkNFXSBkb3VibGUgbWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGlt
ZUZvclRyYWNrSUQoU291cmNlQnVmZmVyIGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQpOwogICAg
IFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHVuZGVmaW5lZCBzZXRNYXhpbXVtUXVldWVEZXB0
aEZvclRyYWNrSUQoU291cmNlQnVmZmVyIGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQsIHVuc2ln
bmVkIGxvbmcgbWF4UXVldWVEZXB0aCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oRE9N
U3RyaW5nIGludGVycnVwdGlvblR5cGUpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZp
bmVkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBpbnRlcnJ1cHRpb25U
eXBlKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBlbmRNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb24oRE9NU3RyaW5nIGZsYWdzKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVu
ZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgIFtDb25kaXRpb25h
bD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAgW0Nv
bmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
KG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwogICAgIFtDb25k
aXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKG9w
dGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwotICAgIFtDb25kaXRp
b25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRNZWRpYVNlc3Npb25S
ZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7
Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIG1l
ZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlKTsKKyAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3Ry
aW5nIG1lZGlhVHlwZSwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CisgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRp
YVR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHNldE1lZGlhRWxlbWVu
dFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyByZXN0cmlj
dGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHVuZGVmaW5lZCBzZXRBdWRpb0Nv
bnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNv
bnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9N
U3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDAp
OworICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHBvc3RSZW1vdGVDb250cm9sQ29t
bWFuZChET01TdHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3Vt
ZW50ID0gMCk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdW5k
ZWZpbmVkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOwotICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQsIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKKyAgICBb
Q29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB1bmRlZmluZWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3Ry
aW5nIGRldmljZVN0YXRlKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUXSB1bmRlZmluZWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAo
KTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0Q3VzdG9tUHJp
dmF0ZVJlY29yZGVyQ3JlYXRvcigpOwogCkBAIC03NDEsMTQgKzc0MSwxNCBAQCBlbnVtIFRyZWVU
eXBlIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzaW11bGF0ZVN5c3RlbVdh
a2UoKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIGJvb2xlYW4gZWxlbWVudElzQmxvY2tpbmdE
aXNwbGF5U2xlZXAoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gTW9ja1BhZ2VPdmVybGF5IGluc3RhbGxNb2NrUGFnZU92ZXJsYXkoUGFnZU92ZXJs
YXlUeXBlIHR5cGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHBhZ2VPdmVy
bGF5TGF5ZXJUcmVlQXNUZXh0KG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7Cisg
ICAgTW9ja1BhZ2VPdmVybGF5IGluc3RhbGxNb2NrUGFnZU92ZXJsYXkoUGFnZU92ZXJsYXlUeXBl
IHR5cGUpOworICAgIERPTVN0cmluZyBwYWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dChvcHRpb25h
bCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOwogCiAgICAgdW5kZWZpbmVkIHNldFBhZ2VNdXRl
ZChET01TdHJpbmcgbXV0ZWRTdGF0ZSk7CiAgICAgRE9NU3RyaW5nIHBhZ2VNZWRpYVN0YXRlKCk7
CiAKICAgICB1bmRlZmluZWQgc2V0UGFnZURlZmVyc0xvYWRpbmcoYm9vbGVhbiBkZWZlcnNMb2Fk
aW5nKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gcGFnZURlZmVyc0xvYWRpbmco
KTsKKyAgICBib29sZWFuIHBhZ2VEZWZlcnNMb2FkaW5nKCk7CiAKICAgICBGaWxlPyBjcmVhdGVG
aWxlKERPTVN0cmluZyB1cmwpOwogICAgIHVuZGVmaW5lZCBxdWV1ZU1pY3JvVGFzayhsb25nIHRl
c3ROdW1iZXIpOwpAQCAtNzU2LDExICs3NTYsMTEgQEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICBb
Q29uZGl0aW9uYWw9Q09OVEVOVF9GSUxURVJJTkddIHJlYWRvbmx5IGF0dHJpYnV0ZSBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNj
cm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19T
Q1JPTExfU05BUCwgTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaXNTY3JvbGxTbmFwSW5Qcm9n
cmVzcyhFbGVtZW50IGVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBd
IERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOworICAgIFtDb25k
aXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIGJvb2xlYW4gaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhF
bGVtZW50IGVsZW1lbnQpOwogICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIHVuZGVm
aW5lZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbGVh
biBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHBhdGhTdHJp
bmdXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKHNlcXVlbmNlPGRvdWJsZT4gcmVjdENvbXBvbmVudHMs
IGRvdWJsZSByYWRpdXMpOworICAgIERPTVN0cmluZyBwYXRoU3RyaW5nV2l0aFNocmlua1dyYXBw
ZWRSZWN0cyhzZXF1ZW5jZTxkb3VibGU+IHJlY3RDb21wb25lbnRzLCBkb3VibGUgcmFkaXVzKTsK
IAogICAgIFtDb25kaXRpb25hbD1WSURFT10gRE9NU3RyaW5nIGdldEN1cnJlbnRNZWRpYUNvbnRy
b2xzU3RhdHVzRm9yRWxlbWVudChIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwogCkBAIC03NzQs
NyArNzc0LDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgRE9NU3RyaW5nIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NGb3JVUkwoRE9NVVJMIHVybCk7CiAgICAgdW5kZWZpbmVkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2xlYW4gZW5hYmxlKTsKIAotICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHNldENhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2xlYW4gYWxs
b3cpOworICAgIHVuZGVmaW5lZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sZWFu
IGFsbG93KTsKIAogICAgIERPTVN0cmluZyBjb21wb3NlZFRyZWVBc1RleHQoTm9kZSBwYXJlbnQp
OwogCkBAIC04ODcsOSArODg3LDkgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgYm9vbGVhbiB1c2lu
Z0dTdHJlYW1lcigpOwogCiAgICAgdW5kZWZpbmVkIHBvc3RUYXNrKFZvaWRDYWxsYmFjayBjYWxs
YmFjayk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgcXVldWVUYXNrKERPTVN0cmluZyBzb3VyY2UsIFZvaWRDYWxsYmFj
ayBjYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHVuZGVm
aW5lZCBxdWV1ZVRhc2soRE9NU3RyaW5nIHNvdXJjZSwgVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsK
ICAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBxdWV1ZVRhc2tUb1F1ZXVlTWljcm90
YXNrKERPTVN0cmluZyBzb3VyY2UsIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSBib29sZWFuIGhhc1NhbWVFdmVudExvb3BBcyhXaW5kb3dQcm94eSB3aW5k
b3dQcm94eSk7CisgICAgYm9vbGVhbiBoYXNTYW1lRXZlbnRMb29wQXMoV2luZG93UHJveHkgd2lu
ZG93UHJveHkpOwogCiAgICAgRE9NU3RyaW5nIHdpbmRvd0xvY2F0aW9uSG9zdChET01XaW5kb3cg
d2luZG93KTsKIApAQCAtODk3LDEzICs4OTcsMTMgQEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICB1
bmRlZmluZWQgc2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnkodW5zaWduZWQgbG9uZyBzaXplKTsKIAot
ICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJp
YnV0ZSBOb3dQbGF5aW5nU3RhdGUgbm93UGxheWluZ1N0YXRlOworICAgIFtDb25kaXRpb25hbD1W
SURFT10gcmVhZG9ubHkgYXR0cmlidXRlIE5vd1BsYXlpbmdTdGF0ZSBub3dQbGF5aW5nU3RhdGU7
CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxNZWRpYUVsZW1lbnQgYmVzdE1lZGlhRWxl
bWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihQbGF5YmFja0NvbnRyb2xzUHVy
cG9zZSBwdXJwb3NlKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIE1lZGlhU2Vzc2lvblN0YXRl
IG1lZGlhU2Vzc2lvblN0YXRlKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVVzYWdlU3RhdGUgbWVkaWFV
c2FnZVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJ
REVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBlbGVtZW50U2hvdWxkRGlzcGxheVBvc3Rl
ckltYWdlKEhUTUxWaWRlb0VsZW1lbnQgZWxlbWVudCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVP
XSBNZWRpYVVzYWdlU3RhdGUgbWVkaWFVc2FnZVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVu
dCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBib29sZWFuIGVsZW1lbnRTaG91bGREaXNwbGF5
UG9zdGVySW1hZ2UoSFRNTFZpZGVvRWxlbWVudCBlbGVtZW50KTsKIAogICAgIERPTVN0cmluZyBv
bmdvaW5nTG9hZHNEZXNjcmlwdGlvbnMoKTsKICAgICB1bmRlZmluZWQgc2V0Q2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sZWFuIHZhbHVlKTsKQEAgLTk3OCwxNyArOTc4
LDE3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIAogICAgIFtDb25kaXRpb25hbD1BUFBfSElHSExJ
R0hUU10gdW5zaWduZWQgbG9uZyBudW1iZXJPZkFwcEhpZ2hsaWdodHMoKTsKIAotICAgIFtDb25k
aXRpb25hbD1XRUJYUiwgTWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJY
UlRlc3QgeHJUZXN0OworICAgIFtDb25kaXRpb25hbD1XRUJYUl0gcmVhZG9ubHkgYXR0cmlidXRl
IFdlYlhSVGVzdCB4clRlc3Q7CiAKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBXSB1
bnNpZ25lZCBsb25nIG1lZGlhS2V5c0ludGVybmFsSW5zdGFuY2VPYmplY3RSZWZDb3VudChNZWRp
YUtleXMgbWVkaWFLZXlzKTsKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBXSB1bnNp
Z25lZCBsb25nIG1lZGlhS2V5U2Vzc2lvbkludGVybmFsSW5zdGFuY2VTZXNzaW9uT2JqZWN0UmVm
Q291bnQoTWVkaWFLZXlTZXNzaW9uIHNlc3Npb24pOwogCiAgICAgdW5kZWZpbmVkIHNldENvbnRl
bnRTaXplQ2F0ZWdvcnkoQ29udGVudFNpemVDYXRlZ29yeSBjYXRlZ29yeSk7CiAKLSAgICBbQ29u
ZGl0aW9uYWw9QVRUQUNITUVOVF9FTEVNRU5ULCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0YWNobWVu
dFRodW1ibmFpbEluZm8gYXR0YWNobWVudFRodW1ibmFpbEluZm8oSFRNTEF0dGFjaG1lbnRFbGVt
ZW50IGVsZW1lbnQpOworICAgIFtDb25kaXRpb25hbD1BVFRBQ0hNRU5UX0VMRU1FTlRdIEF0dGFj
aG1lbnRUaHVtYm5haWxJbmZvIGF0dGFjaG1lbnRUaHVtYm5haWxJbmZvKEhUTUxBdHRhY2htZW50
RWxlbWVudCBlbGVtZW50KTsKIAotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gZG91YmxlIGN1cnJlbnRNZWRpYVNlc3Npb25Qb3NpdGlvbihNZWRpYVNl
c3Npb24gc2Vzc2lvbik7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04sIE1heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb24g
c2Vzc2lvbiwgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25EZXRhaWxzKTsKKyAgICBb
Q29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gZG91YmxlIGN1cnJlbnRNZWRpYVNlc3Npb25Qb3Np
dGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbik7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJ
T05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiBzZXNzaW9u
LCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzIGFjdGlvbkRldGFpbHMpOwogICAgIFtDb25kaXRp
b25hbD1NRURJQV9TRVNTSU9OXSBQcm9taXNlPEltYWdlRGF0YT4gbG9hZEFydHdvcmtJbWFnZShE
T01TdHJpbmcgdXJsKTsKICAgICAKICAgICBET01TdHJpbmcgdHJlZU9yZGVyKE5vZGUgYSwgTm9k
ZSBiLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAkocmV2aXNpb24g
Mjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtlckludGVybmFscyB7CiAgICAgdW5k
ZWZpbmVkIHNldE9ubGluZShib29sZWFuIGlzT25saW5lKTsKLSAgICBQcm9taXNlPFJlc3BvbnNl
PiB3YWl0Rm9yRmV0Y2hFdmVudFRvRmluaXNoKEZldGNoRXZlbnQgZXZlbnQpOworICAgIFByb21p
c2U8RmV0Y2hSZXNwb25zZT4gd2FpdEZvckZldGNoRXZlbnRUb0ZpbmlzaChGZXRjaEV2ZW50IGV2
ZW50KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRmV0Y2hFdmVudCBj
cmVhdGVCZWluZ0Rpc3BhdGNoZWRGZXRjaEV2ZW50KCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIEZldGNoUmVzcG9uc2UgY3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVz
cG9uc2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw4ICszOSw4IEBACiBdIGludGVyZmFjZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZSA6IFdvcmtlckdsb2JhbFNjb3BlIHsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKIAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVl
bmNlPG9iamVjdD4gdHJhbnNmZXIpOwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFs
IFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJh
bnNmZXIpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2Fn
ZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogCiAg
ICAgdW5kZWZpbmVkIGNsb3NlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwJ
KHJldmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogCiAgICAgdW5kZWZpbmVkIHRlcm1pbmF0
ZSgpOwogCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zl
cik7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9zdE1lc3NhZ2VPcHRpb25z
IG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVz
c2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zlcik7CisgICAgW0NhbGxX
aXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRp
b25hbCBQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbm1lc3NhZ2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV29ya2VyR2xvYmFsU2NvcGUgc2VsZjsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV29ya2VyTG9jYXRpb24gbG9jYXRpb247CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7Ci0gICAgW01heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgaW1wb3J0U2NyaXB0cyhVU1ZTdHJpbmcuLi4gdXJscyk7CisgICAg
dW5kZWZpbmVkIGltcG9ydFNjcmlwdHMoVVNWU3RyaW5nLi4uIHVybHMpOwogCiAgICAgLy8gRklY
TUU6IFRoZSBzcGVjICdvbmVycm9yJyBzaG91bGQgYmUgb2YgdHlwZSAnT25FcnJvckV2ZW50SGFu
ZGxlcicuCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9yOwpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRh
YmxlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1ICszMiw1IEBACiBdIGludGVyZmFj
ZSBFeHRlbmRhYmxlRXZlbnQgOiBFdmVudCB7CiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIHR5
cGUsIG9wdGlvbmFsIEV4dGVuZGFibGVFdmVudEluaXQgZXZlbnRJbml0RGljdCk7CiAKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCB3YWl0VW50aWwoUHJvbWlzZTxhbnk+IGYpOwor
ICAgIHVuZGVmaW5lZCB3YWl0VW50aWwoUHJvbWlzZTxhbnk+IGYpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwJKHJldmlzaW9uIDI3
NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgcmVzZXJ2ZWRDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHRhcmdldENsaWVudElkOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cmVzcG9uZFdpdGgoUHJvbWlzZTxGZXRjaFJlc3BvbnNlPiByKTsKKyAgICB1bmRlZmluZWQgcmVz
cG9uZFdpdGgoUHJvbWlzZTxGZXRjaFJlc3BvbnNlPiByKTsKIH07CiAKIGRpY3Rpb25hcnkgRmV0
Y2hFdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5pZGwJKHJldmlzaW9uIDI3NDc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtl
ciA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHNjcmlw
dFVSTDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlclN0YXRlIHN0YXRlOwot
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOwotICAg
IFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9z
dE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFBvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25z
KTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55
IG1lc3NhZ2UsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIpOworICAgIFtDYWxsV2l0aD1HbG9i
YWxPYmplY3RdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9z
dE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogCiAgICAgLy8gZXZlbnQKICAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9uc3RhdGVjaGFuZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCShyZXZpc2lvbiAy
NzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgU2VydmljZVdvcmtlckNsaWVudFR5cGUgdHlwZTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGlkOwogCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2Zlcik7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgUG9z
dE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVu
ZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zl
cik7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFu
eSBtZXNzYWdlLCBvcHRpb25hbCBQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CiB9OwogCiBl
bnVtIEZyYW1lVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5pZGwJKHJldmlzaW9uIDI3NDc1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzIHsKICAgICAvLyBUaGUgb2JqZWN0cyByZXR1cm5lZCB3aWxsIGJlIG5ldyBpbnN0
YW5jZXMgZXZlcnkgdGltZQogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIFByb21pc2U8YW55PiBnZXQoRE9NU3RyaW5nIGlkKTsKLSAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPHNlcXVlbmNlPENsaWVu
dD4+IG1hdGNoQWxsKG9wdGlvbmFsIENsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKLSAgICBb
TmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPFdpbmRv
d0NsaWVudD8+IG9wZW5XaW5kb3coVVNWU3RyaW5nIHVybCk7CisgICAgW05ld09iamVjdCwgQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxzZXF1ZW5jZTxTZXJ2aWNlV29y
a2VyQ2xpZW50Pj4gbWF0Y2hBbGwob3B0aW9uYWwgQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMp
OworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21p
c2U8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD8+IG9wZW5XaW5kb3coVVNWU3RyaW5nIHVybCk7
CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlz
ZTx1bmRlZmluZWQ+IGNsYWltKCk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRs
CShyZXZpc2lvbiAyNzQ3NTApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDYg
QEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0
ZTsKICAgICBbSW1wbGVtZW50ZWRBcz1pc0ZvY3VzZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIGZvY3VzZWQ7CiAKLSAgICBbTmV3T2JqZWN0XSBQcm9taXNlPFdpbmRvd0NsaWVudD4gZm9j
dXMoKTsKLSAgICBbTmV3T2JqZWN0XSBQcm9taXNlPFdpbmRvd0NsaWVudD4gbmF2aWdhdGUoVVNW
U3RyaW5nIHVybCk7CisgICAgW05ld09iamVjdF0gUHJvbWlzZTxTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50PiBmb2N1cygpOworICAgIFtOZXdPYmplY3RdIFByb21pc2U8U2VydmljZVdvcmtlcldp
bmRvd0NsaWVudD4gbmF2aWdhdGUoVVNWU3RyaW5nIHVybCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAkocmV2
aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw2IEBACiAgICAgSXNJbW11
dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBHbG9iYWw9KFdvcmts
ZXQsUGFpbnRXb3JrbGV0KSwKIF0gaW50ZXJmYWNlIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDog
V29ya2xldEdsb2JhbFNjb3BlIHsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSB1bmRlZmluZWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgb2JqZWN0
IHBhaW50Q29uc3RydWN0b3IpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5l
ZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1lLCBvYmplY3QgcGFpbnRDb25zdHJ1Y3Rvcik7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4ZWxS
YXRpbzsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbAkocmV2aXNpb24gMjc0NzUw
KQorKysgU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDUgKzIzLDUgQEAKIF0gaW50ZXJmYWNlIERPTVBhcnNlciB7CiAgICAgW0NhbGxXaXRoPURv
Y3VtZW50XSBjb25zdHJ1Y3RvcigpOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmpl
Y3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhET01TdHJpbmcgc3RyaW5nLCBET01TdHJpbmcg
Y29udGVudFR5cGUpOworICAgIFtOZXdPYmplY3RdIERvY3VtZW50IHBhcnNlRnJvbVN0cmluZyhE
T01TdHJpbmcgc3RyaW5nLCBET01TdHJpbmcgY29udGVudFR5cGUpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTMg
KzYxLDEzIEBAIGVudW0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwogCiAgICAgLy8gcmVxdWVzdAot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG9wZW4oQnl0ZVN0cmluZyBtZXRob2Qs
IFVTVlN0cmluZyB1cmwpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIG9wZW4o
Qnl0ZVN0cmluZyBtZXRob2QsIFVTVlN0cmluZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlvbmFs
IFVTVlN0cmluZz8gdXNlciA9IG51bGwsIG9wdGlvbmFsIFVTVlN0cmluZz8gcGFzc3dvcmQgPSBu
dWxsKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRSZXF1ZXN0SGVhZGVy
KEJ5dGVTdHJpbmcgaGVhZGVyLCBCeXRlU3RyaW5nIHZhbHVlKTsKKyAgICB1bmRlZmluZWQgb3Bl
bihCeXRlU3RyaW5nIG1ldGhvZCwgVVNWU3RyaW5nIHVybCk7CisgICAgdW5kZWZpbmVkIG9wZW4o
Qnl0ZVN0cmluZyBtZXRob2QsIFVTVlN0cmluZyB1cmwsIGJvb2xlYW4gYXN5bmMsIG9wdGlvbmFs
IFVTVlN0cmluZz8gdXNlciA9IG51bGwsIG9wdGlvbmFsIFVTVlN0cmluZz8gcGFzc3dvcmQgPSBu
dWxsKTsKKyAgICB1bmRlZmluZWQgc2V0UmVxdWVzdEhlYWRlcihCeXRlU3RyaW5nIGhlYWRlciwg
Qnl0ZVN0cmluZyB2YWx1ZSk7CiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdGltZW91dDsK
ICAgICBhdHRyaWJ1dGUgYm9vbGVhbiB3aXRoQ3JlZGVudGlhbHM7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIHVwbG9hZDsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuZGVmaW5lZCBzZW5kKG9wdGlvbmFsIChEb2N1bWVudCBvciBCb2R5SW5pdCk/IGJvZHkg
PSBudWxsKTsKKyAgICB1bmRlZmluZWQgc2VuZChvcHRpb25hbCAoRG9jdW1lbnQgb3IgQm9keUlu
aXQpPyBib2R5ID0gbnVsbCk7CiAgICAgdW5kZWZpbmVkIGFib3J0KCk7CiAKICAgICAvLyByZXNw
b25zZQpAQCAtNzYsNyArNzYsNyBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgQnl0ZVN0cmluZyBzdGF0dXNUZXh0OwogICAgIEJ5dGVT
dHJpbmc/IGdldFJlc3BvbnNlSGVhZGVyKEJ5dGVTdHJpbmcgbmFtZSk7CiAgICAgQnl0ZVN0cmlu
ZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBvdmVycmlkZU1pbWVUeXBlKERPTVN0cmluZyBtaW1lKTsKKyAgICB1bmRlZmluZWQgb3Zl
cnJpZGVNaW1lVHlwZShET01TdHJpbmcgbWltZSk7CiAgICAgYXR0cmlidXRlIFhNTEh0dHBSZXF1
ZXN0UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZTsKICAgICBbQ2FjaGVkQXR0cmlidXRlLCBDdXN0
b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcmVzcG9uc2U7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFVTVlN0cmluZyByZXNwb25zZVRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhFdmFsdWF0b3JCYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhFdmFsdWF0b3JCYXNlLmlkbAkocmV2aXNpb24gMjc0NzUwKQorKysgU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yQmFzZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkg
KzI1LDkgQEAKIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyN4cGF0aGV2YWx1YXRv
cmJhc2UKIGludGVyZmFjZSBtaXhpbiBYUGF0aEV2YWx1YXRvckJhc2UgewotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihE
T01TdHJpbmcgZXhwcmVzc2lvbiwgb3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7
CisgICAgW05ld09iamVjdF0gWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24oRE9NU3Ry
aW5nIGV4cHJlc3Npb24sIG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOwogICAg
IFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29sdmVyKE5vZGUgbm9kZVJlc29sdmVyKTsKICAg
ICAvLyBYUGF0aFJlc3VsdC5BTllfVFlQRSA9IDAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFhQ
YXRoUmVzdWx0IGV2YWx1YXRlKERPTVN0cmluZyBleHByZXNzaW9uLCBOb2RlIGNvbnRleHROb2Rl
LCBvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyLCBvcHRpb25hbCB1bnNpZ25lZCBz
aG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0KTsKKyAgICBYUGF0
aFJlc3VsdCBldmFsdWF0ZShET01TdHJpbmcgZXhwcmVzc2lvbiwgTm9kZSBjb250ZXh0Tm9kZSwg
b3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlciwgb3B0aW9uYWwgdW5zaWduZWQgc2hv
cnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3VsdCk7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAkocmV2aXNpb24gMjc0NzUwKQor
KysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDUgKzIzLDUgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4
cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBYUGF0aEV4cHJlc3Npb24gewotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUoTm9kZSBjb250ZXh0Tm9kZSwgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3Vs
dCA9IG51bGwpOworICAgIFhQYXRoUmVzdWx0IGV2YWx1YXRlKE5vZGUgY29udGV4dE5vZGUsIG9w
dGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5S
ZXN1bHQgPSBudWxsKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwJKHJl
dmlzaW9uIDI3NDc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBpbnZhbGlkSXRlcmF0b3JTdGF0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBzbmFwc2hvdExlbmd0aDsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSBp
dGVyYXRlTmV4dCgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZSBzbmFwc2hvdEl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgTm9kZSBpdGVyYXRlTmV4dCgpOworICAgIE5vZGUg
c25hcHNob3RJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>