<?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>180264</bug_id>
          
          <creation_ts>2017-12-01 11:07:21 -0800</creation_ts>
          <short_desc>Update std::expected to match libc++ coding style</short_desc>
          <delta_ts>2017-12-04 15:36:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376923</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 11:07:21 -0800</bug_when>
    <thetext>As of https://wg21.link/p0323r4 std::expected is on its way to the Library Fundamentals v3 TS (LEWG and EWG voted for this, but LWG hasn&apos;t done wording review yet, hence &quot;on its way&quot;). The API is therefore pretty close to what will be in the TS, and I&apos;ve gotten requests for an easily usable implementation of std::expected. I talked to our clang team and they&apos;ll help me migrate our implementation to libc++, but our implementation has to look more like libc++ than it does now. Once in libc++ I&apos;ll maintain changes on both sides to make sure neither is out-of-date for too long.

I can do this migration in small steps to reduce code churn in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376973</commentid>
    <comment_count>1</comment_count>
      <attachid>328133</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 12:35:32 -0800</bug_when>
    <thetext>Created attachment 328133
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376976</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 12:37:19 -0800</bug_when>
    <thetext>Attachment 328133 did not pass style-queue:


ERROR: Source/WTF/wtf/Expected.h:211:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:216:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:222:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:222:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:223:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WTF/wtf/Expected.h:226:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:227:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:408:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:245:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:249:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:250:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:251:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:252:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:253:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:261:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:277:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:279:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:282:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:283:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:284:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:285:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:291:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:293:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:308:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:311:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:312:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:313:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:314:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:315:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:323:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:345:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:347:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:360:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:362:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:365:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:366:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:367:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:368:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:369:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:375:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:377:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:395:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:449:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:450:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:452:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:462:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:464:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:466:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:469:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:471:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:473:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:483:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:484:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:489:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:490:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:493:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:494:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:527:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:529:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:538:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:542:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:553:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:534:  in_place_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:539:  in_place_type_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:545:  in_place_index_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Expected.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 67 in 51 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>1376980</commentid>
    <comment_count>3</comment_count>
      <attachid>328135</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 12:39:46 -0800</bug_when>
    <thetext>Created attachment 328135
patch

I missed a file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376983</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 12:42:53 -0800</bug_when>
    <thetext>Attachment 328135 did not pass style-queue:


ERROR: Source/WTF/wtf/Expected.h:211:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:216:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:222:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:222:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:223:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WTF/wtf/Expected.h:226:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:227:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:408:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:245:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:249:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:250:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:251:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:252:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:253:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:261:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:277:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:279:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:282:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:283:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:284:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:285:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:291:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:293:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:308:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:311:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:312:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:313:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:314:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:315:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:323:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:345:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:347:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:360:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:362:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:365:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:366:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:367:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:368:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:369:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:375:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:377:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:395:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:449:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:450:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:452:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:462:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:464:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:466:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:469:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:471:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:473:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:483:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:484:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:489:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:490:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:493:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:494:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:527:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:529:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:538:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:542:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:553:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:534:  in_place_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:539:  in_place_type_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:545:  in_place_index_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Expected.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 67 in 52 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>1377014</commentid>
    <comment_count>5</comment_count>
      <attachid>328144</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 13:25:48 -0800</bug_when>
    <thetext>Created attachment 328144
patch

Missing files from WebKit, I hadn&apos;t built it yet and didn&apos;t realize Expected was used there as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377016</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 13:28:45 -0800</bug_when>
    <thetext>Attachment 328144 did not pass style-queue:


ERROR: Source/WTF/wtf/Expected.h:211:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:216:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:222:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:222:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:223:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WTF/wtf/Expected.h:226:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:227:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:408:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:245:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:249:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:250:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:251:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:252:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:253:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:261:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:277:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:279:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:282:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:283:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:284:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:285:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:291:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:293:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:308:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:311:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:312:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:313:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:314:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:315:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:323:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:345:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:347:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:360:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:362:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:365:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:366:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:367:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:368:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:369:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:375:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:377:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:395:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:449:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:450:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:452:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:462:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:464:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:466:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:469:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:471:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:473:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:483:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:484:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:489:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:490:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:493:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:494:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:527:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:529:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:538:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:542:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:553:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:534:  in_place_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:539:  in_place_type_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:545:  in_place_index_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Expected.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 67 in 57 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>1377116</commentid>
    <comment_count>7</comment_count>
      <attachid>328173</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 15:52:07 -0800</bug_when>
    <thetext>Created attachment 328173
patch

Fix release build, the code that handled exceptions was incorrect because inline asm (which CRASH() uses) isn&apos;t valid in an expression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377118</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 15:53:49 -0800</bug_when>
    <thetext>Attachment 328173 did not pass style-queue:


ERROR: Source/WTF/wtf/Expected.h:205:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:210:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:216:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:216:  bad_expected_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:217:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WTF/wtf/Expected.h:220:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:221:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:409:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Expected.h:246:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:250:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:251:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:252:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:253:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:254:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:262:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:278:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:280:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:283:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:284:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:285:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:286:  constexpr_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:292:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:294:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:309:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:312:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:313:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:314:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:315:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:316:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:324:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:346:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:348:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:361:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:363:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:366:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:367:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:368:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:369:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:370:  constexpr_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:376:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:378:  unexpected_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Expected.h:396:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:450:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:451:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:453:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:463:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:465:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:467:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:470:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:472:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:474:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:484:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:485:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:490:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:491:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:494:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:495:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:497:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:528:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:530:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:539:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:543:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Expected.h:554:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:534:  in_place_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:539:  in_place_type_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/StdLibExtras.h:545:  in_place_index_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Expected.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 67 in 57 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>1377887</commentid>
    <comment_count>9</comment_count>
      <attachid>328173</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-04 13:55:32 -0800</bug_when>
    <thetext>Comment on attachment 328173
patch

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

&gt; Source/WTF/ChangeLog:18
&gt; +        - Fork std::unexpected into its own header.

Will Unexpected.h stay a different header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377890</commentid>
    <comment_count>10</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-04 13:57:36 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 328173 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328173&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:18
&gt; &gt; +        - Fork std::unexpected into its own header.
&gt; 
&gt; Will Unexpected.h stay a different header?

I believe that&apos;s the intent of the committee.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377942</commentid>
    <comment_count>11</comment_count>
      <attachid>328394</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-04 15:02:59 -0800</bug_when>
    <thetext>Created attachment 328394
patch

Rebase to resolve merge conflicts since I uploaded. I&apos;m rebuilding locally right now to make sure no new code needs changing, the bots will tell me if I missed something  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377954</commentid>
    <comment_count>12</comment_count>
      <attachid>328394</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-04 15:35:02 -0800</bug_when>
    <thetext>Comment on attachment 328394
patch

Clearing flags on attachment: 328394

Committed r225499: &lt;https://trac.webkit.org/changeset/225499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377955</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-04 15:35:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377957</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-04 15:36:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/35841457&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328133</attachid>
            <date>2017-12-01 12:35:32 -0800</date>
            <delta_ts>2017-12-01 12:39:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Update-std-expected-to-match-libc-coding-style.patch</filename>
            <type>text/plain</type>
            <size>125096</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiYWE3MTg4OTI0YmE5NGVmZjZhMDU4MmRjMmZhYzI1MzY2NjRkYWI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDEgRGVjIDIwMTcgMTI6MzQ6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUg
c3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCgotLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCAgICAgICAgICAgIHwgICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCAgICB8ICAxMCAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oICAgICAgICAgICAgfCAg
IDggKy0KIC4uLi93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weSAgICAg
IHwgIDE4ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcCB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDkyICsrKwogU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCA2NTEgKysrKysrKysrKysrKy0tLS0tLS0tCiBTb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogU291cmNl
L1dURi93dGYvT3B0aW9uYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKwog
U291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTcg
KysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA5OCArKysrCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCAgICAg
ICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3Jh
Z2UuY3BwICAgfCAgIDYgKy0KIC4uLi9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcCB8ICAgMiArLQogLi4uL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgfCAgIDQgKy0KIC4uLi9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogU291cmNl
L1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmggICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCAgICAgICAgICAgICAgICAgICB8ICAg
NiArLQogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgICAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAg
ICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgICAg
ICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcCAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgICAgICB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgICAgICAgICAgfCAgIDIgKy0K
IC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCAgICAgICAgICB8
ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCAgICAgICAgICAg
ICAgfCAgIDYgKy0KIC4uLi9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAgIHwgICA0ICstCiAuLi4vYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwICAgICAgICAgICAgICAgfCAgIDQgKy0KIFRvb2xzL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsKIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcCAgICAgICAgIHwgMTE3ICsrLS0KIC4uLi9UZXN0cy9X
ZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwICAgICAgICAgICAgIHwgICA2ICstCiA1MiBmaWxl
cyBjaGFuZ2VkLCA5MDMgaW5zZXJ0aW9ucygrKSwgNDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XVEYvd3RmL1VuZXhwZWN0ZWQuaAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDJmOTRmMWUuLmFkODNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5n
IHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODAyNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgdmFyaW91cyB1c2VzIG9mIEV4cGVjdGVkLgorCisgICAgICAgICogd2FzbS9XYXNtTW9k
dWxlLmg6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206
Ok1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZUhlbHBlcik6CisgICAgICAgIChKU0M6Oldhc206Ok1v
ZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNl
cjo6cGFyc2VNZW1vcnlIZWxwZXIpOgorICAgICAgICAqIHdhc20vV2FzbVBhcnNlci5oOgorICAg
ICAgICAqIHdhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5OgorICAgICAg
ICAobG9hZE1hY3JvKToKKyAgICAgICAgKHN0b3JlTWFjcm8pOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1
bGU6OmNyZWF0ZVN0dWIpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5o
OgorCiAyMDE3LTExLTMwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI1MzYyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCmluZGV4IGE2YWUyOWYuLmZhMzZhNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgdXNpbmcg
U2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKIAogY2xhc3MgTW9kdWxlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPE1vZHVsZT4gewogcHVibGljOgotICAgIHVzaW5nIFZhbGlkYXRpb25S
ZXN1bHQgPSBXVEY6OkV4cGVjdGVkPFJlZlB0cjxNb2R1bGU+LCBTdHJpbmc+OworICAgIHVzaW5n
IFZhbGlkYXRpb25SZXN1bHQgPSBFeHBlY3RlZDxSZWZQdHI8TW9kdWxlPiwgU3RyaW5nPjsKICAg
ICB0eXBlZGVmIHZvaWQgQ2FsbGJhY2tUeXBlKFZhbGlkYXRpb25SZXN1bHQmJik7CiAgICAgdXNp
bmcgQXN5bmNWYWxpZGF0aW9uQ2FsbGJhY2sgPSBSZWZQdHI8U2hhcmVkVGFzazxDYWxsYmFja1R5
cGU+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2Vy
LmNwcAppbmRleCAwYzczZDNmLi5hMDk4Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcApAQCAtMTc5LDE0ICsxNzksMTQgQEAgYXV0byBN
b2R1bGVQYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAg
Ym9vbCBpc0ltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9
IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFy
ZXN1bHQpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuZ2V0VW5leHBlY3RlZCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJv
cigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dGVy
bmFsS2luZDo6TWVtb3J5OiB7CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0gdHJ1ZTsKICAg
ICAgICAgICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VNZW1vcnlIZWxwZXIoaXNJbXBv
cnQpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQotICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQuZ2V0VW5leHBlY3RlZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6R2xvYmFsOiB7CkBAIC0y
NjMsNyArMjYzLDcgQEAgYXV0byBNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBp
c0ltcG9ydCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1h
eGltdW07CiAgICAgUGFydGlhbFJlc3VsdCBsaW1pdHMgPSBwYXJzZVJlc2l6YWJsZUxpbWl0cyhp
bml0aWFsLCBtYXhpbXVtKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpbWl0cykpCi0gICAgICAgIHJl
dHVybiBsaW1pdHMuZ2V0VW5leHBlY3RlZCgpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoV1RGTW92ZShsaW1pdHMuZXJyb3IoKSkpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5p
dGlhbCA+IG1heFRhYmxlRW50cmllcywgIlRhYmxlJ3MgaW5pdGlhbCBwYWdlIGNvdW50IG9mICIs
IGluaXRpYWwsICIgaXMgdG9vIGJpZywgbWF4aW11bSAiLCBtYXhUYWJsZUVudHJpZXMpOwogCiAg
ICAgQVNTRVJUKCFtYXhpbXVtIHx8ICptYXhpbXVtID49IGluaXRpYWwpOwpAQCAtMjg1LDcgKzI4
NSw3IEBAIGF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAog
ICAgIGJvb2wgaXNJbXBvcnQgPSBmYWxzZTsKICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBh
cnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC5nZXRVbmV4cGVjdGVkKCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CiAKICAgICByZXR1cm4geyB9Owog
fQpAQCAtMzAzLDcgKzMwMyw3IEBAIGF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeUhlbHBl
cihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IG1heGltdW07CiAgICAgICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VS
ZXNpemFibGVMaW1pdHMoaW5pdGlhbCwgbWF4aW11bSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
bGltaXRzKSkKLSAgICAgICAgICAgIHJldHVybiBsaW1pdHMuZ2V0VW5leHBlY3RlZCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUobGltaXRzLmVycm9yKCkpKTsK
ICAgICAgICAgQVNTRVJUKCFtYXhpbXVtIHx8ICptYXhpbXVtID49IGluaXRpYWwpOwogICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFQYWdlQ291bnQ6OmlzVmFsaWQoaW5pdGlhbCksICJNZW1v
cnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgIiwgaW5pdGlhbCwgIiBpcyBpbnZhbGlkIik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAppbmRleCA5NWY0ZGI1Li4zYzcy
OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC05NywxMCAr
OTcsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gZmFpbChfX1ZBX0FSR1NfXyk7ICAg
ICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMoaGVscGVyKSBkbyB7ICAgXAotICAgICAgICBhdXRvIGhlbHBlclJlc3VsdCA9
IGhlbHBlcjsgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKFVOTElLRUxZKCFoZWxwZXJSZXN1
bHQpKSAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gaGVscGVyUmVzdWx0LmdldFVu
ZXhwZWN0ZWQoKTsgXAorI2RlZmluZSBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGhlbHBlcikg
ZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGF1dG8gaGVscGVyUmVzdWx0ID0g
aGVscGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFoZWxwZXJSZXN1bHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoaGVscGVyUmVzdWx0LmVy
cm9yKCkpKTsgICBcCiAgICAgfSB3aGlsZSAoMCkKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRl
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5s
aW5lc0hlYWRlci5weQppbmRleCAxODA1M2QzLi5iYzU0YTIyIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFkZXIucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxp
bmVzSGVhZGVyLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAKLSMg
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2Myw3IEBAIGRlZiB1bmFyeU1hY3Jv
KG5hbWUpOgogdGVtcGxhdGU8PiBhdXRvIFZhbGlkYXRlOjphZGRPcDxPcFR5cGU6OiIiIiArIHRv
Q3BwKG5hbWUpICsgIiIiPihFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUmVzdWx0CiB7CiAgICAgaWYgKFVOTElLRUxZKHZhbHVlICE9ICIiIiArIGNwcFR5
cGUob3BbInBhcmFtZXRlciJdWzBdKSArICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVk
PFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIg
dmFsdWUgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6
OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiB2YWx1ZSB0
eXBlIG1pc21hdGNoIik7CiAKICAgICByZXN1bHQgPSAiIiIgKyBjcHBUeXBlKG9wWyJyZXR1cm4i
XVswXSkgKyAiIiI7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTc3LDEwICs3NywxMCBAQCBkZWYgYmlu
YXJ5TWFjcm8obmFtZSk6CiB0ZW1wbGF0ZTw+IGF1dG8gVmFsaWRhdGU6OmFkZE9wPE9wVHlwZTo6
IiIiICsgdG9DcHAobmFtZSkgKyAiIiI+KEV4cHJlc3Npb25UeXBlIGxlZnQsIEV4cHJlc3Npb25U
eXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKICAgICBpZiAo
VU5MSUtFTFkobGVmdCAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIp
KQotICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRp
b24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIGxlZnQgdmFsdWUgdHlwZSBtaXNtYXRjaCIpOwor
ICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9u
IGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBsZWZ0IHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKIAog
ICAgIGlmIChVTkxJS0VMWShyaWdodCAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVsx
XSkgKyAiIiIpKQotICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4o
InZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHJpZ2h0IHZhbHVlIHR5cGUgbWlz
bWF0Y2giKTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigi
dmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgcmlnaHQgdmFsdWUgdHlwZSBtaXNt
YXRjaCIpOwogCiAgICAgcmVzdWx0ID0gIiIiICsgY3BwVHlwZShvcFsicmV0dXJuIl1bMF0pICsg
IiIiOwogICAgIHJldHVybiB7IH07CkBAIC05Miw3ICs5Miw3IEBAIGRlZiBsb2FkTWFjcm8obmFt
ZSk6CiAgICAgcmV0dXJuICIiIgogICAgIGNhc2UgTG9hZE9wVHlwZTo6IiIiICsgdG9DcHAobmFt
ZSkgKyAiIiI6IHsKICAgICAgICAgaWYgKFVOTElLRUxZKHBvaW50ZXIgIT0gIiIiICsgY3BwVHlw
ZShvcFsicGFyYW1ldGVyIl1bMF0pICsgIiIiKSkKLSAgICAgICAgICAgIHJldHVybiBVbmV4cGVj
dGVkPFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAi
IiIgcG9pbnRlciB0eXBlIG1pc21hdGNoIik7CisgICAgICAgICAgICByZXR1cm4gVW5leHBlY3Rl
ZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIi
IiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgICAgICByZXN1bHQgPSAiIiIgKyBjcHBU
eXBlKG9wWyJyZXR1cm4iXVswXSkgKyAiIiI7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMDQs
MTAgKzEwNCwxMCBAQCBkZWYgc3RvcmVNYWNybyhuYW1lKToKICAgICByZXR1cm4gIiIiCiAgICAg
Y2FzZSBTdG9yZU9wVHlwZTo6IiIiICsgdG9DcHAobmFtZSkgKyAiIiI6IHsKICAgICAgICAgaWYg
KFVOTElLRUxZKHBvaW50ZXIgIT0gIiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVyIl1bMF0pICsg
IiIiKSkKLSAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6RXJyb3JUeXBlPigi
dmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgcG9pbnRlciB0eXBlIG1pc21hdGNo
Iik7CisgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2
YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2gi
KTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUgIT0gIiIiICsgY3BwVHlwZShvcFsicGFy
YW1ldGVyIl1bMV0pICsgIiIiKSkKLSAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3Vs
dDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgdmFsdWUg
dHlwZSBtaXNtYXRjaCIpOworICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0Ojpl
cnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgdmFsdWUgdHlw
ZSBtaXNtYXRjaCIpOwogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfSIiIgpAQCAtMTM5LDcg
KzEzOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiBhdXRvIFZhbGlkYXRl
Ojpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQsIHVpbnQzMl90KSAtPiBSZXN1bHQKIHsKICAgICBpZiAoVU5MSUtFTFkoIWhh
c01lbW9yeSgpKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+
KCJ2YWxpZGF0aW9uIGZhaWxlZDogbG9hZCBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIpOwor
ICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9u
IGZhaWxlZDogbG9hZCBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIpOwogCiAgICAgc3dpdGNo
IChvcCkgewogIiIiICsgbG9hZENhc2VzICsgIiIiCkBAIC0xNTAsNyArMTUwLDcgQEAgYXV0byBW
YWxpZGF0ZTo6bG9hZChMb2FkT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWwKIGF1dG8gVmFsaWRhdGU6OnN0b3JlKFN0b3JlT3BUeXBlIG9wLCBF
eHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgdWludDMyX3QpIC0+
IFJlc3VsdAogewogICAgIGlmIChVTkxJS0VMWSghaGFzTWVtb3J5KCkpKQotICAgICAgICByZXR1
cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiBzdG9y
ZSBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIpOworICAgICAgICByZXR1cm4gVW5leHBlY3Rl
ZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogc3RvcmUgaW5zdHJ1Y3Rp
b24gd2l0aG91dCBtZW1vcnkiKTsKIAogICAgIHN3aXRjaCAob3ApIHsKICIiIiArIHN0b3JlQ2Fz
ZXMgKyAiIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5jcHAKaW5kZXggNDBjMTAwNi4uMjNmZWYyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlNb2R1bGU6OnNfaW5m
byA9IHsgIldlYkFzc2VtYmx5Lk1vZHVsZSIsICZCYXNlOjpzX2kKIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQm
JiByZXN1bHQpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUo
KSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgSlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLT5X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpLCByZXN1bHQuZXJyb3IoKSkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5kZXggMDFiNWQwNy4uOGZlYzZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
b2R1bGUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNb2R1bGUq
IGNyZWF0ZVN0dWIoVk0mLCBFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBXVEY6OkV4cGVjdGVkPFJl
ZlB0cjxXYXNtOjpNb2R1bGU+LCBTdHJpbmc+JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU1dlYkFzc2VtYmx5TW9kdWxlKiBjcmVhdGVTdHViKFZNJiwgRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgRXhwZWN0ZWQ8UmVmUHRyPFdhc206Ok1vZHVsZT4sIFN0cmluZz4mJik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIAogICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZv
cm1hdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBiYzRlNTVlLi44MjQ3NTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyNjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBvZiBodHRw
czovL3dnMjEubGluay9wMDMyM3I0IHN0ZDo6ZXhwZWN0ZWQgaXMgb24gaXRzIHdheSB0byB0aGUK
KyAgICAgICAgTGlicmFyeSBGdW5kYW1lbnRhbHMgdjMgVFMgKExFV0cgYW5kIEVXRyB2b3RlZCBm
b3IgdGhpcywgYnV0IExXRworICAgICAgICBoYXNuJ3QgZG9uZSB3b3JkaW5nIHJldmlldyB5ZXQs
IGhlbmNlICJvbiBpdHMgd2F5IikuIFRoZSBBUEkgaXMKKyAgICAgICAgdGhlcmVmb3JlIHByZXR0
eSBjbG9zZSB0byB3aGF0IHdpbGwgYmUgaW4gdGhlIFRTLCBhbmQgSSd2ZSBnb3R0ZW4KKyAgICAg
ICAgcmVxdWVzdHMgZm9yIGFuIGVhc2lseSB1c2FibGUgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjpl
eHBlY3RlZC4gSQorICAgICAgICB0YWxrZWQgdG8gb3VyIGNsYW5nIHRlYW0gYW5kIHRoZXknbGwg
aGVscCBtZSBtaWdyYXRlIG91cgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0byBsaWJjKyssIGJ1
dCBvdXIgaW1wbGVtZW50YXRpb24gaGFzIHRvIGxvb2sgbW9yZQorICAgICAgICBsaWtlIGxpYmMr
KyB0aGFuIGl0IGRvZXMgbm93LiBPbmNlIGluIGxpYmMrKyBJJ2xsIG1haW50YWluIGNoYW5nZXMK
KyAgICAgICAgb24gYm90aCBzaWRlcyB0byBtYWtlIHN1cmUgbmVpdGhlciBpcyBvdXQtb2YtZGF0
ZSBmb3IgdG9vIGxvbmcuCisKKyAgICAgICAgLSBGb3JrIHN0ZDo6dW5leHBlY3RlZCBpbnRvIGl0
cyBvd24gaGVhZGVyLgorICAgICAgICAtIEFkZCBtaWxkIHN1cHBvcnQgZm9yIGFuIGV4Y2VwdGlv
bi1iYXNlZCBpbXBsZW1lbnRhdGlvbiwgYnV0CisgICAgICAgICAgZG9uJ3QgZG8gbm9leGNlcHQg
eWV0LgorICAgICAgICAtIFJlbmFtZSBldmVyeXRoaW5nIHRvIGZvbGxvdyBTVEwgc3R5bGUsIGFu
ZCBrZWVwIGEgZ2xvYmFsIHVzaW5nCisgICAgICAgICAgb3IgdmFyaWFibGUgYWxpYXMgd2hlcmUg
cG9zc2libGUgdG8gcmVkdWNlIFdlYktpdCBjb2RlIGNodXJuLgorICAgICAgICAtIE1pbm9yIEFQ
SSB1cGRhdGVzIHRvIHJlbW92ZSB0aGluZ3MgdGhhdCBhcmVuJ3QgaW4gdGhlIHByb3Bvc2FsCisg
ICAgICAgICAgYW55bW9yZS4KKworICAgICAgICAqIHd0Zi9FeHBlY3RlZC5oOgorICAgICAgICAo
c3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6YmFkX2V4cGVjdGVkX2FjY2Vzczx2
b2lkPjo6YmFkX2V4cGVjdGVkX2FjY2Vzcyk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6
ZnVuZGFtZW50YWxzX3YzOjpiYWRfZXhwZWN0ZWRfYWNjZXNzOjpiYWRfZXhwZWN0ZWRfYWNjZXNz
KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmJhZF9leHBl
Y3RlZF9hY2Nlc3M6OmVycm9yKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1l
bnRhbHNfdjM6OmJhZF9leHBlY3RlZF9hY2Nlc3M6OmVycm9yIGNvbnN0KToKKyAgICAgICAgKHN0
ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Ol9fZXhwZWN0ZWRfZGV0YWlsOjpjb25z
dGV4cHJfYmFzZTo6Y29uc3RleHByX2Jhc2UpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6
OmZ1bmRhbWVudGFsc192Mzo6X19leHBlY3RlZF9kZXRhaWw6OmJhc2U6OmJhc2UpOgorICAgICAg
ICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6X19leHBlY3RlZF9kZXRhaWw6
OmJhc2U6On5iYXNlKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNf
djM6OmV4cGVjdGVkOjpleHBlY3RlZCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVu
ZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6b3BlcmF0b3I9KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpzd2FwKToKKyAgICAgICAgKHN0ZDo6
ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvci0+IGNvbnN0
KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVk
OjpvcGVyYXRvci0+KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNf
djM6OmV4cGVjdGVkOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJhdG9yKik6CisgICAgICAgIChzdGQ6
OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6aGFzX3ZhbHVlIGNvbnN0
KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVk
Ojp2YWx1ZSBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxz
X3YzOjpleHBlY3RlZDo6dmFsdWUpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRh
bWVudGFsc192Mzo6ZXhwZWN0ZWQ6OmVycm9yIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjplcnJvcik6CisgICAgICAgIChzdGQ6
OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6dmFsdWVfb3IgY29uc3Qp
OgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6
OnZhbHVlX29yKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192
Mzo6b3BlcmF0b3IhPSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxz
X3YzOjpzd2FwKToKKyAgICAgICAgKFdURjo6VW5leHBlY3RlZDo6VW5leHBlY3RlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OlVuZXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6VW5leHBlY3RlZDo6dmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpv
cGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6Om1ha2VVbmV4cGVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
RXhwZWN0ZWREZXRhaWw6OlRocm93KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWRE
ZXRhaWw6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OkV4cGVjdGVkRGV0YWlsOjpDb25zdGV4cHJCYXNlOjpDb25zdGV4cHJCYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRhaWw6OkJhc2U6OkJhc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6QmFzZTo6fkJhc2UpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6RXhwZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpFeHBlY3RlZDo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0
ZWQ6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3BlcmF0b3ItPiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvci0+KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJhdG9yKiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvciopOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpFeHBlY3RlZDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OkV4cGVjdGVkOjpoYXNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4
cGVjdGVkOjp2YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjp2
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjplcnJvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjplcnJvcik6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OkV4cGVjdGVkOjpnZXRVbmV4cGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6RXhwZWN0ZWQ6OnZhbHVlT3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpF
eHBlY3RlZDo6dmFsdWVPcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnN3YXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjptYWtlRXhwZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpt
YWtlRXhwZWN0ZWRGcm9tRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6
CisgICAgICAgICogd3RmL09wdGlvbmFsLmg6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5o
OgorICAgICAgICAqIHd0Zi9VbmV4cGVjdGVkLmg6IEFkZGVkLgorICAgICAgICAoc3RkOjpleHBl
cmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6dW5leHBlY3RlZDo6dW5leHBlY3RlZCk6CisgICAg
ICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjp1bmV4cGVjdGVkOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjp1
bmV4cGVjdGVkOjp2YWx1ZSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50
YWxzX3YzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1l
bnRhbHNfdjM6Om9wZXJhdG9yIT0pOgorICAgICAgICAobWFrZVVuZXhwZWN0ZWQpOgorCiAyMDE3
LTExLTMwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI1MzYyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRXhwZWN0ZWQuaCBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKaW5kZXggNzI4YjQx
My4uNTgxZTQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCkBAIC0yMywxNzEgKzIzLDMzMCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIFdURjo6RXhwZWN0ZWQgaXMgYmFz
ZWQgb24gc3RkOjpleHBlY3RlZCwgYXMgZGVzY3JpYmVkIGhlcmU6IGh0dHA6Ly93ZzIxLmxpbmsv
cDAzMjNyMQotLy8gVGhlIHNwZWNpZmljYXRpb24gZXhwZWN0cyB0byB0aHJvdy4gVGhpcyBpbXBs
ZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZXhjZXB0aW9ucywgdXNlcyBSRUxFQVNFX0FTU0VS
VCBpbnN0ZWFkLgorLy8gSW1wbGVtZW50YXRpb24gb2YgTGlicmFyeSBGdW5kYW1lbnRhbHMgdjMn
cyBzdGQ6OmV4cGVjdGVkLCBhcyBkZXNjcmliZWQgaGVyZTogaHR0cDovL3dnMjEubGluay9wMDMy
M3I0CiAKICNwcmFnbWEgb25jZQogCisvKgorICAgIGV4cGVjdGVkIHN5bm9wc2lzCisKK25hbWVz
cGFjZSBzdGQgeworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7CitpbmxpbmUgbmFtZXNwYWNlIGZ1
bmRhbWVudGFsc192MyB7CisgICAgLy8gPy4/LjQsIEV4cGVjdGVkIGZvciBvYmplY3QgdHlwZXMK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgICAgY2xhc3MgZXhwZWN0ZWQ7
CisKKyAgICAvLyA/Lj8uNSwgRXhwZWN0ZWQgc3BlY2lhbGl6YXRpb24gZm9yIHZvaWQKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgICAgY2xhc3MgZXhwZWN0ZWQ8dm9pZCxFPjsKKworICAg
IC8vID8uPy42LCB1bmV4cGVjdCB0YWcKKyAgICBzdHJ1Y3QgdW5leHBlY3RfdCB7CisgICAgICAg
dW5leHBlY3RfdCgpID0gZGVmYXVsdDsKKyAgICB9OworICAgIGlubGluZSBjb25zdGV4cHIgdW5l
eHBlY3RfdCB1bmV4cGVjdHt9OworCisgICAgLy8gPy4/LjcsIGNsYXNzIGJhZF9leHBlY3RlZF9h
Y2Nlc3MKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgICBjbGFzcyBiYWRfZXhwZWN0ZWRf
YWNjZXNzOworCisgICAgLy8gPy4/LjgsIFNwZWNpYWxpemF0aW9uIGZvciB2b2lkLgorICAgIHRl
bXBsYXRlIDw+CisgICAgICAgY2xhc3MgYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPjsKKworICAg
IC8vID8uPy45LCBFeHBlY3RlZCByZWxhdGlvbmFsIG9wZXJhdG9ycworICAgIHRlbXBsYXRlIDxj
bGFzcyBULCBjbGFzcyBFPgorICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7CisKKyAgICAvLyA/Lj8u
MTAsIENvbXBhcmlzb24gd2l0aCBUCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+Cisg
ICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiwgY29u
c3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmLCBj
b25zdCBleHBlY3RlZDxULCBFPiYpOworCisgICAgLy8gPy4/LjEwLCBDb21wYXJpc29uIHdpdGgg
dW5leHBlY3RlZDxFPgorICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IHVuZXhw
ZWN0ZWQ8RT4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IGV4cGVjdGVk
PFQsIEU+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiwgY29uc3QgdW5leHBlY3Rl
ZDxFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiwgY29uc3QgZXhwZWN0ZWQ8VCwg
RT4mKTsKKworICAgIC8vID8uPy4xMSwgU3BlY2lhbGl6ZWQgYWxnb3JpdGhtcworICAgIHZvaWQg
c3dhcChleHBlY3RlZDxULCBFPiYsIGV4cGVjdGVkPFQsIEU+Jikgbm9leGNlcHQoc2VlIGJlbG93
KTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgIGNsYXNzIGV4cGVjdGVk
CisgICAgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAg
ICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOworICAgICAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4g
dW5leHBlY3RlZF90eXBlOworICAgIAorICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICAg
ICAgICAgIHN0cnVjdCByZWJpbmQgeworICAgICAgICAgICAgdXNpbmcgdHlwZSA9IGV4cGVjdGVk
PFUsIGVycm9yX3R5cGU+OworICAgICAgICAgIH07CisgICAgCisgICAgICAgIC8vID8uPy40LjEs
IGNvbnN0cnVjdG9ycworICAgICAgICBjb25zdGV4cHIgZXhwZWN0ZWQoKTsKKyAgICAgICAgY29u
c3RleHByIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkJik7CisgICAgICAgIGNvbnN0ZXhwciBleHBl
Y3RlZChleHBlY3RlZCYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVSwgY2xhc3MgRz4KKyAgICAgICAgICAgIEVYUExJQ0lUIGNvbnN0ZXhwciBleHBlY3Rl
ZChjb25zdCBleHBlY3RlZDxVLCBHPiYpOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xh
c3MgRz4KKyAgICAgICAgICAgIEVYUExJQ0lUIGNvbnN0ZXhwciBleHBlY3RlZChleHBlY3RlZDxV
LCBHPiYmKTsKKyAgICAKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUgPSBUPgorICAgICAgICAg
ICAgRVhQTElDSVQgY29uc3RleHByIGV4cGVjdGVkKFUmJiB2KTsKKyAgICAKKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgZXhw
ZWN0ZWQoaW5fcGxhY2VfdCwgQXJncyYmLi4uKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUs
IGNsYXNzLi4uIEFyZ3M+CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQo
aW5fcGxhY2VfdCwgaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIEcgPSBFPgorICAgICAgICAgICAgY29uc3RleHByIGV4cGVjdGVkKHVuZXhw
ZWN0ZWQ8Rz4gY29uc3QmKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEcgPSBFPgorICAgICAg
ICAgICAgY29uc3RleHByIGV4cGVjdGVkKHVuZXhwZWN0ZWQ8Rz4gJiYpOworICAgICAgICB0ZW1w
bGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBleHBl
Y3RlZCh1bmV4cGVjdF90LCBBcmdzJiYuLi4pOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwg
Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZCh1
bmV4cGVjdF90LCBpbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworICAgIAorICAgICAg
ICAvLyA/Lj8uNC4yLCBkZXN0cnVjdG9yCisgICAgICAgIH5leHBlY3RlZCgpOworICAgIAorICAg
ICAgICAvLyA/Lj8uNC4zLCBhc3NpZ25tZW50CisgICAgICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0o
Y29uc3QgZXhwZWN0ZWQmKTsKKyAgICAgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShleHBlY3RlZCYm
KSBub2V4Y2VwdChzZWUgYmVsb3cpOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSA9IFQ+IGV4
cGVjdGVkJiBvcGVyYXRvcj0oVSYmKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEcgPSBFPgor
ICAgICAgICAgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCB1bmV4cGVjdGVkPEc+Jik7Cisg
ICAgICAgIHRlbXBsYXRlIDxjbGFzcyBHID0gRT4KKyAgICAgICAgICAgIGV4cGVjdGVkJiBvcGVy
YXRvcj0odW5leHBlY3RlZDxHPiYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworICAgIAorICAgICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAgIHZvaWQgZW1wbGFjZShBcmdz
JiYuLi4pOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4KKyAgICAg
ICAgICAgIHZvaWQgZW1wbGFjZShpbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworICAg
IAorICAgICAgICAvLyA/Lj8uNC40LCBzd2FwCisgICAgICAgIHZvaWQgc3dhcChleHBlY3RlZCYp
IG5vZXhjZXB0KHNlZSBiZWxvdyk7CisgICAgCisgICAgICAgIC8vID8uPy40LjUsIG9ic2VydmVy
cworICAgICAgICBjb25zdGV4cHIgY29uc3QgVCogb3BlcmF0b3IgLT4oKSBjb25zdDsKKyAgICAg
ICAgY29uc3RleHByIFQqIG9wZXJhdG9yIC0+KCk7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBU
JiBvcGVyYXRvciAqKCkgY29uc3QmOworICAgICAgICBjb25zdGV4cHIgVCYgb3BlcmF0b3IgKigp
ICY7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUJiYgb3BlcmF0b3IgKigpIGNvbnN0ICYmOwor
ICAgICAgICBjb25zdGV4cHIgVCYmIG9wZXJhdG9yICooKSAmJjsKKyAgICAgICAgY29uc3RleHBy
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdDsKKyAgICAgICAgY29uc3Rl
eHByIGJvb2wgaGFzX3ZhbHVlKCkgY29uc3Qgbm9leGNlcHQ7CisgICAgICAgIGNvbnN0ZXhwciBj
b25zdCBUJiB2YWx1ZSgpIGNvbnN0JjsKKyAgICAgICAgY29uc3RleHByIFQmIHZhbHVlKCkgJjsK
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFQmJiB2YWx1ZSgpIGNvbnN0ICYmOworICAgICAgICBj
b25zdGV4cHIgVCYmIHZhbHVlKCkgJiY7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBFJiBlcnJv
cigpIGNvbnN0JjsKKyAgICAgICAgY29uc3RleHByIEUmIGVycm9yKCkgJjsKKyAgICAgICAgY29u
c3RleHByIGNvbnN0IEUmJiBlcnJvcigpIGNvbnN0ICYmOworICAgICAgICBjb25zdGV4cHIgRSYm
IGVycm9yKCkgJiY7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgorICAgICAgICAgICAgY29u
c3RleHByIFQgdmFsdWVfb3IoVSYmKSBjb25zdCY7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBV
PgorICAgICAgICAgICAgVCB2YWx1ZV9vcihVJiYpICYmOworICAgIAorICAgIHByaXZhdGU6Cisg
ICAgICAgIGJvb2wgaGFzX3ZhbDsgLy8gZXhwb3NpdGlvbiBvbmx5CisgICAgICAgIHVuaW9uCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgdmFsOyAvLyBleHBvc2l0aW9uIG9ubHkK
KyAgICAgICAgICAgIHVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVjdDsgLy8gZXhwb3NpdGlvbiBvbmx5
CisgICAgICAgIH07CisgICAgfTsKKworfX19CisKKyovCisKICNpbmNsdWRlIDxjc3RkbGliPgog
I2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9Db21waWxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5leHBlY3RlZC5oPgogCi1uYW1lc3BhY2Ug
V1RGIHsKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJT05TKQorI2RlZmluZSBfX0VYUEVD
VEVEX1RIUk9XKF9fZXhjZXB0aW9uKSAodGhyb3cgX19leGNlcHRpb24pCisjZWxzZQorI2RlZmlu
ZSBfX0VYUEVDVEVEX1RIUk9XKF9fZXhjZXB0aW9uKSAoKHZvaWQpKF9fZXhjZXB0aW9uKSwgQ1JB
U0goKSkKKyNlbmRpZgogCi10ZW1wbGF0ZTxjbGFzcyBFPgotY2xhc3MgVW5leHBlY3RlZCB7Ci1w
dWJsaWM6Ci0gICAgVW5leHBlY3RlZCgpID0gZGVsZXRlOwotICAgIGNvbnN0ZXhwciBleHBsaWNp
dCBVbmV4cGVjdGVkKGNvbnN0IEUmIGUpIDogdmFsKGUpIHsgfQotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBVbmV4cGVjdGVkKEUmJiBlKSA6IHZhbChzdGQ6OmZvcndhcmQ8RT4oZSkpIHsgfQotICAg
IGNvbnN0ZXhwciBjb25zdCBFJiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1cm4gdmFsOyB9Ci0gICAg
UkVMQVhFRF9DT05TVEVYUFIgRSYgdmFsdWUoKSAmIHsgcmV0dXJuIHZhbDsgfQotICAgIFJFTEFY
RURfQ09OU1RFWFBSIEUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUodmFsKTsgfQorbmFt
ZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2Ug
ZnVuZGFtZW50YWxzX3YzIHsKIAotcHJpdmF0ZToKLSAgICBFIHZhbDsKK3N0cnVjdCB1bmV4cGVj
dGVkX3QgeworICAgIHVuZXhwZWN0ZWRfdCgpID0gZGVmYXVsdDsKIH07CisjaWYgX19jcGx1c3Bs
dXMgPCAyMDE3MDNMCisjZGVmaW5lIF9fRVhQRUNURURfSU5MSU5FX1ZBUklBQkxFIHN0YXRpYyBj
b25zdAorI2Vsc2UKKyNkZWZpbmUgX19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFCTEUgaW5saW5lCisj
ZW5kaWYKIAotdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBVbmV4cGVjdGVkPEU+JiBsaHMsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHJocykgeyByZXR1cm4g
bGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7IH0KLXRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCBVbmV4cGVj
dGVkPEU+JiByaHMpIHsgcmV0dXJuIGxocy52YWx1ZSgpICE9IHJocy52YWx1ZSgpOyB9CitfX0VY
UEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgdW5leHBlY3RlZF90IHVuZXhwZWN0IHsg
fTsKIAotdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIFVuZXhwZWN0ZWQ8c3RkOjpkZWNheV90
PEU+PiBtYWtlVW5leHBlY3RlZChFJiYgdikgeyByZXR1cm4gVW5leHBlY3RlZDx0eXBlbmFtZSBz
dGQ6OmRlY2F5PEU+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8RT4odikpOyB9Cit0ZW1wbGF0ZTxjbGFz
cyBFPiBjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzOwogCi1zdHJ1Y3QgVW5leHBlY3RUYWcgewot
ICAgIFVuZXhwZWN0VGFnKCkgPSBkZWZhdWx0OwordGVtcGxhdGU8PgorY2xhc3MgYmFkX2V4cGVj
dGVkX2FjY2Vzczx2b2lkPiA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgYmFkX2V4cGVjdGVkX2FjY2VzcygpIHsgfQogfTsKLWNvbnN0ZXhwciBVbmV4cGVj
dFRhZyBVbmV4cGVjdCB7IH07IC8vIEZJWE1FIFRoaXMgaXMgYW4gaW5saW5lIHZhcmlhYmxlIGZv
ciBDKysxNyBhbmQgbGF0ZXIuCiAKLS8vIEZJWE1FIHRoaXMgc2hvdWxkIGp1c3QgYmUgc3RkOjpp
bl9wbGFjZV90IHdoaWNoIHdlIGFsc28gZGVmaW5lIGluIG9wdGlvbmFsIGFuZCB2YXJpYW50Lgot
c3RydWN0IEluUGxhY2VUYWcgewotICAgIEluUGxhY2VUYWcoKSA9IGRlZmF1bHQ7Ci19OwotY29u
c3RleHByIEluUGxhY2VUYWcgSW5QbGFjZSB7IH07Cit0ZW1wbGF0ZTxjbGFzcyBFPgorY2xhc3Mg
YmFkX2V4cGVjdGVkX2FjY2VzcyA6IHB1YmxpYyBiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBiYWRfZXhwZWN0ZWRfYWNjZXNzKEUgdmFsKSA6IHZhbCh2
YWwpIHsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IG5vZXhjZXB0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6ZXhjZXB0aW9uOjp3aGF0KCk7IH0KKyAgICBFJiBlcnJvcigp
ICYgeyByZXR1cm4gdmFsOyB9CisgICAgY29uc3QgRSYgZXJyb3IoKSBjb25zdCYgeyByZXR1cm4g
dmFsOyB9CisgICAgRSYmIGVycm9yKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKHZhbCk7IH0KKyAg
ICBjb25zdCBFJiYgIGVycm9yKCkgY29uc3QmJiB7IHJldHVybiBzdGQ6Om1vdmUodmFsKTsgfQog
Ci1uYW1lc3BhY2UgRXhwZWN0ZWREZXRhaWwgeworcHJpdmF0ZToKKyAgICBFIHZhbDsKK307CiAK
LS8vIEludm9rZWQgd2hlcmUgc3RkOjpFeHBlY3RlZCB3b3VsZCBpbnN0ZWFkIHRocm93LgotaW5s
aW5lIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBUaHJvdygpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorbmFtZXNwYWNlIF9fZXhwZWN0ZWRfZGV0YWlsIHsKIAotc3RhdGlj
IGNvbnN0ZXhwciBlbnVtIGNsYXNzIFZhbHVlVGFnVHlwZSB7IH0gVmFsdWVUYWcgeyB9Owotc3Rh
dGljIGNvbnN0ZXhwciBlbnVtIGNsYXNzIEVycm9yVGFnVHlwZSB7IH0gRXJyb3JUYWcgeyB9Owor
X19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFCTEUgY29uc3RleHByIGVudW0gY2xhc3MgdmFsdWVfdGFn
X3QgeyB9IHZhbHVlX3RhZyB7IH07CitfX0VYUEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25zdGV4
cHIgZW51bSBjbGFzcyBlcnJvcl90YWdfdCB7IH0gZXJyb3JfdGFnIHsgfTsKIAogdGVtcGxhdGU8
Y2xhc3MgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
VD46OnZhbHVlPiogPSBudWxscHRyPiB2b2lkIGRlc3Ryb3koVCYpIHsgfQogdGVtcGxhdGU8Y2xh
c3MgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSAmJiAoc3RkOjppc19jbGFzczxUPjo6dmFsdWUgfHwgc3RkOjppc191bmlvbjxUPjo6
dmFsdWUpPiogPSBudWxscHRyPiB2b2lkIGRlc3Ryb3koVCYgdCkgeyB0Ln5UKCk7IH0KIAogdGVt
cGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXVuaW9uIENvbnN0ZXhwclN0b3JhZ2UgewotICAgIHR5
cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVm
IFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFnZSB7
CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7Cisg
ICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAgICBjaGFyIGR1bW15
OwotICAgIFZhbHVlVHlwZSB2YWw7Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25zdGV4cHIg
Q29uc3RleHByU3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHBy
U3RvcmFnZShWYWx1ZVRhZ1R5cGUpIDogdmFsKCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhw
clN0b3JhZ2UoRXJyb3JUYWdUeXBlKSA6IGVycigpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4
cHJTdG9yYWdlKFZhbHVlVGFnVHlwZSwgY29uc3QgVmFsdWVUeXBlJiB2KSA6IHZhbCh2KSB7IH0K
LSAgICBjb25zdGV4cHIgQ29uc3RleHByU3RvcmFnZShFcnJvclRhZ1R5cGUsIGNvbnN0IEVycm9y
VHlwZSYgZSkgOiBlcnIoZSkgeyB9Ci0gICAgfkNvbnN0ZXhwclN0b3JhZ2UoKSA9IGRlZmF1bHQ7
CisgICAgdmFsdWVfdHlwZSB2YWw7CisgICAgZXJyb3JfdHlwZSBlcnI7CisgICAgY29uc3RleHBy
IGNvbnN0ZXhwcl9zdG9yYWdlKCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4
cHJfc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiB2YWwoKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3Rl
eHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QpIDogZXJyKCkgeyB9CisgICAgY29uc3RleHByIGNvbnN0
ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190LCBjb25zdCB2YWx1ZV90eXBlJiB2KSA6IHZhbCh2KSB7
IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVy
cm9yX3R5cGUmIGUpIDogZXJyKGUpIHsgfQorICAgIH5jb25zdGV4cHJfc3RvcmFnZSgpID0gZGVm
YXVsdDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci11bmlvbiBTdG9yYWdlIHsK
LSAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAg
dHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwordW5pb24gc3RvcmFnZSB7Cisg
ICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAg
dHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAgICBjaGFyIGR1bW15Owot
ICAgIFZhbHVlVHlwZSB2YWw7Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25zdGV4cHIgU3Rv
cmFnZSgpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShWYWx1ZVRhZ1R5cGUp
IDogdmFsKCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlKSA6IGVycigp
IHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKFZhbHVlVGFnVHlwZSwgY29uc3QgVmFsdWVUeXBl
JiB2YWwpIDogdmFsKHZhbCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoVmFsdWVUYWdUeXBl
LCBWYWx1ZVR5cGUmJiB2YWwpIDogdmFsKHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbCkpIHsg
fQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSwgY29uc3QgRXJyb3JUeXBlJiBl
cnIpIDogZXJyKGVycikgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBF
cnJvclR5cGUmJiBlcnIpIDogZXJyKHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+KGVycikpIHsgfQot
ICAgIH5TdG9yYWdlKCkgeyB9CisgICAgdmFsdWVfdHlwZSB2YWw7CisgICAgZXJyb3JfdHlwZSBl
cnI7CisgICAgY29uc3RleHByIHN0b3JhZ2UoKSA6IGR1bW15KCkgeyB9CisgICAgY29uc3RleHBy
IHN0b3JhZ2UodmFsdWVfdGFnX3QpIDogdmFsKCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2Uo
ZXJyb3JfdGFnX3QpIDogZXJyKCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UodmFsdWVfdGFn
X3QsIGNvbnN0IHZhbHVlX3R5cGUmIHZhbCkgOiB2YWwodmFsKSB7IH0KKyAgICBjb25zdGV4cHIg
c3RvcmFnZSh2YWx1ZV90YWdfdCwgdmFsdWVfdHlwZSYmIHZhbCkgOiB2YWwoc3RkOjpmb3J3YXJk
PHZhbHVlX3R5cGU+KHZhbCkpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKGVycm9yX3RhZ190
LCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogZXJyKGVycikgeyB9CisgICAgY29uc3RleHByIHN0
b3JhZ2UoZXJyb3JfdGFnX3QsIGVycm9yX3R5cGUmJiBlcnIpIDogZXJyKHN0ZDo6Zm9yd2FyZDxl
cnJvcl90eXBlPihlcnIpKSB7IH0KKyAgICB+c3RvcmFnZSgpIHsgfQogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRT4KLXVuaW9uIENvbnN0ZXhwclN0b3JhZ2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYg
dm9pZCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVu
ZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFnZTx2b2lk
LCBFPiB7CisgICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9y
X3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAgICBj
aGFyIGR1bW15OwotICAgIEVycm9yVHlwZSBlcnI7Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0
b3JhZ2UoKSA6IGR1bW15KCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0b3JhZ2UoVmFs
dWVUYWdUeXBlKSA6IGR1bW15KCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0b3JhZ2Uo
RXJyb3JUYWdUeXBlKSA6IGVycigpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdl
KEVycm9yVGFnVHlwZSwgY29uc3QgRXJyb3JUeXBlJiBlKSA6IGVycihlKSB7IH0KLSAgICB+Q29u
c3RleHByU3RvcmFnZSgpID0gZGVmYXVsdDsKKyAgICBlcnJvcl90eXBlIGVycjsKKyAgICBjb25z
dGV4cHIgY29uc3RleHByX3N0b3JhZ2UoKSA6IGR1bW15KCkgeyB9CisgICAgY29uc3RleHByIGNv
bnN0ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190KSA6IGR1bW15KCkgeyB9CisgICAgY29uc3RleHBy
IGNvbnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQorICAgIGNvbnN0ZXhw
ciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZSkgOiBl
cnIoZSkgeyB9CisgICAgfmNvbnN0ZXhwcl9zdG9yYWdlKCkgPSBkZWZhdWx0OwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRT4KLXVuaW9uIFN0b3JhZ2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgdm9p
ZCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhw
ZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1bmlvbiBzdG9yYWdlPHZvaWQsIEU+IHsKKyAgICB0
eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0
eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOwogICAgIGNoYXIgZHVtbXk7Ci0g
ICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25zdGV4cHIgU3RvcmFnZSgpIDogZHVtbXkoKSB7IH0K
LSAgICBjb25zdGV4cHIgU3RvcmFnZShWYWx1ZVRhZ1R5cGUpIDogZHVtbXkoKSB7IH0KLSAgICBj
b25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAgY29uc3RleHBy
IFN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBjb25zdCBFcnJvclR5cGUmIGVycikgOiBlcnIoZXJyKSB7
IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUsIEVycm9yVHlwZSYmIGVycikg
OiBlcnIoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyKSkgeyB9Ci0gICAgflN0b3JhZ2UoKSB7
IH0KKyAgICBlcnJvcl90eXBlIGVycjsKKyAgICBjb25zdGV4cHIgc3RvcmFnZSgpIDogZHVtbXko
KSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiBkdW1teSgpIHsgfQor
ICAgIGNvbnN0ZXhwciBzdG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQorICAgIGNvbnN0
ZXhwciBzdG9yYWdlKGVycm9yX3RhZ190LCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogZXJyKGVy
cikgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGVycm9yX3R5cGUmJiBl
cnIpIDogZXJyKHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBlPihlcnIpKSB7IH0KKyAgICB+c3RvcmFn
ZSgpIHsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXN0cnVjdCBDb25zdGV4
cHJCYXNlIHsKLSAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5
cGU7Ci0gICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwotICAgIENvbnN0
ZXhwclN0b3JhZ2U8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHM7CitzdHJ1Y3QgY29uc3RleHByX2Jh
c2UgeworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBlcnJvcl90eXBl
OworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CisgICAgY29uc3Rl
eHByX3N0b3JhZ2U8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gczsKICAgICBib29sIGhhczsKLSAg
ICBjb25zdGV4cHIgQ29uc3RleHByQmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29u
c3RleHByIENvbnN0ZXhwckJhc2UoVmFsdWVUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyh0cnVl
KSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6IHMo
dGFnKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShWYWx1ZVRh
Z1R5cGUgdGFnLCBjb25zdCBWYWx1ZVR5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRydWUp
IHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcsIGNvbnN0
IEVycm9yVHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQotICAgIH5Db25z
dGV4cHJCYXNlKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSgpIDog
cygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKHZhbHVlX3Rh
Z190IHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHBy
X2Jhc2UoZXJyb3JfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25z
dGV4cHIgY29uc3RleHByX2Jhc2UodmFsdWVfdGFnX3QgdGFnLCBjb25zdCB2YWx1ZV90eXBlJiB2
YWwpIDogcyh0YWcsIHZhbCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHBy
X2Jhc2UoZXJyb3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogcyh0YWcsIGVy
ciksIGhhcyhmYWxzZSkgeyB9CisgICAgfmNvbnN0ZXhwcl9iYXNlKCkgPSBkZWZhdWx0OwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXN0cnVjdCBCYXNlIHsKLSAgICB0eXBlZGVm
IFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAgdHlwZWRlZiBVbmV4
cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwotICAgIFN0b3JhZ2U8VmFsdWVUeXBlLCBFcnJvclR5
cGU+IHM7CitzdHJ1Y3QgYmFzZSB7CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlw
ZWRlZiBFIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRf
dHlwZTsKKyAgICBzdG9yYWdlPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9vbCBo
YXM7Ci0gICAgY29uc3RleHByIEJhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0
ZXhwciBCYXNlKFZhbHVlVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9Ci0gICAg
Y29uc3RleHByIEJhc2UoRXJyb3JUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9
Ci0gICAgY29uc3RleHByIEJhc2UoVmFsdWVUYWdUeXBlIHRhZywgY29uc3QgVmFsdWVUeXBlJiB2
YWwpIDogcyh0YWcsIHZhbCksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShWYWx1
ZVRhZ1R5cGUgdGFnLCBWYWx1ZVR5cGUmJiB2YWwpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxWYWx1
ZVR5cGU+KHZhbCkpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdU
eXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhmYWxzZSkg
eyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdUeXBlIHRhZywgRXJyb3JUeXBlJiYgZXJy
KSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSwgaGFzKGZhbHNlKSB7IH0K
LSAgICBCYXNlKGNvbnN0IEJhc2UmIG8pCisgICAgY29uc3RleHByIGJhc2UoKSA6IHMoKSwgaGFz
KHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZykgOiBzKHRhZyks
IGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcpIDogcyh0
YWcpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZywg
Y29uc3QgdmFsdWVfdHlwZSYgdmFsKSA6IHModGFnLCB2YWwpLCBoYXModHJ1ZSkgeyB9CisgICAg
Y29uc3RleHByIGJhc2UodmFsdWVfdGFnX3QgdGFnLCB2YWx1ZV90eXBlJiYgdmFsKSA6IHModGFn
LCBzdGQ6OmZvcndhcmQ8dmFsdWVfdHlwZT4odmFsKSksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25z
dGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcsIGNvbnN0IGVycm9yX3R5cGUmIGVycikgOiBzKHRh
ZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0
YWcsIGVycm9yX3R5cGUmJiBlcnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBlPihl
cnIpKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBiYXNlKGNvbnN0IGJhc2UmIG8pCiAgICAgICAgIDog
aGFzKG8uaGFzKQogICAgIHsKICAgICAgICAgaWYgKGhhcykKLSAgICAgICAgICAgIDo6bmV3ICgm
cy52YWwpIFZhbHVlVHlwZShvLnMudmFsKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy52YWwpIHZh
bHVlX3R5cGUoby5zLnZhbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIDo6bmV3ICgmcy5l
cnIpIEVycm9yVHlwZShvLnMuZXJyKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIpIGVycm9y
X3R5cGUoby5zLmVycik7CiAgICAgfQotICAgIEJhc2UoQmFzZSYmIG8pCisgICAgYmFzZShiYXNl
JiYgbykKICAgICAgICAgOiBoYXMoby5oYXMpCiAgICAgewogICAgICAgICBpZiAoaGFzKQotICAg
ICAgICAgICAgOjpuZXcgKCZzLnZhbCkgVmFsdWVUeXBlKFdURk1vdmUoby5zLnZhbCkpOworICAg
ICAgICAgICAgOjpuZXcgKCZzLnZhbCkgdmFsdWVfdHlwZShzdGQ6Om1vdmUoby5zLnZhbCkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBFcnJvclR5cGUoV1RGTW92
ZShvLnMuZXJyKSk7CisgICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBlcnJvcl90eXBlKHN0ZDo6
bW92ZShvLnMuZXJyKSk7CiAgICAgfQotICAgIH5CYXNlKCkKKyAgICB+YmFzZSgpCiAgICAgewog
ICAgICAgICBpZiAoaGFzKQogICAgICAgICAgICAgZGVzdHJveShzLnZhbCk7CkBAIC0xOTcsNDUg
KzM1Niw0NSBAQCBzdHJ1Y3QgQmFzZSB7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotc3RydWN0
IENvbnN0ZXhwckJhc2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgdm9pZCBWYWx1ZVR5cGU7Ci0g
ICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBl
Y3RlZFR5cGU7Ci0gICAgQ29uc3RleHByU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gczsK
K3N0cnVjdCBjb25zdGV4cHJfYmFzZTx2b2lkLCBFPiB7CisgICAgdHlwZWRlZiB2b2lkIHZhbHVl
X3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVk
PEU+IHVuZXhwZWN0ZWRfdHlwZTsKKyAgICBjb25zdGV4cHJfc3RvcmFnZTx2YWx1ZV90eXBlLCBl
cnJvcl90eXBlPiBzOwogICAgIGJvb2wgaGFzOwotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNl
KCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShWYWx1
ZVRhZ1R5cGUgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBDb25z
dGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQotICAg
IGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcsIGNvbnN0IEVycm9yVHlw
ZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQotICAgIGNvbnN0ZXhwciBDb25z
dGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcsIEVycm9yVHlwZSYmIGVycikgOiBzKHRhZywgc3Rk
Ojpmb3J3YXJkPEVycm9yVHlwZT4oZXJyKSksIGhhcyhmYWxzZSkgeyB9Ci0gICAgfkNvbnN0ZXhw
ckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKCkgOiBzKCks
IGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2UodmFsdWVfdGFnX3Qg
dGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFz
ZShlcnJvcl90YWdfdCB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhw
ciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcsIGNvbnN0IGVycm9yX3R5cGUmIGVycikg
OiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX2Jh
c2UoZXJyb3JfdGFnX3QgdGFnLCBlcnJvcl90eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndh
cmQ8ZXJyb3JfdHlwZT4oZXJyKSksIGhhcyhmYWxzZSkgeyB9CisgICAgfmNvbnN0ZXhwcl9iYXNl
KCkgPSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRT4KLXN0cnVjdCBCYXNlPHZvaWQs
IEU+IHsKLSAgICB0eXBlZGVmIHZvaWQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5
cGU7Ci0gICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwotICAgIFN0b3Jh
Z2U8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHM7CitzdHJ1Y3QgYmFzZTx2b2lkLCBFPiB7CisgICAg
dHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAg
dHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKKyAgICBzdG9yYWdlPHZhbHVl
X3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9vbCBoYXM7Ci0gICAgY29uc3RleHByIEJhc2Uo
KSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKFZhbHVlVGFnVHlwZSB0
YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdU
eXBlIHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJy
b3JUYWdUeXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhm
YWxzZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdUeXBlIHRhZywgRXJyb3JUeXBl
JiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSwgaGFzKGZhbHNl
KSB7IH0KLSAgICBCYXNlKGNvbnN0IEJhc2UmIG8pCisgICAgY29uc3RleHByIGJhc2UoKSA6IHMo
KSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZykgOiBz
KHRhZyksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcp
IDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190
IHRhZywgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsg
fQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVycikg
OiBzKHRhZywgc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQor
ICAgIGJhc2UoY29uc3QgYmFzZSYgbykKICAgICAgICAgOiBoYXMoby5oYXMpCiAgICAgewogICAg
ICAgICBpZiAoIWhhcykKLSAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIpIEVycm9yVHlwZShvLnMu
ZXJyKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIpIGVycm9yX3R5cGUoby5zLmVycik7CiAg
ICAgfQotICAgIEJhc2UoQmFzZSYmIG8pCisgICAgYmFzZShiYXNlJiYgbykKICAgICAgICAgOiBo
YXMoby5oYXMpCiAgICAgewogICAgICAgICBpZiAoIWhhcykKLSAgICAgICAgICAgIDo6bmV3ICgm
cy5lcnIpIEVycm9yVHlwZShXVEZNb3ZlKG8ucy5lcnIpKTsKKyAgICAgICAgICAgIDo6bmV3ICgm
cy5lcnIpIGVycm9yX3R5cGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsKICAgICB9Ci0gICAgfkJhc2Uo
KQorICAgIH5iYXNlKCkKICAgICB7CiAgICAgICAgIGlmICghaGFzKQogICAgICAgICAgICAgZGVz
dHJveShzLmVycik7CkBAIC0yNDMsMTkzICs0MDIsMTc1IEBAIHN0cnVjdCBCYXNlPHZvaWQsIEU+
IHsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci11c2luZyBCYXNlU2VsZWN0ID0g
dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKK3VzaW5nIGJhc2Vfc2VsZWN0ID0gdHlwZW5hbWUg
c3RkOjpjb25kaXRpb25hbDwKICAgICAoKHN0ZDo6aXNfdm9pZDxUPjo6dmFsdWUgfHwgc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKICAgICAgICAgJiYgc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSksCi0gICAgQ29uc3RleHByQmFzZTx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3Q8RT46OnR5cGU+LAotICAgIEJhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5
cGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PEU+Ojp0eXBlPgorICAgIGNvbnN0ZXhwcl9i
YXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxFPjo6dHlwZT4sCisgICAgYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDxUPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8RT46OnR5cGU+CiA+Ojp0eXBl
OwogCi19IC8vIG5hbWVzcGFjZSBFeHBlY3RlZERldGFpbAorfSAvLyBuYW1lc3BhY2UgX19leHBl
Y3RlZF9kZXRhaWwKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLWNsYXNzIEV4cGVjdGVk
IDogcHJpdmF0ZSBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDxULCBFPiB7Ci0gICAgdHlwZWRl
ZiBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDxULCBFPiBiYXNlOworY2xhc3MgZXhwZWN0ZWQg
OiBwcml2YXRlIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlX3NlbGVjdDxULCBFPiB7CisgICAgdHlw
ZWRlZiBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9zZWxlY3Q8VCwgRT4gYmFzZTsKIAogcHVibGlj
OgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6VmFsdWVUeXBlIFZhbHVlVHlwZTsKLSAgICB0
eXBlZGVmIHR5cGVuYW1lIGJhc2U6OkVycm9yVHlwZSBFcnJvclR5cGU7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBiYXNlOjpVbmV4cGVjdGVkVHlwZSBVbmV4cGVjdGVkVHlwZTsKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIHR5cGVu
YW1lIGJhc2U6OmVycm9yX3R5cGUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJh
c2U6OnVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVjdGVkX3R5cGU7CiAKIHByaXZhdGU6Ci0gICAgdHlw
ZWRlZiBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gdHlwZTsKKyAgICB0eXBlZGVmIGV4
cGVjdGVkPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHR5cGU7CiAKIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgdXNpbmcgdHlwZSA9IEV4cGVj
dGVkPFUsIEVycm9yVHlwZT47CisgICAgICAgIHVzaW5nIHR5cGUgPSBleHBlY3RlZDxVLCBlcnJv
cl90eXBlPjsKICAgICB9OwogCi0gICAgY29uc3RleHByIEV4cGVjdGVkKCkgOiBiYXNlKEV4cGVj
dGVkRGV0YWlsOjpWYWx1ZVRhZykgeyB9Ci0gICAgRXhwZWN0ZWQoY29uc3QgRXhwZWN0ZWQmKSA9
IGRlZmF1bHQ7Ci0gICAgRXhwZWN0ZWQoRXhwZWN0ZWQmJikgPSBkZWZhdWx0OwotCi0gICAgY29u
c3RleHByIEV4cGVjdGVkKGNvbnN0IFZhbHVlVHlwZSYgZSkgOiBiYXNlKEV4cGVjdGVkRGV0YWls
OjpWYWx1ZVRhZywgZSkgeyB9Ci0gICAgY29uc3RleHByIEV4cGVjdGVkKFZhbHVlVHlwZSYmIGUp
IDogYmFzZShFeHBlY3RlZERldGFpbDo6VmFsdWVUYWcsIHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+
KGUpKSB7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGljaXQg
RXhwZWN0ZWQoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpIDogYmFzZShFeHBlY3RlZERldGFp
bDo6VmFsdWVUYWcsIFZhbHVlVHlwZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0K
LSAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGlj
aXQgRXhwZWN0ZWQoaW5fcGxhY2VfdCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYu
Li4pOwotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChjb25zdCBVbmV4cGVjdGVkVHlwZSYgdSkgOiBi
YXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KLSAgICBjb25zdGV4
cHIgRXhwZWN0ZWQoVW5leHBlY3RlZFR5cGUmJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVy
cm9yVGFnLCBzdGQ6OmZvcndhcmQ8VW5leHBlY3RlZFR5cGU+KHUpLnZhbHVlKCkpIHsgfQotICAg
IHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIEV4cGVjdGVkKGNvbnN0IFVuZXhwZWN0ZWQ8
RXJyPiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0K
LSAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVkPEVy
cj4mJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCBzdGQ6OmZvcndhcmQ8RXJy
Pih1LnZhbHVlKCkpKSB7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIg
ZXhwbGljaXQgRXhwZWN0ZWQoVW5leHBlY3RUYWcsIEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2UoRXhw
ZWN0ZWREZXRhaWw6OlZhbHVlVGFnLCBVbmV4cGVjdGVkVHlwZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKSB7IH0KLSAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBj
b25zdGV4cHIgZXhwbGljaXQgRXhwZWN0ZWQoVW5leHBlY3RUYWcsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxVPiwgQXJncyYmLi4uKTsKLQotICAgIH5FeHBlY3RlZCgpID0gZGVmYXVsdDsKLQotICAg
IEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgRXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0
aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShFeHBlY3RlZCYm
IGUpIHsgdHlwZShXVEZNb3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgVT4gRXhwZWN0ZWQmIG9wZXJhdG9yPShVJiYgdSkgeyB0eXBlKFdURk1v
dmUodSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBFeHBlY3RlZCYgb3BlcmF0
b3I9KGNvbnN0IFVuZXhwZWN0ZWRUeXBlJiB1KSB7IHR5cGUodSkuc3dhcCgqdGhpcyk7IHJldHVy
biAqdGhpczsgfQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oVW5leHBlY3RlZFR5cGUmJiB1KSB7
IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGNvbnN0
ZXhwciBleHBlY3RlZCgpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFsdWVfdGFnKSB7IH0K
KyAgICBleHBlY3RlZChjb25zdCBleHBlY3RlZCYpID0gZGVmYXVsdDsKKyAgICBleHBlY3RlZChl
eHBlY3RlZCYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3QgdmFs
dWVfdHlwZSYgZSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIGUpIHsgfQor
ICAgIGNvbnN0ZXhwciBleHBlY3RlZCh2YWx1ZV90eXBlJiYgZSkgOiBiYXNlKF9fZXhwZWN0ZWRf
ZGV0YWlsOjp2YWx1ZV90YWcsIHN0ZDo6Zm9yd2FyZDx2YWx1ZV90eXBlPihlKSkgeyB9CisgICAg
dGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKHN0ZDo6
aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFs
dWVfdGFnLCB2YWx1ZV90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorICAg
IC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBl
eHBlY3RlZChpbl9wbGFjZV90LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7
CisgICAgY29uc3RleHByIGV4cGVjdGVkKGNvbnN0IHVuZXhwZWN0ZWRfdHlwZSYgdSkgOiBiYXNl
KF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHUudmFsdWUoKSkgeyB9CisgICAgY29uc3Rl
eHByIGV4cGVjdGVkKHVuZXhwZWN0ZWRfdHlwZSYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFp
bDo6ZXJyb3JfdGFnLCBzdGQ6OmZvcndhcmQ8dW5leHBlY3RlZF90eXBlPih1KS52YWx1ZSgpKSB7
IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBleHBlY3RlZChjb25zdCB1bmV4
cGVjdGVkPEVycj4mIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1LnZh
bHVlKCkpIHsgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIGV4cGVjdGVkKHVu
ZXhwZWN0ZWQ8RXJyPiYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCBz
dGQ6OmZvcndhcmQ8RXJyPih1LnZhbHVlKCkpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBB
cmdzPiBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBlY3RlZF90LCBBcmdzJiYuLi4g
YXJncykgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIHVuZXhwZWN0ZWRfdHlw
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKyAgICAvLyB0ZW1wbGF0ZTxjbGFz
cyBVLCBjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBlY3Rl
ZF90LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7CisKKyAgICB+ZXhwZWN0
ZWQoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IGV4cGVjdGVk
JiBlKSB7IHR5cGUoZSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGV4cGVjdGVk
JiBvcGVyYXRvcj0oZXhwZWN0ZWQmJiBlKSB7IHR5cGUoc3RkOjptb3ZlKGUpKS5zd2FwKCp0aGlz
KTsgcmV0dXJuICp0aGlzOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZXhwZWN0ZWQmIG9wZXJh
dG9yPShVJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhp
czsgfQorICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgdW5leHBlY3RlZF90eXBlJiB1KSB7
IHR5cGUodSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGV4cGVjdGVkJiBvcGVy
YXRvcj0odW5leHBlY3RlZF90eXBlJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgqdGhp
cyk7IHJldHVybiAqdGhpczsgfQogICAgIC8vIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+IHZvaWQg
ZW1wbGFjZShBcmdzJiYuLi4pOwogICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFy
Z3M+IHZvaWQgZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7CiAK
LSAgICB2b2lkIHN3YXAoRXhwZWN0ZWQmIG8pCisgICAgdm9pZCBzd2FwKGV4cGVjdGVkJiBvKQog
ICAgIHsKICAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwogICAgICAgICBpZiAoYmFzZTo6aGFzICYm
IG8uaGFzKQogICAgICAgICAgICAgc3dhcChiYXNlOjpzLnZhbCwgby5zLnZhbCk7CiAgICAgICAg
IGVsc2UgaWYgKGJhc2U6OmhhcyAmJiAhby5oYXMpIHsKLSAgICAgICAgICAgIEVycm9yVHlwZSBl
KFdURk1vdmUoby5zLmVycikpOwotICAgICAgICAgICAgRXhwZWN0ZWREZXRhaWw6OmRlc3Ryb3ko
by5zLmVycik7Ci0gICAgICAgICAgICA6Om5ldyAoJm8ucy52YWwpIFZhbHVlVHlwZShXVEZNb3Zl
KGJhc2U6OnMudmFsKSk7Ci0gICAgICAgICAgICBFeHBlY3RlZERldGFpbDo6ZGVzdHJveShiYXNl
OjpzLnZhbCk7Ci0gICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBFcnJvclR5cGUoV1RG
TW92ZShlKSk7CisgICAgICAgICAgICBlcnJvcl90eXBlIGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsK
KyAgICAgICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KG8ucy5lcnIpOworICAgICAg
ICAgICAgOjpuZXcgKCZvLnMudmFsKSB2YWx1ZV90eXBlKHN0ZDo6bW92ZShiYXNlOjpzLnZhbCkp
OworICAgICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRlc3Ryb3koYmFzZTo6cy52YWwpOwor
ICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoZSkp
OwogICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAgICAgICAgfSBlbHNlIGlm
ICghYmFzZTo6aGFzICYmIG8uaGFzKSB7Ci0gICAgICAgICAgICBWYWx1ZVR5cGUgdihXVEZNb3Zl
KG8ucy52YWwpKTsKLSAgICAgICAgICAgIEV4cGVjdGVkRGV0YWlsOjpkZXN0cm95KG8ucy52YWwp
OwotICAgICAgICAgICAgOjpuZXcgKCZvLnMuZXJyKSBFcnJvclR5cGUoV1RGTW92ZShiYXNlOjpz
LmVycikpOwotICAgICAgICAgICAgRXhwZWN0ZWREZXRhaWw6OmRlc3Ryb3koYmFzZTo6cy5lcnIp
OwotICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLnZhbCkgVmFsdWVUeXBlKFdURk1vdmUodikp
OworICAgICAgICAgICAgdmFsdWVfdHlwZSB2KHN0ZDo6bW92ZShvLnMudmFsKSk7CisgICAgICAg
ICAgICBfX2V4cGVjdGVkX2RldGFpbDo6ZGVzdHJveShvLnMudmFsKTsKKyAgICAgICAgICAgIDo6
bmV3ICgmby5zLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy5lcnIpKTsKKyAgICAg
ICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KGJhc2U6OnMuZXJyKTsKKyAgICAgICAg
ICAgIDo6bmV3ICgmYmFzZTo6cy52YWwpIHZhbHVlX3R5cGUoc3RkOjptb3ZlKHYpKTsKICAgICAg
ICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgc3dhcChiYXNlOjpzLmVyciwgby5zLmVycik7CiAgICAgfQogCi0gICAgY29uc3RleHByIGNv
bnN0IFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZiYXNlOjpzLnZhbDsg
fQotICAgIFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZiYXNlOjpzLnZhbDsgfQot
ICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0ICYgeyByZXR1
cm4gYmFzZTo6cy52YWw7IH0KLSAgICBWYWx1ZVR5cGUmIG9wZXJhdG9yKigpICYgeyByZXR1cm4g
YmFzZTo6cy52YWw7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgVmFsdWVUeXBlJiYgb3BlcmF0b3Iq
KCkgY29uc3QgJiYgeyByZXR1cm4gV1RGTW92ZShiYXNlOjpzLnZhbCk7IH0KLSAgICBSRUxBWEVE
X0NPTlNURVhQUiBWYWx1ZVR5cGUmJiBvcGVyYXRvciooKSAmJiB7IHJldHVybiBXVEZNb3ZlKGJh
c2U6OnMudmFsKTsgfQorICAgIGNvbnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gJmJhc2U6OnMudmFsOyB9CisgICAgdmFsdWVfdHlwZSogb3BlcmF0
b3ItPigpIHsgcmV0dXJuICZiYXNlOjpzLnZhbDsgfQorICAgIGNvbnN0ZXhwciBjb25zdCB2YWx1
ZV90eXBlJiBvcGVyYXRvciooKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OnMudmFsOyB9CisgICAg
dmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQorICAgIGNv
bnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlJiYgb3BlcmF0b3IqKCkgY29uc3QgJiYgeyByZXR1cm4g
c3RkOjptb3ZlKGJhc2U6OnMudmFsKTsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIHZhbHVlX3R5
cGUmJiBvcGVyYXRvciooKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6cy52YWwpOyB9CiAg
ICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBiYXNl
OjpoYXM7IH0KLSAgICBjb25zdGV4cHIgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJh
c2U6OmhhczsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKCkgY29uc3Qg
JiB7IHJldHVybiBiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChFeHBlY3RlZERldGFpbDo6VGhy
b3coKSwgYmFzZTo6cy52YWwpOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVYUFIgVmFsdWVUeXBlJiB2
YWx1ZSgpICYgeyByZXR1cm4gYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoRXhwZWN0ZWREZXRh
aWw6OlRocm93KCksIGJhc2U6OnMudmFsKTsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1ZVR5
cGUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIFdURk1vdmUoYmFzZTo6aGFzID8gYmFzZTo6
cy52YWwgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMudmFsKSk7IH0KLSAgICBS
RUxBWEVEX0NPTlNURVhQUiBWYWx1ZVR5cGUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUo
YmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6
OnMudmFsKSk7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgRXJyb3JUeXBlJiBlcnJvcigpIGNvbnN0
ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpU
aHJvdygpLCBiYXNlOjpzLmVycik7IH0KLSAgICBFcnJvclR5cGUmIGVycm9yKCkgJiB7IHJldHVy
biAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJh
c2U6OnMuZXJyKTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIEVycm9yVHlwZSYmIGVycm9yKCkg
JiYgeyByZXR1cm4gV1RGTW92ZSghYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWRE
ZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKSk7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgRXJy
b3JUeXBlJiYgZXJyb3IoKSBjb25zdCAmJiB7IHJldHVybiBXVEZNb3ZlKCFiYXNlOjpoYXMgPyBi
YXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpKTsgfQot
ICAgIGNvbnN0ZXhwciBVbmV4cGVjdGVkVHlwZSBnZXRVbmV4cGVjdGVkKCkgY29uc3QgeyByZXR1
cm4gVW5leHBlY3RlZFR5cGUoYmFzZTo6cy5lcnIpOyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4g
Y29uc3RleHByIFZhbHVlVHlwZSB2YWx1ZU9yKFUmJiB1KSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6
OmhhcyA/ICoqdGhpcyA6IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUp
KTsgfQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFZhbHVlVHlwZSB2YWx1ZU9yKFUmJiB1KSAmJiB7
IHJldHVybiBiYXNlOjpoYXMgPyBXVEZNb3ZlKCoqdGhpcykgOiBzdGF0aWNfY2FzdDxWYWx1ZVR5
cGU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBoYXNfdmFsdWUo
KSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgdmFsdWVf
dHlwZSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDog
KF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2VzczxlcnJvcl90eXBlPihiYXNlOjpz
LmVycikpLCBiYXNlOjpzLnZhbCk7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiB2YWx1ZV90eXBl
JiB2YWx1ZSgpICYgeyByZXR1cm4gYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoX19FWFBFQ1RF
RF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVycm9yX3R5cGU+KGJhc2U6OnMuZXJyKSksIGJh
c2U6OnMudmFsKTsgfQorICAgIGNvbnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlJiYgdmFsdWUoKSBj
b25zdCAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoX19F
WFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVycm9yX3R5cGU+KGJhc2U6OnMuZXJy
KSksIGJhc2U6OnMudmFsKSk7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiB2YWx1ZV90eXBlJiYg
dmFsdWUoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAo
X19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVycm9yX3R5cGU+KGJhc2U6OnMu
ZXJyKSksIGJhc2U6OnMudmFsKSk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgZXJyb3JfdHlwZSYg
ZXJyb3IoKSBjb25zdCAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VY
UEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKTsg
fQorICAgIGVycm9yX3R5cGUmIGVycm9yKCkgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6
cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBi
YXNlOjpzLmVycik7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiBlcnJvcl90eXBlJiYgZXJyb3Io
KSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQ
RUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFzZTo6cy5lcnIpKTsg
fQorICAgIGNvbnN0ZXhwciBjb25zdCBlcnJvcl90eXBlJiYgZXJyb3IoKSBjb25zdCAmJiB7IHJl
dHVybiBzdGQ6Om1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQRUNURURfVEhS
T1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFzZTo6cy5lcnIpKTsgfQorICAgIHRl
bXBsYXRlPGNsYXNzIFU+IGNvbnN0ZXhwciB2YWx1ZV90eXBlIHZhbHVlX29yKFUmJiB1KSBjb25z
dCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/ICoqdGhpcyA6IHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+
KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiB2YWx1ZV90eXBl
IHZhbHVlX29yKFUmJiB1KSAmJiB7IHJldHVybiBiYXNlOjpoYXMgPyBzdGQ6Om1vdmUoKip0aGlz
KSA6IHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEU+Ci1jbGFzcyBFeHBlY3RlZDx2b2lkLCBFPiA6IHByaXZhdGUgRXhw
ZWN0ZWREZXRhaWw6OkJhc2VTZWxlY3Q8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgRXhwZWN0ZWRE
ZXRhaWw6OkJhc2VTZWxlY3Q8dm9pZCwgRT4gYmFzZTsKK2NsYXNzIGV4cGVjdGVkPHZvaWQsIEU+
IDogcHJpdmF0ZSBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9zZWxlY3Q8dm9pZCwgRT4geworICAg
IHR5cGVkZWYgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2VsZWN0PHZvaWQsIEU+IGJhc2U7CiAK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlZhbHVlVHlwZSBWYWx1ZVR5cGU7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpFcnJvclR5cGUgRXJyb3JUeXBlOwotICAgIHR5
cGVkZWYgdHlwZW5hbWUgYmFzZTo6VW5leHBlY3RlZFR5cGUgVW5leHBlY3RlZFR5cGU7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBiYXNlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBiYXNlOjplcnJvcl90eXBlIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBiYXNlOjp1bmV4cGVjdGVkX3R5cGUgdW5leHBlY3RlZF90eXBlOwogCiBwcml2YXRlOgot
ICAgIHR5cGVkZWYgRXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHR5cGU7CisgICAgdHlw
ZWRlZiBleHBlY3RlZDx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiB0eXBlOwogCiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RydWN0IHJlYmluZCB7Ci0gICAgICAgIHVzaW5nIHR5cGUg
PSBFeHBlY3RlZDxVLCBFcnJvclR5cGU+OworICAgICAgICB1c2luZyB0eXBlID0gZXhwZWN0ZWQ8
VSwgZXJyb3JfdHlwZT47CiAgICAgfTsKIAotICAgIGNvbnN0ZXhwciBFeHBlY3RlZCgpIDogYmFz
ZShFeHBlY3RlZERldGFpbDo6VmFsdWVUYWcpIHsgfQotICAgIEV4cGVjdGVkKGNvbnN0IEV4cGVj
dGVkJikgPSBkZWZhdWx0OwotICAgIEV4cGVjdGVkKEV4cGVjdGVkJiYpID0gZGVmYXVsdDsKLSAg
ICAvLyBjb25zdGV4cHIgZXhwbGljaXQgRXhwZWN0ZWQoaW5fcGxhY2VfdCk7Ci0gICAgY29uc3Rl
eHByIEV4cGVjdGVkKFVuZXhwZWN0ZWRUeXBlIGNvbnN0JiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRh
aWw6OkVycm9yVGFnLCB1LnZhbHVlKCkpIHsgfQotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4
cGVjdGVkVHlwZSYmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHN0ZDo6Zm9y
d2FyZDxVbmV4cGVjdGVkVHlwZT4odSkudmFsdWUoKSkgeyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RXJyPiBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZDxFcnI+IGNvbnN0JiB1KSA6IGJhc2Uo
RXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCB1LnZhbHVlKCkpIHsgfQorICAgIGNvbnN0ZXhwciBl
eHBlY3RlZCgpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFsdWVfdGFnKSB7IH0KKyAgICBl
eHBlY3RlZChjb25zdCBleHBlY3RlZCYpID0gZGVmYXVsdDsKKyAgICBleHBlY3RlZChleHBlY3Rl
ZCYmKSA9IGRlZmF1bHQ7CisgICAgLy8gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKGluX3Bs
YWNlX3QpOworICAgIGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkX3R5cGUgY29uc3QmIHUp
IDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1LnZhbHVlKCkpIHsgfQorICAg
IGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkX3R5cGUmJiB1KSA6IGJhc2UoX19leHBlY3Rl
ZF9kZXRhaWw6OmVycm9yX3RhZywgc3RkOjpmb3J3YXJkPHVuZXhwZWN0ZWRfdHlwZT4odSkudmFs
dWUoKSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25zdGV4cHIgZXhwZWN0ZWQodW5l
eHBlY3RlZDxFcnI+IGNvbnN0JiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3Rh
ZywgdS52YWx1ZSgpKSB7IH0KIAotICAgIH5FeHBlY3RlZCgpID0gZGVmYXVsdDsKKyAgICB+ZXhw
ZWN0ZWQoKSA9IGRlZmF1bHQ7CiAKLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IEV4cGVj
dGVkJiBlKSB7IHR5cGUoZSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQotICAgIEV4cGVj
dGVkJiBvcGVyYXRvcj0oRXhwZWN0ZWQmJiBlKSB7IHR5cGUoV1RGTW92ZShlKSkuc3dhcCgqdGhp
cyk7IHJldHVybiAqdGhpczsgfQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgVW5leHBl
Y3RlZFR5cGUmIHUpIHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9IC8vIE5v
dCBpbiB0aGUgY3VycmVudCBwYXBlci4KLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KFVuZXhwZWN0
ZWRUeXBlJiYgdSkgeyB0eXBlKFdURk1vdmUodSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7
IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgorICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0o
Y29uc3QgZXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9
CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShleHBlY3RlZCYmIGUpIHsgdHlwZShzdGQ6Om1vdmUo
ZSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBleHBlY3RlZCYgb3BlcmF0b3I9
KGNvbnN0IHVuZXhwZWN0ZWRfdHlwZSYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1cm4g
KnRoaXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgorICAgIGV4cGVjdGVkJiBvcGVy
YXRvcj0odW5leHBlY3RlZF90eXBlJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgqdGhp
cyk7IHJldHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCiAgICAgLy8g
dm9pZCBlbXBsYWNlKCk7CiAKLSAgICB2b2lkIHN3YXAoRXhwZWN0ZWQmIG8pCisgICAgdm9pZCBz
d2FwKGV4cGVjdGVkJiBvKQogICAgIHsKICAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwogICAgICAg
ICBpZiAoYmFzZTo6aGFzICYmIG8uaGFzKSB7CiAgICAgICAgICAgICAvLyBEbyBub3RoaW5nLgog
ICAgICAgICB9IGVsc2UgaWYgKGJhc2U6OmhhcyAmJiAhby5oYXMpIHsKLSAgICAgICAgICAgIEVy
cm9yVHlwZSBlKFdURk1vdmUoby5zLmVycikpOwotICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpz
LmVycikgRXJyb3JUeXBlKGUpOworICAgICAgICAgICAgZXJyb3JfdHlwZSBlKHN0ZDo6bW92ZShv
LnMuZXJyKSk7CisgICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBlcnJvcl90eXBlKGUp
OwogICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAgICAgICAgfSBlbHNlIGlm
ICghYmFzZTo6aGFzICYmIG8uaGFzKSB7Ci0gICAgICAgICAgICA6Om5ldyAoJm8ucy5lcnIpIEVy
cm9yVHlwZShXVEZNb3ZlKGJhc2U6OnMuZXJyKSk7CisgICAgICAgICAgICA6Om5ldyAoJm8ucy5l
cnIpIGVycm9yX3R5cGUoc3RkOjptb3ZlKGJhc2U6OnMuZXJyKSk7CiAgICAgICAgICAgICBzd2Fw
KGJhc2U6Omhhcywgby5oYXMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN3YXAoYmFz
ZTo6cy5lcnIsIG8ucy5lcnIpOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9Ci0gICAgY29uc3RleHByIGJv
b2wgaGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0KLSAgICB2b2lkIHZhbHVl
KCkgY29uc3QgeyAhYmFzZTo6aGFzID8gRXhwZWN0ZWREZXRhaWw6OlRocm93KCkgOiB2b2lkKCk7
IH0KLSAgICBjb25zdGV4cHIgY29uc3QgRSYgZXJyb3IoKSBjb25zdCAmIHsgcmV0dXJuICFiYXNl
OjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5l
cnIpOyB9Ci0gICAgRSYgZXJyb3IoKSAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVy
ciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpOyB9Ci0gICAgUkVMQVhF
RF9DT05TVEVYUFIgRSYmIGVycm9yKCkgJiYgeyByZXR1cm4gV1RGTW92ZSghYmFzZTo6aGFzID8g
YmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKSk7IH0K
LSAgICBjb25zdGV4cHIgVW5leHBlY3RlZFR5cGUgZ2V0VW5leHBlY3RlZCgpIGNvbnN0IHsgcmV0
dXJuIFVuZXhwZWN0ZWRUeXBlKGJhc2U6OnMuZXJyKTsgfQorICAgIGNvbnN0ZXhwciBib29sIGhh
c192YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQorICAgIHZvaWQgdmFsdWUoKSBj
b25zdCB7ICFiYXNlOjpoYXMgPyBfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8
dm9pZD4oKSkgOiB2b2lkKCk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgRSYgZXJyb3IoKSBjb25z
dCAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVEX1RIUk9X
KGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKTsgfQorICAgIEUmIGVy
cm9yKCkgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9U
SFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpzLmVycik7IH0KKyAgICBS
RUxBWEVEX0NPTlNURVhQUiBFJiYgZXJyb3IoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoIWJhc2U6
OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vz
czx2b2lkPigpKSwgYmFzZTo6cy5lcnIpKTsgfQogfTsKIAotdGVtcGxhdGU8Y2xhc3MgVCwgY2xh
c3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwg
Y29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAo
eCA/IHgudmFsdWUoKSA9PSB5LnZhbHVlKCkgOiB4LmVycm9yKCkgPT0geS5lcnJvcigpKTsgfQot
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuICEo
eCA9PSB5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV4cGVjdGVkPHZvaWQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDx2b2lkLCBFPiYgeSkg
eyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYmICh4ID8gdHJ1ZSA6IHguZXJyb3IoKSA9PSB5
LmVycm9yKCkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJu
IHggPT0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4m
IHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KLXRlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4m
IHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuIHggIT0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYg
eCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpICE9
IHk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJl
dHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB4LnZhbHVlKCkgPT0geS52YWx1ZSgpIDog
eC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IGV4
cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiAhKHggPT0geSk7IH0KIAotdGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxULCBF
PiYgeCwgY29uc3QgVW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA9PSBFeHBlY3RlZDxULCBF
Pih5KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBVbmV4cGVjdGVkPEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyBy
ZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
RT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29u
c3QgVW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCAhPSBFeHBlY3RlZDxULCBFPih5KTsgfQot
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBVbmV4cGVjdGVkPEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhw
ZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDx2b2lkLCBFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8dm9p
ZCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHRydWUgOiB4LmVy
cm9yKCkgPT0geS5lcnJvcigpKTsgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBF
PiB2b2lkIHN3YXAoRXhwZWN0ZWQ8VCwgRT4mIHgsIEV4cGVjdGVkPFQsIEU+JiB5KSB7IHguc3dh
cCh5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA9PSBl
eHBlY3RlZDxULCBFPih5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyBy
ZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
RT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29u
c3QgVCYgeSkgeyByZXR1cm4geCAhPSBleHBlY3RlZDxULCBFPih5KTsgfQordGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB4LCBjb25z
dCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQog
Ci0vLyBOb3RlOiB0aGlzIGlzbid0IGluIHRoZSBjdXJyZW50IHByb3Bvc2FsIGJlY2F1c2UgaXQg
cmVsaWVzIG9uIEMrKzE3IGRlZHVjdGlvbiBndWlkZXMgaW5zdGVhZC4KLXRlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzIEUgPSBzdGQ6Om51bGxvcHRfdD4gY29uc3RleHByIEV4cGVjdGVkPHN0ZDo6ZGVj
YXlfdDxUPiwgRT4gbWFrZUV4cGVjdGVkKFQmJiB2KQotewotICAgIHJldHVybiBFeHBlY3RlZDx0
eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBFPihzdGQ6OmZvcndhcmQ8VD4odikpOwotfQot
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIEV4cGVjdGVkPFQsIHN0ZDo6ZGVj
YXlfdDxFPj4gbWFrZUV4cGVjdGVkRnJvbUVycm9yKEUmJiBlKSB7IHJldHVybiBFeHBlY3RlZDxU
LCBzdGQ6OmRlY2F5X3Q8RT4+KG1ha2VVbmV4cGVjdGVkKGUpKTsgfQotdGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgRSwgY2xhc3MgVT4gY29uc3RleHByIEV4cGVjdGVkPFQsIEU+IG1ha2VFeHBlY3Rl
ZEZyb21FcnJvcihVJiYgdSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4obWFrZVVuZXhwZWN0ZWQo
RSB7IHN0ZDo6Zm9yd2FyZDxVPih1KSB9ICkpOyB9Ci0vLyB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFz
cyBFID0gc3RkOjpudWxsb3B0X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDx0eXBlbmFtZSBzdGQ6OnJl
c3VsdF9vZjxGPjo6dHlwZSwgRT4gbWFrZUV4cGVjdGVkX2Zyb21fY2FsbChGIGYpOwordGVtcGxh
dGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBl
Y3RlZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA9PSBleHBl
Y3RlZDxULCBFPih5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBF
PiYgeSkgeyByZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQordGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBF
PiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCAhPSBleHBlY3RlZDxULCBF
Pih5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyBy
ZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQogCi1pbmxpbmUgRXhwZWN0ZWQ8dm9pZCwg
c3RkOjpudWxsb3B0X3Q+IG1ha2VFeHBlY3RlZCgpIHsgcmV0dXJuIEV4cGVjdGVkPHZvaWQsIHN0
ZDo6bnVsbG9wdF90PigpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPiB2b2lk
IHN3YXAoZXhwZWN0ZWQ8VCwgRT4mIHgsIGV4cGVjdGVkPFQsIEU+JiB5KSB7IHguc3dhcCh5KTsg
fQogCi19IC8vIG5hbWVzcGFjZSBXVEYKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192MwogCi11c2luZyBXVEY6OkluUGxhY2U7Ci11c2luZyBXVEY6OlVu
ZXhwZWN0ZWQ7Ci11c2luZyBXVEY6Om1ha2VVbmV4cGVjdGVkOwotdXNpbmcgV1RGOjpVbmV4cGVj
dDsKLXVzaW5nIFdURjo6RXhwZWN0ZWQ7Ci11c2luZyBXVEY6Om1ha2VFeHBlY3RlZDsKLXVzaW5n
IFdURjo6bWFrZUV4cGVjdGVkRnJvbUVycm9yOworX19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFCTEUg
Y29uc3RleHByIHN0ZDo6ZXhwZXJpbWVudGFsOjp1bmV4cGVjdGVkX3QmIHVuZXhwZWN0ID0gc3Rk
OjpleHBlcmltZW50YWw6OnVuZXhwZWN0OwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNp
bmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgK
aW5kZXggZjNkY2NiOC4uODA5ZTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTgsNyArNTgsNiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoIHsgdXNpbmcgSGFzaCA9IHZvaWQ7IH07
CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhhc2hUcmFpdHM7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lLi4uPiBjbGFzcyBWYXJpYW50OwotdGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBFeHBl
Y3RlZDsKIHRlbXBsYXRlPHR5cGVuYW1lLCBzaXplX3QgPSAwLCB0eXBlbmFtZSA9IENyYXNoT25P
dmVyZmxvdywgc2l6ZV90ID0gMTYsIHR5cGVuYW1lID0gRmFzdE1hbGxvYz4gY2xhc3MgVmVjdG9y
OwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhh
c2g8VmFsdWU+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8VmFsdWU+PiBjbGFzcyBIYXNo
Q291bnRlZFNldDsKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJn
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsIHR5cGVuYW1l
ID0gSGFzaFRyYWl0czxLZXlBcmc+LCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8TWFwcGVkQXJnPj4g
Y2xhc3MgSGFzaE1hcDsKQEAgLTY2LDEyICs2NSwxOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZUFyZywgdHlwZW5hbWUgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gsIHR5
cAogCiB9CiAKK25hbWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7Citpbmxp
bmUgbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MyB7Cit0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNs
YXNzIGV4cGVjdGVkOwordGVtcGxhdGU8Y2xhc3M+IGNsYXNzIHVuZXhwZWN0ZWQ7Cit9fX0gLy8g
bmFtZXNwYWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjMKKwogdXNpbmcgV1RG
OjpBdG9taWNTdHJpbmc7CiB1c2luZyBXVEY6OkF0b21pY1N0cmluZ0ltcGw7CiB1c2luZyBXVEY6
OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNTdHJpbmc7Ci11c2luZyBXVEY6OkV4cGVjdGVkOwogdXNpbmcgV1RGOjpGdW5jdGlvbjsK
IHVzaW5nIFdURjo6RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpIYXNoQ291bnRlZFNl
dDsKQEAgLTkzLDMgKzk4LDYgQEAgdXNpbmcgV1RGOjpTdHJpbmdWaWV3OwogdXNpbmcgV1RGOjpU
ZXh0UG9zaXRpb247CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2luZyBXVEY6OlZlY3RvcjsKKwor
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1l
bnRhbDo6ZXhwZWN0ZWQ8VCwgRT47Cit0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVk
ID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCBkMDI2
ZTFmLi5kOWU1OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTI4MiwxMCArMjgyLDYgQEAgY29uc3RleHBy
IFUgY29udmVydChVIHYpIHsgcmV0dXJuIHY7IH0KIGNvbnN0ZXhwciBzdHJ1Y3QgdHJpdmlhbF9p
bml0X3R7fSB0cml2aWFsX2luaXR7fTsKIAogCi0vLyAyMC41LjYsIEluLXBsYWNlIGNvbnN0cnVj
dGlvbgotY29uc3RleHByIHN0cnVjdCBpbl9wbGFjZV90e30gaW5fcGxhY2V7fTsKLQotCiAvLyAy
MC41LjcsIERpc2VuZ2FnZWQgc3RhdGUgaW5kaWNhdG9yCiBzdHJ1Y3QgbnVsbG9wdF90CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3Rm
L1N0ZExpYkV4dHJhcy5oCmluZGV4IDEyZTM5M2EuLjdmYTFmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oCkBAIC01MjUsNiArNTI1LDI5IEBAIHRlbXBsYXRlPGNsYXNzIEIwLCBjbGFzcyBCMSwgY2xh
c3MgQjIsIGNsYXNzLi4uIEJuPiBzdHJ1Y3Qgd3RmX2Nvbmp1bmN0aW9uX2ltcGw8CiB0ZW1wbGF0
ZTxjbGFzcy4uLiBfQXJncz4gc3RydWN0IGNvbmp1bmN0aW9uIDogd3RmX2Nvbmp1bmN0aW9uX2lt
cGw8X0FyZ3MuLi4+IHsgfTsKICNlbmRpZgogCisjaWYgX19jcGx1c3BsdXMgPCAyMDE3MDNMCisK
Ky8vIFRoZXNlIGFyZSBpbmxpbmUgdmFyaWFibGUgZm9yIEMrKzE3IGFuZCBsYXRlci4KKyNkZWZp
bmUgX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgc3RhdGljIGNvbnN0CisKK3N0cnVjdCBpbl9w
bGFjZV90IHsKKyAgICBleHBsaWNpdCBpbl9wbGFjZV90KCkgPSBkZWZhdWx0OworfTsKK19fSU5f
UExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBpbl9wbGFjZV90IGluX3BsYWNlIHsgfTsK
KwordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpbl9wbGFjZV90eXBlX3QgeworICAgIGV4cGxp
Y2l0IGluX3BsYWNlX3R5cGVfdCgpID0gZGVmYXVsdDsKK307Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4K
K19fSU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBpbl9wbGFjZV90eXBlX3Q8VD4g
aW5fcGxhY2VfdHlwZSB7IH07CisKK3RlbXBsYXRlIDxzaXplX3QgST4gc3RydWN0IGluX3BsYWNl
X2luZGV4X3QgeworICAgIGV4cGxpY2l0IGluX3BsYWNlX2luZGV4X3QoKSA9IGRlZmF1bHQ7Cit9
OwordGVtcGxhdGUgPHNpemVfdCBJPgorX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgY29uc3Rl
eHByIGluX3BsYWNlX2luZGV4X3Q8ST4gaW5fcGxhY2VfaW5kZXggeyB9OworI2VuZGlmIC8vIF9f
Y3BsdXNwbHVzIDwgMjAxNzAzTAorCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogI2RlZmluZSBXVEZN
b3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oIGIvU291cmNlL1dURi93dGYvVW5l
eHBlY3RlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NTNiM2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVkLmgKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gSW1wbGVtZW50YXRpb24gb2YgTGlicmFyeSBGdW5k
YW1lbnRhbHMgdjMncyBzdGQ6OmV4cGVjdGVkLCBhcyBkZXNjcmliZWQgaGVyZTogaHR0cDovL3dn
MjEubGluay9wMDMyM3I0CisKKyNwcmFnbWEgb25jZQorCisvKgorICAgIHVuZXhwZWN0ZWQgc3lu
b3BzaXMKKworbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKK2lubGlu
ZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKKyAgICAvLyA/Lj8uMywgVW5leHBlY3RlZCBv
YmplY3QgdHlwZQorICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgICAgY2xhc3MgdW5leHBlY3Rl
ZDsKKworICAgIC8vID8uPy40LCBVbmV4cGVjdGVkIHJlbGF0aW9uYWwgb3BlcmF0b3JzCisgICAg
dGVtcGxhdGUgPGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhwciBib29sCisgICAgICAgIG9wZXJh
dG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgICAgY29uc3RleHByIGJvb2wKKyAgICAgICAgb3BlcmF0
b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiwgY29uc3QgdW5leHBlY3RlZDxFPiYpOworCisgICAg
dGVtcGxhdGUgPGNsYXNzIEU+CisgICAgY2xhc3MgdW5leHBlY3RlZCB7CisgICAgcHVibGljOgor
ICAgICAgICB1bmV4cGVjdGVkKCkgPSBkZWxldGU7CisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNp
dCB1bmV4cGVjdGVkKGNvbnN0IEUmKTsKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IHVuZXhw
ZWN0ZWQoRSYmKTsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IEUmIHZhbHVlKCkgY29uc3QgJjsK
KyAgICAgICAgY29uc3RleHByIEUmIHZhbHVlKCkgJjsKKyAgICAgICAgY29uc3RleHByIEUmJiB2
YWx1ZSgpICYmOworICAgICAgICBjb25zdGV4cHIgRSBjb25zdCYmIHZhbHVlKCkgY29uc3QmJjsK
KyAgICBwcml2YXRlOgorICAgICAgICBFIHZhbDsgLy8gZXhwb3NpdGlvbiBvbmx5CisgICAgfTsK
KworfX19CisKKyovCisKKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFj
ZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgeworCit0
ZW1wbGF0ZTxjbGFzcyBFPgorY2xhc3MgdW5leHBlY3RlZCB7CitwdWJsaWM6CisgICAgdW5leHBl
Y3RlZCgpID0gZGVsZXRlOworICAgIGNvbnN0ZXhwciBleHBsaWNpdCB1bmV4cGVjdGVkKGNvbnN0
IEUmIGUpIDogdmFsKGUpIHsgfQorICAgIGNvbnN0ZXhwciBleHBsaWNpdCB1bmV4cGVjdGVkKEUm
JiBlKSA6IHZhbChzdGQ6OmZvcndhcmQ8RT4oZSkpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdCBF
JiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1cm4gdmFsOyB9CisgICAgUkVMQVhFRF9DT05TVEVYUFIg
RSYgdmFsdWUoKSAmIHsgcmV0dXJuIHZhbDsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIEUmJiB2
YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUodmFsKTsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBS
IGNvbnN0IEUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIFdURk1vdmUodmFsKTsgfQorCitw
cml2YXRlOgorICAgIEUgdmFsOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiBsaHMsIGNvbnN0IHVuZXhwZWN0ZWQ8
RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7IH0KK3RlbXBsYXRl
PGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5leHBlY3RlZDxFPiYg
bGhzLCBjb25zdCB1bmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0dXJuIGxocy52YWx1ZSgpICE9IHJo
cy52YWx1ZSgpOyB9CisKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50YWw6OmZ1bmRh
bWVudGFsc192MworCit0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVkID0gc3RkOjpl
eHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CisKKy8vIE5vdCBpbiB0aGUgc3RkOjpleHBlY3Rl
ZCBzcGVjLCBidXQgdXNlZnVsIHRvIHdvcmsgYXJvdW5kIGxhY2sgb2YgQysrMTcgZGVkdWN0aW9u
IGd1aWRlcy4KK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBVbmV4cGVjdGVkPHN0ZDo6ZGVj
YXlfdDxFPj4gbWFrZVVuZXhwZWN0ZWQoRSYmIHYpIHsgcmV0dXJuIFVuZXhwZWN0ZWQ8dHlwZW5h
bWUgc3RkOjpkZWNheTxFPjo6dHlwZT4oc3RkOjpmb3J3YXJkPEU+KHYpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDgxOTFjNjEuLjExMDIxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIwMTct
MTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0
ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB2YXJpb3VzIHVzZXMg
b2YgRXhwZWN0ZWQsIG1vc3RseSByZW5hbWluZyB2YWx1ZU9yIGFuZAorICAgICAgICBoYXNWYWx1
ZSB0byB0aGUgU1RMIG5hbWluZyBjb252ZW50aW9uLgorCisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cmV0cmlldmVSZWNv
cmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVTdG9yYWdlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6
cmVtb3ZlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0YU9y
RXJyb3JGcm9tUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzT3JFcnJvckZyb21S
ZWNvcmRzRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0
V2l0aENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
Z2V0RG9tYWluTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6bG9h
ZFRyaWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkRW5jb2RlZFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVMaXN0KToK
KyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpsb2Fk
QmVzdEZpdEltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOgorICAgICAgICAqIGNzcy9TdHls
ZVJ1bGVJbXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1wb3J0OjpyZXF1
ZXN0U3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL0NhbGxiYWNrUmVzdWx0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBlPjo6dHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBlPjo6cmVsZWFzZVJldHVyblZh
bHVlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBkb20v
RXhjZXB0aW9uT3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFJldHVyblR5cGU+
OjpoYXNFeGNlcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9p
ZD46Omhhc0V4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNr
U3R5bGVTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4
dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oOgorICAgICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUpOgor
ICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpzdGFydFByZWZsaWdodCk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQp
OgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVy
Ojpsb2FkTGluayk6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToK
KyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6
cGFyc2VJUHY0SG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGlu
Zyk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgICog
c3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250
RmFjZVVyaUVsZW1lbnQ6OmxvYWRGb250KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3Vt
ZW50KToKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQpOgorCiAyMDE3LTExLTMwICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgZmlsdGVyIGxvZ2dp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNWVhMjIw
Yi4uNzhmZTAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTQyMCwxMiArNDIwLDEyIEBAIHZvaWQgRE9NQ2FjaGU6OnJldHJpZXZlUmVjb3Jkcyhjb25z
dCBVUkwmIHVybCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8CiAKICAgICBtX2Nv
bm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIHJldHJpZXZlVVJMLCBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQp
IHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihy
ZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRzKFdURk1vdmUo
cmVzdWx0LnZhbHVlKCkpKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIH0KQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIERPTUNhY2hlOjpiYXRjaERlbGV0ZU9w
ZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpbwogICAg
IHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoRGVsZXRl
T3BlcmF0aW9uKG1faWRlbnRpZmllciwgcmVxdWVzdC5pbnRlcm5hbFJlcXVlc3QoKSwgV1RGTW92
ZShvcHRpb25zKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElk
ZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7
Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGVFbmdp
bmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjYWxsYmFjayghcmVzdWx0LnZhbHVlKCkuaXNFbXB0eSgpKTsKQEAg
LTUxMiw3ICs1MTIsNyBAQCB2b2lkIERPTUNhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbihWZWN0b3I8
UmVjb3JkPiYmIHJlY29yZHMsIFdURjo6RnVuY3Rpb248dm9pZChFeAogICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoUHV0T3BlcmF0aW9uKG1faWRl
bnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAo
IW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQ2ZTZm
MmIuLjg1OTk1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlU3RvcmFnZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6
cmV0cmlldmVDYWNoZXMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
PgogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPnJldHJp
ZXZlQ2FjaGVzKG9yaWdpbiwgbV91cGRhdGVDb3VudGVyLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1
ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5l
cnJvcigpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTkx
LDcgKzE5MSw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFt
ZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxECiAgICAgICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgbmFtZSwg
W3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNoZUlkZW50
aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2lzU3Rv
cHBlZCkgewotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJv
cigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBE
T01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPiYKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZShtX2NhY2hlc1twb3NpdGlvbl0tPmlkZW50aWZpZXIo
KSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNoZUlk
ZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2lz
U3RvcHBlZCkgewotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5l
cnJvcigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAppbmRleCAwNjNiNzAyLi4yNjZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVt
b3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdAogICAgICAgICBBU1NFUlQo
bV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CiAKICAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlv
bi0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXShjb25z
dCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjYWNoZUlkZW50aWZpZXIsICFyZXN1bHQuaGFzVmFsdWUoKSB8fCByZXN1
bHQudmFsdWUoKS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGNhY2hlSWRlbnRpZmllciwgIXJlc3VsdC5oYXNfdmFsdWUoKSB8fCByZXN1
bHQudmFsdWUoKS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBt
X3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLAogCiAgICAg
ICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBkYXRl
Q291bnRlciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBy
ZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICAgICAgQ2FjaGVJbmZvc09yRXJyb3IgaXNvbGF0ZWRSZXN1bHQ7Ci0gICAgICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3Zh
bHVlKCkpCiAgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSByZXN1
bHQudmFsdWUoKS5pc29sYXRlZENvcHkoKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgaW5s
aW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29yZHMo
Y29uc3QgVmVjdG9yPAogCiBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVh
ZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMoY29uc3Qg
UmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKIHsKLSAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQor
ICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQocmVzdWx0LmVycm9yKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZHNEYXRhRnJvbVJlY29yZHMo
cmVzdWx0LnZhbHVlKCkpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9y
PFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmRE
YXRhCiAKIHN0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVj
b3Jkc0RhdGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiYm
IHJlY29yZHNEYXRhKQogewotICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzVmFsdWUoKSkKKyAgICBp
ZiAoIXJlY29yZHNEYXRhLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQocmVjb3Jkc0RhdGEuZXJyb3IoKSk7CiAgICAgcmV0dXJuIHJlY29yZHNGcm9tUmVjb3Jkc0Rh
dGEoV1RGTW92ZShyZWNvcmRzRGF0YS52YWx1ZSgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IGVlMDY4ZjYuLmQ2
NjIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlw
dEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlw
dEZldGNoZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShECiAg
ICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SW5p
dGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVs
bHB0cik7CisgICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVz
dFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAKaW5kZXggNTZkZmY2YS4uZWY2MzQwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQ29tcGlsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlVG9CeXRl
Y29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJzLCBVbml2ZXJzYWxBY3Rpb25TZXQmJgog
c3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRp
b25DbGllbnQmIGNsaWVudCwgU3RyaW5nJiYgcnVsZUpTT04pCiB7CiAgICAgYXV0byBydWxlTGlz
dCA9IHBhcnNlUnVsZUxpc3QoV1RGTW92ZShydWxlSlNPTikpOwotICAgIGlmICghcnVsZUxpc3Qu
aGFzVmFsdWUoKSkKKyAgICBpZiAoIXJ1bGVMaXN0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gcnVsZUxpc3QuZXJyb3IoKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+IHBh
cnNlZFJ1bGVMaXN0ID0gV1RGTW92ZShydWxlTGlzdC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcAppbmRleCAxNjYxNGM1Li5jY2RiMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApA
QCAtODYsNyArODYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJy
b3JfY29kZT4gZ2V0U3RyaW5nTGlzdChFeGVjU3RhdGUmIGV4ZWMsCiBzdGF0aWMgRXhwZWN0ZWQ8
VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4gZ2V0RG9tYWluTGlzdChFeGVjU3RhdGUm
IGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBhcnJheU9iamVjdCkKIHsKICAgICBhdXRvIHN0cmluZ3Mg
PSBnZXRTdHJpbmdMaXN0KGV4ZWMsIGFycmF5T2JqZWN0KTsKLSAgICBpZiAoIXN0cmluZ3MuaGFz
VmFsdWUoKSkKKyAgICBpZiAoIXN0cmluZ3MuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBz
dHJpbmdzOwogICAgIGZvciAoYXV0byYgZG9tYWluIDogc3RyaW5ncy52YWx1ZSgpKSB7CiAgICAg
ICAgIC8vIERvbWFpbnMgc2hvdWxkIGJlIHB1bnljb2RlIGVuY29kZWQgbG93ZXIgY2FzZS4KQEAg
LTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2Rl
PiBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTTwogICAgIGNvbnN0IEpTVmFs
dWUgaWZEb21haW5WYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZleGVjLCAiaWYtZG9tYWluIikpOwogICAgIGlmICghc2NvcGUuZXhjZXB0aW9u
KCkgJiYgaWZEb21haW5WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGF1dG8gaWZEb21haW4g
PSBnZXREb21haW5MaXN0KGV4ZWMsIGFzT2JqZWN0KGlmRG9tYWluVmFsdWUpKTsKLSAgICAgICAg
aWYgKCFpZkRvbWFpbi5oYXNWYWx1ZSgpKQorICAgICAgICBpZiAoIWlmRG9tYWluLmhhc192YWx1
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlmRG9tYWluLmVycm9yKCkp
OwogICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3ZlKGlmRG9tYWluLnZhbHVlKCkp
OwogICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTE5MCw3ICsx
OTAsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJp
Z2dlcihFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTTwogICAgICAgICBpZiAodHJpZ2dlci5jb25k
aXRpb25UeXBlICE9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpCiAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVD
b25kaXRpb25zKTsKICAgICAgICAgYXV0byB1bmxlc3NEb21haW4gPSBnZXREb21haW5MaXN0KGV4
ZWMsIGFzT2JqZWN0KHVubGVzc0RvbWFpblZhbHVlKSk7Ci0gICAgICAgIGlmICghdW5sZXNzRG9t
YWluLmhhc1ZhbHVlKCkpCisgICAgICAgIGlmICghdW5sZXNzRG9tYWluLmhhc192YWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHVubGVzc0RvbWFpbi5lcnJvcigpKTsK
ICAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZSh1bmxlc3NEb21haW4udmFsdWUo
KSk7CiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRU
cmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPCiAgICAgICAgIGlmICh0cmlnZ2VyLmNv
bmRpdGlvblR5cGUgIT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSkKICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBs
ZUNvbmRpdGlvbnMpOwogICAgICAgICBhdXRvIGlmVG9wVVJMID0gZ2V0U3RyaW5nTGlzdChleGVj
LCBhc09iamVjdChpZlRvcFVSTFZhbHVlKSk7Ci0gICAgICAgIGlmICghaWZUb3BVUkwuaGFzVmFs
dWUoKSkKKyAgICAgICAgaWYgKCFpZlRvcFVSTC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChpZlRvcFVSTC5lcnJvcigpKTsKICAgICAgICAgdHJpZ2dlci5j
b25kaXRpb25zID0gV1RGTW92ZShpZlRvcFVSTC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHRyaWdn
ZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIEV4cGVj
dGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVj
LCBjb25zdCBKU08KICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9uVHlwZSAhPSBUcmlnZ2Vy
OjpDb25kaXRpb25UeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9ucyk7CiAgICAgICAg
IGF1dG8gdW5sZXNzVG9wVVJMID0gZ2V0U3RyaW5nTGlzdChleGVjLCBhc09iamVjdCh1bmxlc3NU
b3BVUkxWYWx1ZSkpOwotICAgICAgICBpZiAoIXVubGVzc1RvcFVSTC5oYXNWYWx1ZSgpKQorICAg
ICAgICBpZiAoIXVubGVzc1RvcFVSTC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCh1bmxlc3NUb3BVUkwuZXJyb3IoKSk7CiAgICAgICAgIHRyaWdnZXIuY29u
ZGl0aW9ucyA9IFdURk1vdmUodW5sZXNzVG9wVVJMLnZhbHVlKCkpOwogICAgICAgICBpZiAodHJp
Z2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTI4OCwxMSArMjg4LDExIEBAIHN0YXRpYyBF
eHBlY3RlZDxzdGQ6Om9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlv
bihFeGVjU3RhdGUmIGV4CiBzdGF0aWMgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxDb250ZW50RXh0
ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFJ1bGUoRXhlY1N0YXRlJiBleGVjLCBj
b25zdCBKU09iamVjdCYgcnVsZU9iamVjdCkKIHsKICAgICBhdXRvIHRyaWdnZXIgPSBsb2FkVHJp
Z2dlcihleGVjLCBydWxlT2JqZWN0KTsKLSAgICBpZiAoIXRyaWdnZXIuaGFzVmFsdWUoKSkKKyAg
ICBpZiAoIXRyaWdnZXIuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCh0cmlnZ2VyLmVycm9yKCkpOwogCiAgICAgYXV0byBhY3Rpb24gPSBsb2FkQWN0aW9uKGV4ZWMs
IHJ1bGVPYmplY3QpOwotICAgIGlmICghYWN0aW9uLmhhc1ZhbHVlKCkpCisgICAgaWYgKCFhY3Rp
b24uaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhY3Rpb24uZXJy
b3IoKSk7CiAKICAgICBpZiAoYWN0aW9uLnZhbHVlKCkpCkBAIC0zNDAsNyArMzQwLDcgQEAgc3Rh
dGljIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29k
ZT4gbG9hZEVuY29kZWRSdWxlcygKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChD
b250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUnVsZSk7CiAKICAgICAgICAgYXV0byBy
dWxlID0gbG9hZFJ1bGUoZXhlYywgKnJ1bGVPYmplY3QpOwotICAgICAgICBpZiAoIXJ1bGUuaGFz
VmFsdWUoKSkKKyAgICAgICAgaWYgKCFydWxlLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKHJ1bGUuZXJyb3IoKSk7CiAgICAgICAgIGlmIChydWxlLnZhbHVl
KCkpCiAgICAgICAgICAgICBydWxlTGlzdC5hcHBlbmQoKnJ1bGUudmFsdWUoKSk7CkBAIC0zNjQs
NyArMzY0LDcgQEAgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZVJ1bGVMaXN0KFN0cmluZyYmIHIKIAogICAgIHZtID0gbnVsbHB0cjsK
IAotICAgIGlmICghcnVsZUxpc3QuaGFzVmFsdWUoKSkKKyAgICBpZiAoIXJ1bGVMaXN0Lmhhc192
YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocnVsZUxpc3QuZXJyb3IoKSk7
CiAKICAgICBpZiAocnVsZUxpc3QtPmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA4YWNkOWFmLi44MWQ4YTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMSw3ICsxMDEsNyBAQCBD
YWNoZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCBpc1NWRywgYm9vbAogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSksIG9w
dGlvbnMpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKS5jc3MpOwotICAgIG1fY2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZU9y
KG51bGxwdHIpOworICAgIG1fY2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihudWxs
cHRyKTsKICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggYTY4MWI4Yi4uYTk3ZGMyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsNyArMTAzLDcgQEAgc3Rk
OjpwYWlyPENhY2hlZEltYWdlKiwgZmxvYXQ+IENTU0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0Rml0
SW1hZ2UoQ2FjaGVkUmVzb3VyY2UKICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9w
dGlvbnM6Ok1vZGU6OkNvcnMpCiAgICAgICAgICAgICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vzc0Nv
bnRyb2woKmRvY3VtZW50KTsKIAotICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVl
c3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2Nh
Y2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9v
cihudWxscHRyKTsKICAgICAgICAgbV9iZXN0Rml0SW1hZ2VTY2FsZUZhY3RvciA9IGltYWdlLnNj
YWxlRmFjdG9yOwogICAgIH0KICAgICByZXR1cm4geyBtX2NhY2hlZEltYWdlLmdldCgpLCBtX2Jl
c3RGaXRJbWFnZVNjYWxlRmFjdG9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAK
aW5kZXggMzczNjNkMC4uYzE5MWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC03Miw3ICs3Miw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyCiAgICAgICAgICAgICBBU1NF
UlQobG9hZGVyLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nl
c3NDb250cm9sKCpsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9jYWNo
ZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihu
dWxscHRyKTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RG
TW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgfQogICAgIHJldHVybiBtX2Nh
Y2hlZEltYWdlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZUltcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcApp
bmRleCBjMDBmZjJlLi4wNDk4YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlSW1wb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0
LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAoQykgMjAwMi0yMDAzIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5
bGVTaGVldCgpCiAgICAgICAgIHJlcXVlc3Quc2V0T3B0aW9ucyhSZXNvdXJjZUxvYWRlck9wdGlv
bnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpVc2UsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVu
dEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlLCBTa2lw
U2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNl
cnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGlj
eUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQ
b2xpY3k6OkFsbG93Q2FjaGluZykpOwogICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KFdURk1vdmUo
cmVxdWVzdCkpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1
ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVx
dWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmIChtX2NhY2hlZFNoZWV0KSB7CiAgICAg
ICAgIC8vIGlmIHRoZSBpbXBvcnQgcnVsZSBpcyBpc3N1ZWQgZHluYW1pY2FsbHksIHRoZSBzaGVl
dCBtYXkgYmUKICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBwZW5kaW5nIHNoZWV0IGNvdW50
LCBzbyBsZXQgdGhlIGRvYyBrbm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2Fs
bGJhY2tSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxsYmFja1Jlc3VsdC5oCmluZGV4
IDNiZWJmZTEuLjg3OGZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxsYmFj
a1Jlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxsYmFja1Jlc3VsdC5oCkBAIC03
MSwxMiArNzEsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIENhbGxi
YWNrUmVzdWx0PFJldHVyblR5cGU+OjpDYWxsYmFja1Jlc3VsdCgKIAogdGVtcGxhdGU8dHlwZW5h
bWUgUmV0dXJuVHlwZT4gaW5saW5lIENhbGxiYWNrUmVzdWx0VHlwZSBDYWxsYmFja1Jlc3VsdDxS
ZXR1cm5UeXBlPjo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdmFsdWUuaGFzVmFsdWUo
KSA/IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcyA6IG1fdmFsdWUuZXJyb3IoKTsKKyAgICBy
ZXR1cm4gbV92YWx1ZS5oYXNfdmFsdWUoKSA/IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcyA6
IG1fdmFsdWUuZXJyb3IoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5s
aW5lIGF1dG8gQ2FsbGJhY2tSZXN1bHQ8UmV0dXJuVHlwZT46OnJlbGVhc2VSZXR1cm5WYWx1ZSgp
IC0+IFJldHVyblR5cGUmJgogewotICAgIEFTU0VSVChtX3ZhbHVlLmhhc1ZhbHVlKCkpOworICAg
IEFTU0VSVChtX3ZhbHVlLmhhc192YWx1ZSgpKTsKICAgICByZXR1cm4gV1RGTW92ZShtX3ZhbHVl
LnZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODI5NDJiYi4uNDJjYjM0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzA0MSw3ICszMDQxLDcgQEAgVVJMIEVsZW1l
bnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0CiAKIGludCBFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2Vy
KGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFy
c2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwog
fQogCiB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZSkKQEAgLTMwNTEsNyArMzA1MSw3IEBAIHZvaWQg
RWxlbWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgaW50IHZhbHVlCiAKIHVuc2lnbmVkIEVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdy
YWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZv
aWQgRWxlbWVudDo6c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9y
LmgKaW5kZXggZmY5NTUyMi4uNzNjOGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogCi1Db3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTUsNyArOTUsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGU+
IGlubGluZSBFeGNlcHRpb25PcjxSZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBp
bmxpbmUgYm9vbCBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6aGFzRXhjZXB0aW9uKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gIW1fdmFsdWUuaGFzVmFsdWUoKTsKKyAgICByZXR1cm4gIW1fdmFsdWUu
aGFzX3ZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBj
b25zdCBFeGNlcHRpb24mIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpleGNlcHRpb24oKSBjb25z
dApAQCAtMTYwLDcgKzE2MCw3IEBAIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPjo6RXhjZXB0aW9u
T3IoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogCiBpbmxpbmUgYm9vbCBFeGNlcHRpb25Pcjx2b2lk
Pjo6aGFzRXhjZXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fdmFsdWUuaGFzVmFsdWUo
KTsKKyAgICByZXR1cm4gIW1fdmFsdWUuaGFzX3ZhbHVlKCk7CiB9CiAKIGlubGluZSBjb25zdCBF
eGNlcHRpb24mIEV4Y2VwdGlvbk9yPHZvaWQ+OjpleGNlcHRpb24oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCAxNWEyYjE1Li45NWNl
N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApA
QCAtMTU4LDE0ICsxNTgsMTQgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5
bGVTaGVldCgpCiAgICAgICAgICAgICBpZiAobV9pc1hTTCkgewogICAgICAgICAgICAgICAgIGF1
dG8gb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CiAgICAgICAgICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpN
b2RlOjpTYW1lT3JpZ2luOwotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291cmNl
UmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9uc30pLnZhbHVlT3Io
bnVsbHB0cik7CisgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7UmVzb3VyY2VSZXF1ZXN0
KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zfSkudmFsdWVfb3IobnVsbHB0
cik7CiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0KCJjaGFyc2V0Iik7CiAgICAg
ICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBjaGFyc2V0LmlzRW1wdHkoKSA/IGRvY3VtZW50KCku
Y2hhcnNldCgpIDogV1RGTW92ZShjaGFyc2V0KSk7CiAKLSAgICAgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHls
ZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgICAgICAg
ICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBlNWI5MmI0Li4zZDg2YzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE4MDIsNyArMTgwMiw3IEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKQogewogICAgIHVuc2lnbmVkIG9sZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVmZmVjdGl2ZU1h
eExlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3Ro
KHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAg
ICBpZiAob2xkRWZmZWN0aXZlTWF4TGVuZ3RoICE9IGVmZmVjdGl2ZU1heExlbmd0aCgpKQogICAg
ICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKQEAgLTE4MTQsNyArMTgxNCw3IEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlKQogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaW50IG9sZE1p
bkxlbmd0aCA9IG1pbkxlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFs
U2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVf
b3IoLTEpKTsKICAgICBpZiAob2xkTWluTGVuZ3RoICE9IG1pbkxlbmd0aCgpKQogICAgICAgICB1
cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAppbmRleCA5ZDNkY2UzLi4xNTg0MDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MoKQogICAgICAgICByZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjcm9z
c09yaWdpbigpLCBkb2N1bWVudCgpKTsKIAogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTighbV9jYWNoZWRTaGVldCk7Ci0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1
bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92
ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZN
b3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRT
aGVldCkKICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCgqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA2MGY3MDE2Li5k
NzNmOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
QEAgLTIwMiwxMyArMjAyLDEzIEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiAKIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5v
bk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0
TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3Io
LTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBk
YXRlVmFsaWRpdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCAxMGViYjBiLi42Yzg2MTQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDksNyArMjA5LDcgQEAg
RXhwZWN0ZWQ8dW5zaWduZWQsIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yPiBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIoU3RyaW5nVmkKIHsKICAgICBhdXRvIG9wdGlvbmFsU2lnbmVkUmVzdWx0
ID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgaWYgKCFvcHRpb25hbFNpZ25lZFJlc3Vs
dCkKLSAgICAgICAgcmV0dXJuIG9wdGlvbmFsU2lnbmVkUmVzdWx0LmdldFVuZXhwZWN0ZWQoKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUob3B0aW9uYWxTaWduZWRSZXN1
bHQuZXJyb3IoKSkpOwogCiAgICAgaWYgKG9wdGlvbmFsU2lnbmVkUmVzdWx0LnZhbHVlKCkgPCAw
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSFRNTEludGVnZXJQYXJzaW5nRXJyb3I6
Ok5lZ2F0aXZlT3ZlcmZsb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5oCmluZGV4IDI2OWNjNjIuLmRjY2NjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU4LDcgKzE1OCw3IEBAIGlubGluZSB1
bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwgdW5zaWdu
ZWQgZGVmYXVsdFZhbHVlCiBpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRp
dmUoU3RyaW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMCkKIHsK
ICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwot
ICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1Zh
bHVlKS52YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7CisgICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhU
TUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlX29yKGRlZmF1bHRWYWx1ZSk7
CiAgICAgQVNTRVJUKHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwogICAgIHJl
dHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggMTIyZjBkOS4uOTFhYzM5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6
c3RhcnRQcmVmbGlnaHQoKQogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEluaXRpYXRvciht
X2xvYWRlci5vcHRpb25zKCkuaW5pdGlhdG9yKTsKIAogICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7
Ci0gICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShwcmVmbGlnaHRSZXF1ZXN0KSkudmFsdWVP
cihudWxscHRyKTsKKyAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9jdW1lbnQoKS5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHByZWZsaWdodFJlcXVl
c3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgbV9y
ZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCmluZGV4IGFjODg1OTAuLmM4OTQ0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTUzMSw3ICsxNTMxLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAg
IG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0TmF2aWdhdGlvblNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhKG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEpOwogI2VuZGlmCiAKLSAgICBt
X21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3Vy
Y2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICBt
X21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3Vy
Y2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBt
X21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBtX21h
aW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigpID09IENvbnRlbnRFeHRlbnNpb25z
OjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiZjFmYjQ0Li45OTAzZjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAg
ICAgIH0KIAogICAgICAgICBhdXRvIGNhY2hlZFJlc291cmNlID0gbV9kb2N1bWVudC5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKG5ld1JlcXVlc3QpKTsK
LSAgICAgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlLnZhbHVlT3IobnVsbHB0cik7Cisg
ICAgICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZV9vcihudWxscHRyKTsKICAg
ICAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQo
KnRoaXMpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApp
bmRleCBiYmQ0NjRjLi42MjcyNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dCgpCiAgICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLm1fZG9jdW1l
bnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UuZ2V0KCkpOwogICAgICAg
ICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5zZXRBdXRvTG9hZEltYWdlcyhh
dXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdJbWFn
ZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgICAgICBuZXdJbWFnZSA9IGRvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkp
LnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgICAgIC8vIElmIHdlIGRvIG5vdCBoYXZlIGFuIGlt
YWdlIGhlcmUsIGl0IG1lYW5zIHRoYXQgYSBjcm9zcy1zaXRlCiAgICAgICAgIC8vIHZpb2xhdGlv
biBvY2N1cnJlZCwgb3IgdGhhdCB0aGUgaW1hZ2Ugd2FzIGJsb2NrZWQgdmlhIENvbnRlbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBmN2NjNTc5Li4yMDc5ZmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElm
TmVlZGVkKGNvbnN0IExpbgogICAgIGxpbmtSZXF1ZXN0LnNldElzTGlua1ByZWxvYWQoKTsKIAog
ICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjcm9zc09yaWdpbk1v
ZGUsIGRvY3VtZW50KTsKLSAgICBhdXRvIGNhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNh
Y2hlZFJlc291cmNlTG9hZGVyKCkucHJlbG9hZCh0eXBlLnZhbHVlKCksIFdURk1vdmUobGlua1Jl
cXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIGF1dG8gY2FjaGVkTGlua1Jlc291cmNlID0g
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RG
TW92ZShsaW5rUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgaWYgKGNhY2hlZExp
bmtSZXNvdXJjZSAmJiBsb2FkZXIpCiAgICAgICAgIHJldHVybiBjcmVhdGVMaW5rUHJlbG9hZFJl
c291cmNlQ2xpZW50KCpjYWNoZWRMaW5rUmVzb3VyY2UsICpsb2FkZXIsIHR5cGUudmFsdWUoKSk7
CkBAIC0yOTgsNyArMjk4LDcgQEAgYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5r
UmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwKICAgICAgICAgfQog
ICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgICAgIG9wdGlvbnMuY29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OlNraXBQb2xpY3lDaGVjazsKLSAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBk
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVS
TChocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAg
bV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJl
cXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5KSkudmFs
dWVfb3IobnVsbHB0cik7CiAgICAgICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkKICAgICAg
ICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NDFk
OGYxLi40Njc0NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2Fs
aWEgUy5MCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw3ICs4MSw3IEBA
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IE1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlCiAgICAgaWYgKG1fbWVkaWFFbGVtZW50KQogICAgICAg
ICBjYWNoZVJlcXVlc3Quc2V0SW5pdGlhdG9yKCptX21lZGlhRWxlbWVudC5nZXQoKSk7CiAKLSAg
ICBhdXRvIHJlc291cmNlID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0TWVkaWEoV1RGTW92ZShjYWNoZVJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIGF1
dG8gcmVzb3VyY2UgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RN
ZWRpYShXVEZNb3ZlKGNhY2hlUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmICgh
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDgwNDBiNzguLmZmMTQzNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgYm9v
bCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlLCBib29sIGkKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY3VlUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkpLCBvcHRpb25zKTsK
ICAgICBjdWVSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjcm9zc09yaWdpbk1v
ZGUsICpkb2N1bWVudCk7CiAKLSAgICBtX3Jlc291cmNlID0gZG9jdW1lbnQtPmNhY2hlZFJlc291
cmNlTG9hZGVyKCkucmVxdWVzdFRleHRUcmFjayhXVEZNb3ZlKGN1ZVJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOworICAgIG1fcmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1vdmUoY3VlUmVxdWVzdCkpLnZhbHVlX29yKG51bGxw
dHIpOwogICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLmNwcAppbmRleCAyZTA4ZWUyLi4xMmU2MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5j
cHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9h
ZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIKICAgICBmZXRjaE9w
dGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKICAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKG1fdXJsKSksIGZldGNoT3B0aW9ucyk7CiAgICAgcmVxdWVzdC5zZXRJbml0
aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7Ci0gICAgbV9kb2N1
bWVudCA9IGxvYWRlci5yZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVP
cihudWxscHRyKTsKKyAgICBtX2RvY3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChX
VEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9kb2N1bWVudCkK
ICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCAxNWQ0NGY1Li5kODJkM2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5pY29uKTsKIAogICAgIGF1dG8gY2FjaGVk
UmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0SWNvbihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3Vy
Y2UudmFsdWVPcihudWxscHRyKTsKKyAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFs
dWVfb3IobnVsbHB0cik7CiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2Ut
PmFkZENsaWVudCgqdGhpcyk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5jcHAKaW5kZXggNjcyODYxMi4uNmI0Y2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzMTQsMTEgKzIzMTQsMTEgQEAgRXhwZWN0ZWQ8VVJMUGFyc2VyOjpJUHY0QWRk
cmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNlSVAKICAg
ICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5zaXplKCkg
PiA0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90
SVB2NCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYg
KCFpdGVtLmhhc1ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJv
cjo6RmFpbHVyZSkKKyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3Io
KSA9PSBJUHY0UGllY2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCiAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CiAgICAgfQogICAgIGZv
ciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNWYWx1
ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93KQor
ICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVj
ZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CiAgICAgfQogICAgIGlmIChpdGVtcy5zaXpl
KCkgPiAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDk1MTg4Mi4uNTJlYjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291cmNl
TG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0
YSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50
aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywg
RG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0
aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcsIENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZykpOwogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciA9IG1fcGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKTsKLSAgICBtX3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKSA6IG51bGxwdHI7CisgICAgbV9y
ZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocmVx
dWVzdCkpLnZhbHVlX29yKG51bGxwdHIpIDogbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJjZSkK
ICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRl
eCA4NDdhNGY5Li45NzFjODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgLy8gaXMgaW4gYSB1c2VyLWFnZW50IHNo
YWRvdyB0cmVlLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM0OTg+LgogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFdURk1vdmUocmVzb3Vy
Y2VSZXF1ZXN0KSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2Us
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0
aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xp
Y3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKSk7
CiAgICAgaWYgKGF1dG8qIGxvYWRlciA9IG1fcGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKSkKLSAgICAgICAgbV9yZXNvdXJjZSA9IGxvYWRlci0+cmVxdWVzdE1lZGlhKFdU
Rk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgIG1fcmVzb3VyY2UgPSBs
b2FkZXItPnJlcXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsK
IAogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggYzRjOWQw
NS4uM2M3MGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVlc3RJbWFnZVJlc291
cmNlKCkKIAogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVz
dChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYoKSkpLCBvcHRpb25zKTsKICAgICByZXF1ZXN0
LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgbV9jYWNoZWRJbWFnZSA9IGRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVP
cihudWxscHRyKTsKKyAgICBtX2NhY2hlZEltYWdlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRy
KTsKIAogICAgIGlmIChtX2NhY2hlZEltYWdlKQogICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRD
bGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
VXJpRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50
LmNwcAppbmRleCA5ZDc2MTA1Li42MGE5OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6bG9hZEZv
bnQoKQogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIg
PSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAgICAgIENhY2hlZFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJM
KGhyZWYpKSwgb3B0aW9ucyk7CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsK
LSAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIucmVxdWVzdEZvbnQo
V1RGTW92ZShyZXF1ZXN0KSwgaXNTVkdGb250VGFyZ2V0KCp0aGlzKSkudmFsdWVPcihudWxscHRy
KTsKKyAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIucmVxdWVzdEZv
bnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkdGb250VGFyZ2V0KCp0aGlzKSkudmFsdWVfb3IobnVs
bHB0cik7CiAgICAgICAgIGlmIChtX2NhY2hlZEZvbnQpIHsKICAgICAgICAgICAgIG1fY2FjaGVk
Rm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICAgICAgICAgIG1fY2FjaGVkRm9udC0+YmVnaW5M
b2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCmluZGV4IGVlZGY4NjYuLjA1ODgxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVG9yY2gg
TW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UmVuYXRhIEhvZG92YW4gPHJlbmlAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTU5MCw3ICs1OTAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9jdW1l
bnQoKQogICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmln
aW47CiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgUmVzb3VyY2VSZXF1
ZXN0IHsgZXh0ZXJuYWxEb2N1bWVudFVSTCB9LCBvcHRpb25zIH07CiAgICAgICAgIHJlcXVlc3Qu
c2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICAgICAgbV9leHRlcm5hbERvY3VtZW50ID0gZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJl
cXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQgPSBk
b2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNWR0RvY3VtZW50KFdURk1v
dmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9leHRlcm5hbERv
Y3VtZW50KQogICAgICAgICAgICAgbV9leHRlcm5hbERvY3VtZW50LT5hZGRDbGllbnQoKnRoaXMp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAppbmRleCA3YWQzOTk0Li44
NGNhNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBYU0wgaW1wbGVtZW50YXRpb24uCiAg
KgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKIAogICAgIGF1dG8gb3B0aW9ucyA9
IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAg
ICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwotICAgIG1f
Y2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFhTTFN0eWxlU2hlZXQo
e1Jlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwoYWJzSHJlZikpLCBvcHRpb25zfSkudmFsdWVPcihudWxscHRyKTsKKyAgICBtX2NhY2hl
ZFNoZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNv
dXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KGFic0hyZWYpKSwgb3B0aW9uc30pLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgaWYgKG1fY2Fj
aGVkU2hlZXQpIHsKICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDExNWFl
Li45NmU3OWRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGxpYmMr
KyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSB0ZXN0cyBhY2NvcmRpbmcgdG8gbmFtZSBjaGFuZ2VzIGFzIHdlbGwgYXMg
cmVtb3ZhbCBvZgorICAgICAgICBub3ctZ29uZSBBUElzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6
OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3I8PCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6dGVzdFBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisKIDIwMTctMTEtMzAgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gQ2Fubm90IGJ1aWxkIHdpdGhvdXQgSW50ZXJuZXQgY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IGFjODAxNmIuLjNiZDQ4ZDMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTMxLDE2ICsz
MSwyMCBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmV4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2Ugc3Rk
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxPiBzdGQ6Om9zdHJlYW0mIG9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qgc3RkOjpwYWlyPFQwLCBUMT4mIHApCiB7
CiAgICAgcmV0dXJuIG9zIDw8ICcoJyA8PCBwLmZpcnN0IDw8ICIsICIgPDwgcC5zZWNvbmQgPDwg
JyknOwogfQogCituYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2UgZnVu
ZGFtZW50YWxzX3YzIHsKKwogdGVtcGxhdGU8Y2xhc3MgRT4gc3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHUpCiB7CiAgICAgcmV0
dXJuIG9zIDw8IHUudmFsdWUoKTsKQEAgLTQ4LDE5ICs1MiwyMCBAQCB0ZW1wbGF0ZTxjbGFzcyBF
PiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgVW5leHBl
Y3RlZDxFPgogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIGUpCiB7Ci0gICAg
aWYgKGUuaGFzVmFsdWUoKSkKKyAgICBpZiAoZS5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IG9zIDw8IGUudmFsdWUoKTsKICAgICByZXR1cm4gb3MgPDwgZS5lcnJvcigpOwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywg
Y29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIGUpCiB7Ci0gICAgaWYgKGUuaGFzVmFsdWUoKSkKKyAg
ICBpZiAoZS5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG9zIDw8ICIiOwogICAgIHJldHVy
biBvcyA8PCBlLmVycm9yKCk7CiB9CiAKLX0KK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmlt
ZW50YWw6OmZ1bmRhbWVudGFsc192MworCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApA
QCAtMTExLDc5ICsxMTYsNjIgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIGV4cGVjdGVkKQogICAgIHR5
cGVkZWYgRXhwZWN0ZWQ8Zm9vLCBzdGQ6OnN0cmluZz4gRm9vU3RyaW5nOwogICAgIHsKICAgICAg
ICAgYXV0byBlID0gRSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc1ZhbHVlKCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUudmFs
dWUoKSwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShlLnZhbHVlT3IoMy4xNCksIDApOworICAgICAg
ICBFWFBFQ1RfRVEoZS52YWx1ZV9vcigzLjE0KSwgMCk7CiAgICAgfQogICAgIHsKICAgICAgICAg
Y29uc3RleHByIEUgZTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZS5oYXNWYWx1ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoZS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLnZhbHVl
KCksIDApOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCAwKTsKKyAgICAgICAg
RVhQRUNUX0VRKGUudmFsdWVfb3IoMy4xNCksIDApOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1
dG8gZSA9IEUoNDIpOwotICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc1ZhbHVlKCkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUudmFsdWUo
KSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAg
IEVYUEVDVF9FUShlLnZhbHVlX29yKDMuMTQpLCA0Mik7CiAgICAgICAgIGNvbnN0IGF1dG8gZTIo
ZSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShlMi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlMi52YWx1ZSgpLCA0Mik7
Ci0gICAgICAgIEVYUEVDVF9FUShlMi52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAgIEVYUEVD
VF9FUShlMi52YWx1ZV9vcigzLjE0KSwgNDIpOwogICAgICAgICBFIGUzOwogICAgICAgICBlMyA9
IGUyOwotICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoZTMuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZTMudmFsdWUoKSwgNDIp
OwotICAgICAgICBFWFBFQ1RfRVEoZTMudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBFWFBF
Q1RfRVEoZTMudmFsdWVfb3IoMy4xNCksIDQyKTsKICAgICAgICAgY29uc3QgRSBlNCA9IGUyOwot
ICAgICAgICBFWFBFQ1RfVFJVRShlNC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
ZTQuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZTQudmFsdWUoKSwgNDIpOwotICAg
ICAgICBFWFBFQ1RfRVEoZTQudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBFWFBFQ1RfRVEo
ZTQudmFsdWVfb3IoMy4xNCksIDQyKTsKICAgICB9CiAgICAgewogICAgICAgICBjb25zdGV4cHIg
RSBjKDQyKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoYy5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoYy5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShjLnZhbHVlKCksIDQy
KTsKLSAgICAgICAgRVhQRUNUX0VRKGMudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBFWFBF
Q1RfRVEoYy52YWx1ZV9vcigzLjE0KSwgNDIpOwogICAgICAgICBjb25zdGV4cHIgY29uc3QgYXV0
byBjMihjKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoYzIuaGFzVmFsdWUoKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKGMyLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGMyLnZhbHVlKCks
IDQyKTsKLSAgICAgICAgRVhQRUNUX0VRKGMyLnZhbHVlT3IoMy4xNCksIDQyKTsKKyAgICAgICAg
RVhQRUNUX0VRKGMyLnZhbHVlX29yKDMuMTQpLCA0Mik7CiAgICAgfQogICAgIHsKICAgICAgICAg
YXV0byB1ID0gRShtYWtlVW5leHBlY3RlZChvb3BzKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1
Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodS5oYXNfdmFsdWUoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSh1LmVycm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEodS5nZXRV
bmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUSh1LnZhbHVlT3Io
My4xNCksIDMpOworICAgICAgICBFWFBFQ1RfRVEodS52YWx1ZV9vcigzLjE0KSwgMyk7CiAgICAg
fQogICAgIHsKICAgICAgICAgYXV0byB1diA9IEVWKG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsKLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKHV2Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
dXYuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEodXYuZXJyb3IoKSwgb29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9FUSh1di5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0gICAg
ICAgIEVYUEVDVF9FUSh1di52YWx1ZU9yKDMuMTQpLCAzKTsKKyAgICAgICAgRVhQRUNUX0VRKHV2
LnZhbHVlX29yKDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAgICAgICBFIGUgPSBtYWtlVW5l
eHBlY3RlZChvb3BzKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGUuaGFzVmFsdWUoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUShlLmVycm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEoZS5nZXRV
bmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLnZhbHVlT3Io
My4xNCksIDMpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIGF1dG8gZSA9IG1ha2VFeHBlY3RlZEZy
b21FcnJvcjxpbnQsIGNvbnN0IGNoYXIqPihvb3BzKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGUu
aGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc192YWx1ZSgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVu
ZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVPcigz
LjE0KSwgMyk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgYXV0byBlID0gbWFrZUV4cGVjdGVkRnJv
bUVycm9yPGludCwgY29uc3Qgdm9pZCo+KG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5o
YXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAg
IEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQ
RUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMyk7CisgICAgICAgIEVYUEVDVF9FUShlLnZhbHVlX29y
KDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAgICAgICBhdXRvIGUgPSBGb29DaGFyKDQyKTsK
QEAgLTIzNiw1MSArMjI0LDM2IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB2b2lkKQogICAgIHR5cGVk
ZWYgRXhwZWN0ZWQ8dm9pZCwgc3RkOjpzdHJpbmc+IFN0cmluZzsKICAgICB7CiAgICAgICAgIGF1
dG8gZSA9IEUoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoZS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIGNvbnN0IGF1dG8gZTIoZSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShl
Mi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLCBlMik7CiAgICAgICAgIEUgZTM7
CiAgICAgICAgIGUzID0gZTI7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUzLmhhc1ZhbHVlKCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShl
LCBlMyk7CiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3RleHByIEUgYzsKLSAgICAgICAgRVhQ
RUNUX1RSVUUoYy5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYy5oYXNfdmFsdWUo
KSk7CiAgICAgICAgIGNvbnN0ZXhwciBjb25zdCBhdXRvIGMyKGMpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShjMi5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYzIuaGFzX3ZhbHVlKCkp
OwogICAgICAgICBFWFBFQ1RfRVEoYywgYzIpOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8g
dSA9IEUobWFrZVVuZXhwZWN0ZWQob29wcykpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodS5oYXNW
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHUuaGFzX3ZhbHVlKCkpOwogICAgICAgICBF
WFBFQ1RfRVEodS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKHUuZ2V0VW5leHBl
Y3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8gdXYgPSBF
VihtYWtlVW5leHBlY3RlZChvb3BzKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1di5oYXNWYWx1
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHV2Lmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKHV2LmVycm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEodXYuZ2V0VW5leHBl
Y3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0KICAgICB7CiAgICAgICAgIEUgZSA9IG1ha2VV
bmV4cGVjdGVkKG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdl
dFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICB9Ci0gICAgewotICAgICAgICBhdXRv
IGUgPSBtYWtlRXhwZWN0ZWRGcm9tRXJyb3I8dm9pZCwgY29uc3QgY2hhcio+KG9vcHMpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZXJy
b3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgp
LCBvb3BzKTsKLSAgICB9Ci0gICAgewotICAgICAgICBhdXRvIGUgPSBtYWtlRXhwZWN0ZWRGcm9t
RXJyb3I8dm9pZCwgY29uc3Qgdm9pZCo+KG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5o
YXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGUuaGFzX3ZhbHVlKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5l
eHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8gZTAg
PSBFKCk7CkBAIC0zMTIsNyArMjg1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHZvaWQpCiAgICAg
fQogICAgIHsKICAgICAgICAgdHlwZWRlZiBFeHBlY3RlZDxzdGQ6OnBhaXI8aW50LCBpbnQ+LCBz
dGQ6OnN0cmluZz4gRXQ7Ci0gICAgICAgIEVYUEVDVF9FUShFdChXVEY6OkluUGxhY2UsIDEsIDIp
LCBFdChXVEY6OkluUGxhY2UsIDEsIDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKEV0KHN0ZDo6aW5f
cGxhY2UsIDEsIDIpLCBFdChzdGQ6OmluX3BsYWNlLCAxLCAyKSk7CiAgICAgfQogfQogCkBAIC00
NjUsNyArNDM4LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIFJlZikKICAgICB7CiAgICAgICAgIFJl
ZkxvZ2dlciBhKCJhIik7CiAgICAgICAgIEV4cGVjdGVkPFJlZjxSZWZMb2dnZXI+LCBpbnQ+IGV4
cGVjdGVkID0gUmVmPFJlZkxvZ2dlcj4oYSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVk
Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZC5oYXNfdmFsdWUoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZXhwZWN0ZWQudmFsdWUoKS5wdHIoKSk7CiAgICAgfQog
CkBAIC00NzMsOCArNDQ2LDggQEAgVEVTVChXVEZfRXhwZWN0ZWQsIFJlZikKIAogICAgIHsKICAg
ICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKLSAgICAgICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4s
IGludD4gZXhwZWN0ZWQgPSBtYWtlRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4sIGludD4oUmVmPFJl
ZkxvZ2dlcj4oYSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZC5oYXNWYWx1ZSgpKTsK
KyAgICAgICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4sIGludD4gZXhwZWN0ZWQgPSBFeHBlY3Rl
ZDxSZWY8UmVmTG9nZ2VyPiwgaW50PihSZWY8UmVmTG9nZ2VyPihhKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBleHBl
Y3RlZC52YWx1ZSgpLnB0cigpKTsKICAgICB9CiAKQEAgLTQ4Myw3ICs0NTYsNyBAQCBURVNUKFdU
Rl9FeHBlY3RlZCwgUmVmKQogICAgIHsKICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICAg
ICAgRXhwZWN0ZWQ8aW50LCBSZWY8UmVmTG9nZ2VyPj4gZXhwZWN0ZWQgPSBtYWtlVW5leHBlY3Rl
ZChSZWY8UmVmTG9nZ2VyPihhKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShleHBlY3RlZC5oYXNW
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBleHBlY3RlZC5lcnJvcigpLnB0cigpKTsKICAgICB9CiAKQEAg
LTQ5Miw3ICs0NjUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgUmVmKQogICAgIHsKICAgICAgICAg
UmVmTG9nZ2VyIGEoImEiKTsKICAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgUmVmPFJlZkxvZ2dlcj4+
IGV4cGVjdGVkID0gbWFrZVVuZXhwZWN0ZWQoUmVmPFJlZkxvZ2dlcj4oYSkpOwotICAgICAgICBF
WFBFQ1RfRkFMU0UoZXhwZWN0ZWQuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShl
eHBlY3RlZC5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZXhwZWN0ZWQuZXJy
b3IoKS5wdHIoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggMGYxYzAyZC4uNDE4NjA3YSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFy
c2VySWRpb21zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgdGVzdFBhcnNlSFRNTEludGVn
ZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFy
c2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7
Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlv
bmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2Vy
RmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdW5z
aWduZWQgdGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0
KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVy
biBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52
YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
RmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328135</attachid>
            <date>2017-12-01 12:39:46 -0800</date>
            <delta_ts>2017-12-01 13:25:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Update-std-expected-to-match-libc-coding-style.patch</filename>
            <type>text/plain</type>
            <size>126790</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4NmRkMjZiYzU4ZGU1MDBiYjE0MjViNmVmNDRmOTYwM2NjYjhiMGZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDEgRGVjIDIwMTcgMTI6MzQ6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUg
c3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCgotLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCAgICAgICAgICAgIHwgICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCAgICB8ICAxMCAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oICAgICAgICAgICAgfCAg
IDggKy0KIC4uLi93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weSAgICAg
IHwgIDE4ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcCB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDkyICsrKwogU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCA2NTEgKysrKysrKysrKysrKy0tLS0tLS0tCiBTb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogU291cmNl
L1dURi93dGYvT3B0aW9uYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKwog
U291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTcg
KysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA5OCArKysrCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCAgICAg
ICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3Jh
Z2UuY3BwICAgfCAgIDYgKy0KIC4uLi9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcCB8ICAgMiArLQogLi4uL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgfCAgIDQgKy0KIC4uLi9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogU291cmNl
L1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmggICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCAgICAgICAgICAgICAgICAgICB8ICAg
NiArLQogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgICAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAg
ICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgICAg
ICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcCAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgICAgICB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgICAgICAgICAgfCAgIDIgKy0K
IC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCAgICAgICAgICB8
ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCAgICAgICAgICAg
ICAgfCAgIDYgKy0KIC4uLi9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAgIHwgICA0ICstCiAuLi4vYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggICAgICAgIHwgICA4ICstCiBUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArCiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAgICAgICAgICB8IDExNyArKy0tCiAuLi4vVGVz
dHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcCAgICAgICAgICAgICB8ICAgNiArLQogNTMg
ZmlsZXMgY2hhbmdlZCwgOTA3IGluc2VydGlvbnMoKyksIDQzOCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVkLmgKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyZjk0ZjFlLi5hZDgzZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNv
ZGluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHZhcmlvdXMgdXNlcyBvZiBFeHBlY3RlZC4KKworICAgICAgICAqIHdhc20vV2Fz
bU1vZHVsZS5oOgorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpXYXNt
OjpNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQ
YXJzZXI6OnBhcnNlTWVtb3J5SGVscGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21QYXJzZXIuaDoK
KyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weToKKyAg
ICAgICAgKGxvYWRNYWNybyk6CisgICAgICAgIChzdG9yZU1hY3JvKToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5
TW9kdWxlOjpjcmVhdGVTdHViKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1
bGUuaDoKKwogMjAxNy0xMS0zMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNTM2Mi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAppbmRleCBhNmFlMjlmLi5mYTM2YTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC00NSw3ICs0NSw3IEBAIHVz
aW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDMyX3Q7CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBWYWxpZGF0
aW9uUmVzdWx0ID0gV1RGOjpFeHBlY3RlZDxSZWZQdHI8TW9kdWxlPiwgU3RyaW5nPjsKKyAgICB1
c2luZyBWYWxpZGF0aW9uUmVzdWx0ID0gRXhwZWN0ZWQ8UmVmUHRyPE1vZHVsZT4sIFN0cmluZz47
CiAgICAgdHlwZWRlZiB2b2lkIENhbGxiYWNrVHlwZShWYWxpZGF0aW9uUmVzdWx0JiYpOwogICAg
IHVzaW5nIEFzeW5jVmFsaWRhdGlvbkNhbGxiYWNrID0gUmVmUHRyPFNoYXJlZFRhc2s8Q2FsbGJh
Y2tUeXBlPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
b2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBh
cnNlci5jcHAKaW5kZXggMGM3M2QzZi4uYTA5ODc4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTE3OSwxNCArMTc5LDE0IEBAIGF1
dG8gTW9kdWxlUGFyc2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAg
ICAgIGJvb2wgaXNJbXBvcnQgPSB0cnVlOwogICAgICAgICAgICAgUGFydGlhbFJlc3VsdCByZXN1
bHQgPSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WSghcmVzdWx0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmdldFVuZXhwZWN0ZWQo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQu
ZXJyb3IoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
eHRlcm5hbEtpbmQ6Ok1lbW9yeTogewogICAgICAgICAgICAgYm9vbCBpc0ltcG9ydCA9IHRydWU7
CiAgICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNlTWVtb3J5SGVscGVyKGlz
SW1wb3J0KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LmdldFVuZXhwZWN0ZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBFeHRlcm5hbEtpbmQ6Okdsb2JhbDogewpA
QCAtMjYzLDcgKzI2Myw3IEBAIGF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKGJv
b2wgaXNJbXBvcnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtYXhpbXVtOwogICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VSZXNpemFibGVMaW1p
dHMoaW5pdGlhbCwgbWF4aW11bSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaW1pdHMpKQotICAgICAg
ICByZXR1cm4gbGltaXRzLmdldFVuZXhwZWN0ZWQoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKFdURk1vdmUobGltaXRzLmVycm9yKCkpKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KGluaXRpYWwgPiBtYXhUYWJsZUVudHJpZXMsICJUYWJsZSdzIGluaXRpYWwgcGFnZSBjb3VudCBv
ZiAiLCBpbml0aWFsLCAiIGlzIHRvbyBiaWcsIG1heGltdW0gIiwgbWF4VGFibGVFbnRyaWVzKTsK
IAogICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+PSBpbml0aWFsKTsKQEAgLTI4NSw3
ICsyODUsNyBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSgpIC0+IFBhcnRpYWxSZXN1
bHQKICAgICBib29sIGlzSW1wb3J0ID0gZmFsc2U7CiAgICAgUGFydGlhbFJlc3VsdCByZXN1bHQg
PSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
Ci0gICAgICAgIHJldHVybiByZXN1bHQuZ2V0VW5leHBlY3RlZCgpOworICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTMwMyw3ICszMDMsNyBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2VNZW1vcnlI
ZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBtYXhpbXVtOwogICAgICAgICBQYXJ0aWFsUmVzdWx0IGxpbWl0cyA9IHBh
cnNlUmVzaXphYmxlTGltaXRzKGluaXRpYWwsIG1heGltdW0pOwogICAgICAgICBpZiAoVU5MSUtF
TFkoIWxpbWl0cykpCi0gICAgICAgICAgICByZXR1cm4gbGltaXRzLmdldFVuZXhwZWN0ZWQoKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGxpbWl0cy5lcnJvcigp
KSk7CiAgICAgICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+PSBpbml0aWFsKTsKICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighUGFnZUNvdW50Ojppc1ZhbGlkKGluaXRpYWwpLCAi
TWVtb3J5J3MgaW5pdGlhbCBwYWdlIGNvdW50IG9mICIsIGluaXRpYWwsICIgaXMgaW52YWxpZCIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggOTVmNGRiNS4u
M2M3MjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApAQCAtOTcs
MTAgKzk3LDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGZhaWwoX19WQV9BUkdTX18p
OyAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKGhlbHBlcikgZG8geyAgIFwKLSAgICAgICAgYXV0byBoZWxwZXJSZXN1
bHQgPSBoZWxwZXI7ICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChVTkxJS0VMWSghaGVscGVy
UmVzdWx0KSkgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIGhlbHBlclJlc3VsdC5n
ZXRVbmV4cGVjdGVkKCk7IFwKKyNkZWZpbmUgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhoZWxw
ZXIpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBhdXRvIGhlbHBlclJlc3Vs
dCA9IGhlbHBlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChVTkxJS0VMWSghaGVscGVyUmVzdWx0KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGhlbHBlclJlc3Vs
dC5lcnJvcigpKSk7ICAgXAogICAgIH0gd2hpbGUgKDApCiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNI
ZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0
ZUlubGluZXNIZWFkZXIucHkKaW5kZXggMTgwNTNkMy4uYmM1NGEyMiAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVy
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRl
SW5saW5lc0hlYWRlci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgog
Ci0jIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNyArNjMsNyBAQCBkZWYgdW5hcnlN
YWNybyhuYW1lKToKIHRlbXBsYXRlPD4gYXV0byBWYWxpZGF0ZTo6YWRkT3A8T3BUeXBlOjoiIiIg
KyB0b0NwcChuYW1lKSArICIiIj4oRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFJlc3VsdAogewogICAgIGlmIChVTkxJS0VMWSh2YWx1ZSAhPSAiIiIgKyBj
cHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAgICAgICByZXR1cm4gVW5leHBl
Y3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsg
IiIiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVz
dWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgdmFs
dWUgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgcmVzdWx0ID0gIiIiICsgY3BwVHlwZShvcFsicmV0
dXJuIl1bMF0pICsgIiIiOwogICAgIHJldHVybiB7IH07CkBAIC03NywxMCArNzcsMTAgQEAgZGVm
IGJpbmFyeU1hY3JvKG5hbWUpOgogdGVtcGxhdGU8PiBhdXRvIFZhbGlkYXRlOjphZGRPcDxPcFR5
cGU6OiIiIiArIHRvQ3BwKG5hbWUpICsgIiIiPihFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNz
aW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUmVzdWx0CiB7CiAgICAg
aWYgKFVOTElLRUxZKGxlZnQgIT0gIiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVyIl1bMF0pICsg
IiIiKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxp
ZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBsZWZ0IHZhbHVlIHR5cGUgbWlzbWF0Y2gi
KTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRh
dGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgbGVmdCB2YWx1ZSB0eXBlIG1pc21hdGNoIik7
CiAKICAgICBpZiAoVU5MSUtFTFkocmlnaHQgIT0gIiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVy
Il1bMV0pICsgIiIiKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5
cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiByaWdodCB2YWx1ZSB0eXBl
IG1pc21hdGNoIik7CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlw
ZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHJpZ2h0IHZhbHVlIHR5cGUg
bWlzbWF0Y2giKTsKIAogICAgIHJlc3VsdCA9ICIiIiArIGNwcFR5cGUob3BbInJldHVybiJdWzBd
KSArICIiIjsKICAgICByZXR1cm4geyB9OwpAQCAtOTIsNyArOTIsNyBAQCBkZWYgbG9hZE1hY3Jv
KG5hbWUpOgogICAgIHJldHVybiAiIiIKICAgICBjYXNlIExvYWRPcFR5cGU6OiIiIiArIHRvQ3Bw
KG5hbWUpICsgIiIiOiB7CiAgICAgICAgIGlmIChVTkxJS0VMWShwb2ludGVyICE9ICIiIiArIGNw
cFR5cGUob3BbInBhcmFtZXRlciJdWzBdKSArICIiIikpCi0gICAgICAgICAgICByZXR1cm4gVW5l
eHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1l
ICsgIiIiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICAgICAgcmV0dXJuIFVuZXhw
ZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUg
KyAiIiIgcG9pbnRlciB0eXBlIG1pc21hdGNoIik7CiAKICAgICAgICAgcmVzdWx0ID0gIiIiICsg
Y3BwVHlwZShvcFsicmV0dXJuIl1bMF0pICsgIiIiOwogICAgICAgICByZXR1cm4geyB9OwpAQCAt
MTA0LDEwICsxMDQsMTAgQEAgZGVmIHN0b3JlTWFjcm8obmFtZSk6CiAgICAgcmV0dXJuICIiIgog
ICAgIGNhc2UgU3RvcmVPcFR5cGU6OiIiIiArIHRvQ3BwKG5hbWUpICsgIiIiOiB7CiAgICAgICAg
IGlmIChVTkxJS0VMWShwb2ludGVyICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzBd
KSArICIiIikpCi0gICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlw
ZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHBvaW50ZXIgdHlwZSBtaXNt
YXRjaCIpOworICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBl
PigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgcG9pbnRlciB0eXBlIG1pc21h
dGNoIik7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlICE9ICIiIiArIGNwcFR5cGUob3Bb
InBhcmFtZXRlciJdWzFdKSArICIiIikpCi0gICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxS
ZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHZh
bHVlIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3Vs
dDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHZhbHVl
IHR5cGUgbWlzbWF0Y2giKTsKIAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0iIiIKQEAgLTEz
OSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogYXV0byBWYWxp
ZGF0ZTo6bG9hZChMb2FkT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCkgLT4gUmVzdWx0CiB7CiAgICAgaWYgKFVOTElLRUxZ
KCFoYXNNZW1vcnkoKSkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6RXJyb3JU
eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6IGxvYWQgaW5zdHJ1Y3Rpb24gd2l0aG91dCBtZW1vcnki
KTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRh
dGlvbiBmYWlsZWQ6IGxvYWQgaW5zdHJ1Y3Rpb24gd2l0aG91dCBtZW1vcnkiKTsKIAogICAgIHN3
aXRjaCAob3ApIHsKICIiIiArIGxvYWRDYXNlcyArICIiIgpAQCAtMTUwLDcgKzE1MCw3IEBAIGF1
dG8gVmFsaWRhdGU6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsCiBhdXRvIFZhbGlkYXRlOjpzdG9yZShTdG9yZU9wVHlwZSBv
cCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90
KSAtPiBSZXN1bHQKIHsKICAgICBpZiAoVU5MSUtFTFkoIWhhc01lbW9yeSgpKSkKLSAgICAgICAg
cmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDog
c3RvcmUgaW5zdHJ1Y3Rpb24gd2l0aG91dCBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIFVuZXhw
ZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6IHN0b3JlIGluc3Ry
dWN0aW9uIHdpdGhvdXQgbWVtb3J5Iik7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAiIiIgKyBzdG9y
ZUNhc2VzICsgIiIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuY3BwCmluZGV4IDQwYzEwMDYuLjIzZmVmMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5TW9kdWxlOjpz
X2luZm8gPSB7ICJXZWJBc3NlbWJseS5Nb2R1bGUiLCAmQmFzZTo6c19pCiBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVz
dWx0JiYgcmVzdWx0KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgaWYgKCFyZXN1bHQuaGFzX3Zh
bHVlKCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSwgcmVzdWx0LmVycm9yKCkpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4IDAxYjVkMDcuLjhmZWM2
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TW9kdWxlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBjcmVhdGVTdHViKFZNJiwgRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgV1RGOjpFeHBlY3Rl
ZDxSZWZQdHI8V2FzbTo6TW9kdWxlPiwgU3RyaW5nPiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3JlYXRlU3R1YihWTSYsIEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIEV4cGVjdGVkPFJlZlB0cjxXYXNtOjpNb2R1bGU+LCBTdHJpbmc+JiYpOwog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CiAKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxl
SW5mb3JtYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYmM0ZTU1ZS4uODI0NzU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5NSBAQAorMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNvZGluZyBzdHls
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjY0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgb2Yg
aHR0cHM6Ly93ZzIxLmxpbmsvcDAzMjNyNCBzdGQ6OmV4cGVjdGVkIGlzIG9uIGl0cyB3YXkgdG8g
dGhlCisgICAgICAgIExpYnJhcnkgRnVuZGFtZW50YWxzIHYzIFRTIChMRVdHIGFuZCBFV0cgdm90
ZWQgZm9yIHRoaXMsIGJ1dCBMV0cKKyAgICAgICAgaGFzbid0IGRvbmUgd29yZGluZyByZXZpZXcg
eWV0LCBoZW5jZSAib24gaXRzIHdheSIpLiBUaGUgQVBJIGlzCisgICAgICAgIHRoZXJlZm9yZSBw
cmV0dHkgY2xvc2UgdG8gd2hhdCB3aWxsIGJlIGluIHRoZSBUUywgYW5kIEkndmUgZ290dGVuCisg
ICAgICAgIHJlcXVlc3RzIGZvciBhbiBlYXNpbHkgdXNhYmxlIGltcGxlbWVudGF0aW9uIG9mIHN0
ZDo6ZXhwZWN0ZWQuIEkKKyAgICAgICAgdGFsa2VkIHRvIG91ciBjbGFuZyB0ZWFtIGFuZCB0aGV5
J2xsIGhlbHAgbWUgbWlncmF0ZSBvdXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gbGliYysr
LCBidXQgb3VyIGltcGxlbWVudGF0aW9uIGhhcyB0byBsb29rIG1vcmUKKyAgICAgICAgbGlrZSBs
aWJjKysgdGhhbiBpdCBkb2VzIG5vdy4gT25jZSBpbiBsaWJjKysgSSdsbCBtYWludGFpbiBjaGFu
Z2VzCisgICAgICAgIG9uIGJvdGggc2lkZXMgdG8gbWFrZSBzdXJlIG5laXRoZXIgaXMgb3V0LW9m
LWRhdGUgZm9yIHRvbyBsb25nLgorCisgICAgICAgIC0gRm9yayBzdGQ6OnVuZXhwZWN0ZWQgaW50
byBpdHMgb3duIGhlYWRlci4KKyAgICAgICAgLSBBZGQgbWlsZCBzdXBwb3J0IGZvciBhbiBleGNl
cHRpb24tYmFzZWQgaW1wbGVtZW50YXRpb24sIGJ1dAorICAgICAgICAgIGRvbid0IGRvIG5vZXhj
ZXB0IHlldC4KKyAgICAgICAgLSBSZW5hbWUgZXZlcnl0aGluZyB0byBmb2xsb3cgU1RMIHN0eWxl
LCBhbmQga2VlcCBhIGdsb2JhbCB1c2luZworICAgICAgICAgIG9yIHZhcmlhYmxlIGFsaWFzIHdo
ZXJlIHBvc3NpYmxlIHRvIHJlZHVjZSBXZWJLaXQgY29kZSBjaHVybi4KKyAgICAgICAgLSBNaW5v
ciBBUEkgdXBkYXRlcyB0byByZW1vdmUgdGhpbmdzIHRoYXQgYXJlbid0IGluIHRoZSBwcm9wb3Nh
bAorICAgICAgICAgIGFueW1vcmUuCisKKyAgICAgICAgKiB3dGYvRXhwZWN0ZWQuaDoKKyAgICAg
ICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmJhZF9leHBlY3RlZF9hY2Nl
c3M8dm9pZD46OmJhZF9leHBlY3RlZF9hY2Nlc3MpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192Mzo6YmFkX2V4cGVjdGVkX2FjY2Vzczo6YmFkX2V4cGVjdGVkX2Fj
Y2Vzcyk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpiYWRf
ZXhwZWN0ZWRfYWNjZXNzOjplcnJvcik6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVu
ZGFtZW50YWxzX3YzOjpiYWRfZXhwZWN0ZWRfYWNjZXNzOjplcnJvciBjb25zdCk6CisgICAgICAg
IChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpfX2V4cGVjdGVkX2RldGFpbDo6
Y29uc3RleHByX2Jhc2U6OmNvbnN0ZXhwcl9iYXNlKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVu
dGFsOjpmdW5kYW1lbnRhbHNfdjM6Ol9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlOjpiYXNlKToKKyAg
ICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Ol9fZXhwZWN0ZWRfZGV0
YWlsOjpiYXNlOjp+YmFzZSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50
YWxzX3YzOjpleHBlY3RlZDo6ZXhwZWN0ZWQpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6
OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChzdGQ6OmV4
cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6c3dhcCk6CisgICAgICAgIChz
dGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6b3BlcmF0b3ItPiBj
b25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBl
Y3RlZDo6b3BlcmF0b3ItPik6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50
YWxzX3YzOjpleHBlY3RlZDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvciopOgorICAgICAgICAo
c3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Omhhc192YWx1ZSBj
b25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBl
Y3RlZDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVu
dGFsc192Mzo6ZXhwZWN0ZWQ6OnZhbHVlKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpm
dW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjplcnJvciBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4
cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6ZXJyb3IpOgorICAgICAgICAo
c3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6OnZhbHVlX29yIGNv
bnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVj
dGVkOjp2YWx1ZV9vcik6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxz
X3YzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRh
bHNfdjM6Om9wZXJhdG9yIT0pOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVu
dGFsc192Mzo6c3dhcCk6CisgICAgICAgIChXVEY6OlVuZXhwZWN0ZWQ6OlVuZXhwZWN0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpVbmV4cGVjdGVkOjp2YWx1ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlVuZXhwZWN0ZWQ6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjptYWtlVW5leHBlY3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OkV4cGVjdGVkRGV0YWlsOjpUaHJvdyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVj
dGVkRGV0YWlsOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRh
aWw6OnN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6Q29uc3RleHByQmFzZTo6Q29uc3RleHByQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkRGV0YWlsOjpCYXNlOjpCYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRhaWw6OkJhc2U6On5CYXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OkV4cGVjdGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4
cGVjdGVkOjpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJhdG9y
LT4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3BlcmF0b3ItPik6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvciogY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpFeHBlY3RlZDo6aGFzVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpFeHBlY3RlZDo6dmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3Rl
ZDo6dmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6ZXJyb3IgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6ZXJyb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpFeHBlY3RlZDo6Z2V0VW5leHBlY3RlZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OkV4cGVjdGVkOjp2YWx1ZU9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6RXhwZWN0ZWQ6OnZhbHVlT3IpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzd2FwKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6bWFrZUV4cGVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bWFrZUV4cGVjdGVkRnJvbUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9PcHRpb25hbC5oOgorICAgICAgICAqIHd0Zi9TdGRMaWJFeHRy
YXMuaDoKKyAgICAgICAgKiB3dGYvVW5leHBlY3RlZC5oOiBBZGRlZC4KKyAgICAgICAgKHN0ZDo6
ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OnVuZXhwZWN0ZWQ6OnVuZXhwZWN0ZWQpOgor
ICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6dW5leHBlY3RlZDo6
dmFsdWUgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192
Mzo6dW5leHBlY3RlZDo6dmFsdWUpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRh
bWVudGFsc192Mzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVu
ZGFtZW50YWxzX3YzOjpvcGVyYXRvciE9KToKKyAgICAgICAgKG1ha2VVbmV4cGVjdGVkKToKKwog
MjAxNy0xMS0zMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNTM2Mi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0V4cGVjdGVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCmluZGV4IDcy
OGI0MTMuLjU4MWU0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKKysr
IGIvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaApAQCAtMjMsMTcxICsyMywzMzAgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBXVEY6OkV4cGVjdGVkIGlz
IGJhc2VkIG9uIHN0ZDo6ZXhwZWN0ZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiBodHRwOi8vd2cyMS5s
aW5rL3AwMzIzcjEKLS8vIFRoZSBzcGVjaWZpY2F0aW9uIGV4cGVjdHMgdG8gdGhyb3cuIFRoaXMg
aW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0IGV4Y2VwdGlvbnMsIHVzZXMgUkVMRUFTRV9B
U1NFUlQgaW5zdGVhZC4KKy8vIEltcGxlbWVudGF0aW9uIG9mIExpYnJhcnkgRnVuZGFtZW50YWxz
IHYzJ3Mgc3RkOjpleHBlY3RlZCwgYXMgZGVzY3JpYmVkIGhlcmU6IGh0dHA6Ly93ZzIxLmxpbmsv
cDAzMjNyNAogCiAjcHJhZ21hIG9uY2UKIAorLyoKKyAgICBleHBlY3RlZCBzeW5vcHNpcworCitu
YW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFjZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFj
ZSBmdW5kYW1lbnRhbHNfdjMgeworICAgIC8vID8uPy40LCBFeHBlY3RlZCBmb3Igb2JqZWN0IHR5
cGVzCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICAgIGNsYXNzIGV4cGVj
dGVkOworCisgICAgLy8gPy4/LjUsIEV4cGVjdGVkIHNwZWNpYWxpemF0aW9uIGZvciB2b2lkCisg
ICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgICAgIGNsYXNzIGV4cGVjdGVkPHZvaWQsRT47CisK
KyAgICAvLyA/Lj8uNiwgdW5leHBlY3QgdGFnCisgICAgc3RydWN0IHVuZXhwZWN0X3QgeworICAg
ICAgIHVuZXhwZWN0X3QoKSA9IGRlZmF1bHQ7CisgICAgfTsKKyAgICBpbmxpbmUgY29uc3RleHBy
IHVuZXhwZWN0X3QgdW5leHBlY3R7fTsKKworICAgIC8vID8uPy43LCBjbGFzcyBiYWRfZXhwZWN0
ZWRfYWNjZXNzCisgICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgICAgY2xhc3MgYmFkX2V4cGVj
dGVkX2FjY2VzczsKKworICAgIC8vID8uPy44LCBTcGVjaWFsaXphdGlvbiBmb3Igdm9pZC4KKyAg
ICB0ZW1wbGF0ZSA8PgorICAgICAgIGNsYXNzIGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD47CisK
KyAgICAvLyA/Lj8uOSwgRXhwZWN0ZWQgcmVsYXRpb25hbCBvcGVyYXRvcnMKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCBleHBlY3RlZDxULCBFPiYpOworCisgICAgLy8g
Py4/LjEwLCBDb21wYXJpc29uIHdpdGggVAorICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBF
PgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYs
IGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiwgY29uc3QgVCYpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBULCBjbGFzcyBFPgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
JiwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mKTsKKworICAgIC8vID8uPy4xMCwgQ29tcGFyaXNvbiB3
aXRoIHVuZXhwZWN0ZWQ8RT4KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAg
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCB1
bmV4cGVjdGVkPEU+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mLCBjb25zdCBleHBl
Y3RlZDxULCBFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IHVuZXhw
ZWN0ZWQ8RT4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IGV4cGVjdGVk
PFQsIEU+Jik7CisKKyAgICAvLyA/Lj8uMTEsIFNwZWNpYWxpemVkIGFsZ29yaXRobXMKKyAgICB2
b2lkIHN3YXAoZXhwZWN0ZWQ8VCwgRT4mLCBleHBlY3RlZDxULCBFPiYpIG5vZXhjZXB0KHNlZSBi
ZWxvdyk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICBjbGFzcyBleHBl
Y3RlZAorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwor
ICAgICAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICAgICAgdHlwZWRlZiB1bmV4cGVjdGVk
PEU+IHVuZXhwZWN0ZWRfdHlwZTsKKyAgICAKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Cisg
ICAgICAgICAgICBzdHJ1Y3QgcmViaW5kIHsKKyAgICAgICAgICAgIHVzaW5nIHR5cGUgPSBleHBl
Y3RlZDxVLCBlcnJvcl90eXBlPjsKKyAgICAgICAgICB9OworICAgIAorICAgICAgICAvLyA/Lj8u
NC4xLCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgY29uc3RleHByIGV4cGVjdGVkKCk7CisgICAgICAg
IGNvbnN0ZXhwciBleHBlY3RlZChjb25zdCBleHBlY3RlZCYpOworICAgICAgICBjb25zdGV4cHIg
ZXhwZWN0ZWQoZXhwZWN0ZWQmJikgbm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICAgICAgdGVtcGxh
dGUgPGNsYXNzIFUsIGNsYXNzIEc+CisgICAgICAgICAgICBFWFBMSUNJVCBjb25zdGV4cHIgZXhw
ZWN0ZWQoY29uc3QgZXhwZWN0ZWQ8VSwgRz4mKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUs
IGNsYXNzIEc+CisgICAgICAgICAgICBFWFBMSUNJVCBjb25zdGV4cHIgZXhwZWN0ZWQoZXhwZWN0
ZWQ8VSwgRz4mJik7CisgICAgCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVID0gVD4KKyAgICAg
ICAgICAgIEVYUExJQ0lUIGNvbnN0ZXhwciBleHBlY3RlZChVJiYgdik7CisgICAgCisgICAgICAg
IHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAgY29uc3RleHByIGV4cGxpY2l0
IGV4cGVjdGVkKGluX3BsYWNlX3QsIEFyZ3MmJi4uLik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFz
cyBVLCBjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IGV4cGVj
dGVkKGluX3BsYWNlX3QsIGluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7CisgICAgICAg
IHRlbXBsYXRlIDxjbGFzcyBHID0gRT4KKyAgICAgICAgICAgIGNvbnN0ZXhwciBleHBlY3RlZCh1
bmV4cGVjdGVkPEc+IGNvbnN0Jik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBHID0gRT4KKyAg
ICAgICAgICAgIGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkPEc+ICYmKTsKKyAgICAgICAg
dGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQg
ZXhwZWN0ZWQodW5leHBlY3RfdCwgQXJncyYmLi4uKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNz
IFUsIGNsYXNzLi4uIEFyZ3M+CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0
ZWQodW5leHBlY3RfdCwgaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICAKKyAg
ICAgICAgLy8gPy4/LjQuMiwgZGVzdHJ1Y3RvcgorICAgICAgICB+ZXhwZWN0ZWQoKTsKKyAgICAK
KyAgICAgICAgLy8gPy4/LjQuMywgYXNzaWdubWVudAorICAgICAgICBleHBlY3RlZCYgb3BlcmF0
b3I9KGNvbnN0IGV4cGVjdGVkJik7CisgICAgICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oZXhwZWN0
ZWQmJikgbm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUgPSBU
PiBleHBlY3RlZCYgb3BlcmF0b3I9KFUmJik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBHID0g
RT4KKyAgICAgICAgICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgdW5leHBlY3RlZDxHPiYp
OworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBleHBlY3RlZCYg
b3BlcmF0b3I9KHVuZXhwZWN0ZWQ8Rz4mJikgbm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICAKKyAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgICAgICAgICAgICB2b2lkIGVtcGxhY2Uo
QXJncyYmLi4uKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+Cisg
ICAgICAgICAgICB2b2lkIGVtcGxhY2UoaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsK
KyAgICAKKyAgICAgICAgLy8gPy4/LjQuNCwgc3dhcAorICAgICAgICB2b2lkIHN3YXAoZXhwZWN0
ZWQmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworICAgIAorICAgICAgICAvLyA/Lj8uNC41LCBvYnNl
cnZlcnMKKyAgICAgICAgY29uc3RleHByIGNvbnN0IFQqIG9wZXJhdG9yIC0+KCkgY29uc3Q7Cisg
ICAgICAgIGNvbnN0ZXhwciBUKiBvcGVyYXRvciAtPigpOworICAgICAgICBjb25zdGV4cHIgY29u
c3QgVCYgb3BlcmF0b3IgKigpIGNvbnN0JjsKKyAgICAgICAgY29uc3RleHByIFQmIG9wZXJhdG9y
ICooKSAmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgVCYmIG9wZXJhdG9yICooKSBjb25zdCAm
JjsKKyAgICAgICAgY29uc3RleHByIFQmJiBvcGVyYXRvciAqKCkgJiY7CisgICAgICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQ7CisgICAgICAgIGNv
bnN0ZXhwciBib29sIGhhc192YWx1ZSgpIGNvbnN0IG5vZXhjZXB0OworICAgICAgICBjb25zdGV4
cHIgY29uc3QgVCYgdmFsdWUoKSBjb25zdCY7CisgICAgICAgIGNvbnN0ZXhwciBUJiB2YWx1ZSgp
ICY7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUJiYgdmFsdWUoKSBjb25zdCAmJjsKKyAgICAg
ICAgY29uc3RleHByIFQmJiB2YWx1ZSgpICYmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgRSYg
ZXJyb3IoKSBjb25zdCY7CisgICAgICAgIGNvbnN0ZXhwciBFJiBlcnJvcigpICY7CisgICAgICAg
IGNvbnN0ZXhwciBjb25zdCBFJiYgZXJyb3IoKSBjb25zdCAmJjsKKyAgICAgICAgY29uc3RleHBy
IEUmJiBlcnJvcigpICYmOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICAgICAgICAg
IGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJikgY29uc3QmOworICAgICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVT4KKyAgICAgICAgICAgIFQgdmFsdWVfb3IoVSYmKSAmJjsKKyAgICAKKyAgICBwcml2YXRl
OgorICAgICAgICBib29sIGhhc192YWw7IC8vIGV4cG9zaXRpb24gb25seQorICAgICAgICB1bmlv
bgorICAgICAgICB7CisgICAgICAgICAgICB2YWx1ZV90eXBlIHZhbDsgLy8gZXhwb3NpdGlvbiBv
bmx5CisgICAgICAgICAgICB1bmV4cGVjdGVkX3R5cGUgdW5leHBlY3Q7IC8vIGV4cG9zaXRpb24g
b25seQorICAgICAgICB9OworICAgIH07CisKK319fQorCisqLworCiAjaW5jbHVkZSA8Y3N0ZGxp
Yj4KICNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuZXhwZWN0ZWQuaD4KIAotbmFtZXNw
YWNlIFdURiB7CisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRVhDRVBUSU9OUykKKyNkZWZpbmUgX19F
WFBFQ1RFRF9USFJPVyhfX2V4Y2VwdGlvbikgKHRocm93IF9fZXhjZXB0aW9uKQorI2Vsc2UKKyNk
ZWZpbmUgX19FWFBFQ1RFRF9USFJPVyhfX2V4Y2VwdGlvbikgKCh2b2lkKShfX2V4Y2VwdGlvbiks
IENSQVNIKCkpCisjZW5kaWYKIAotdGVtcGxhdGU8Y2xhc3MgRT4KLWNsYXNzIFVuZXhwZWN0ZWQg
ewotcHVibGljOgotICAgIFVuZXhwZWN0ZWQoKSA9IGRlbGV0ZTsKLSAgICBjb25zdGV4cHIgZXhw
bGljaXQgVW5leHBlY3RlZChjb25zdCBFJiBlKSA6IHZhbChlKSB7IH0KLSAgICBjb25zdGV4cHIg
ZXhwbGljaXQgVW5leHBlY3RlZChFJiYgZSkgOiB2YWwoc3RkOjpmb3J3YXJkPEU+KGUpKSB7IH0K
LSAgICBjb25zdGV4cHIgY29uc3QgRSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIHZhbDsgfQot
ICAgIFJFTEFYRURfQ09OU1RFWFBSIEUmIHZhbHVlKCkgJiB7IHJldHVybiB2YWw7IH0KLSAgICBS
RUxBWEVEX0NPTlNURVhQUiBFJiYgdmFsdWUoKSAmJiB7IHJldHVybiBXVEZNb3ZlKHZhbCk7IH0K
K25hbWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7CitpbmxpbmUgbmFtZXNw
YWNlIGZ1bmRhbWVudGFsc192MyB7CiAKLXByaXZhdGU6Ci0gICAgRSB2YWw7CitzdHJ1Y3QgdW5l
eHBlY3RlZF90IHsKKyAgICB1bmV4cGVjdGVkX3QoKSA9IGRlZmF1bHQ7CiB9OworI2lmIF9fY3Bs
dXNwbHVzIDwgMjAxNzAzTAorI2RlZmluZSBfX0VYUEVDVEVEX0lOTElORV9WQVJJQUJMRSBzdGF0
aWMgY29uc3QKKyNlbHNlCisjZGVmaW5lIF9fRVhQRUNURURfSU5MSU5FX1ZBUklBQkxFIGlubGlu
ZQorI2VuZGlmCiAKLXRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCBVbmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0
dXJuIGxocy52YWx1ZSgpID09IHJocy52YWx1ZSgpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBFPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIGxocywgY29uc3QgVW5l
eHBlY3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSAhPSByaHMudmFsdWUoKTsgfQor
X19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFCTEUgY29uc3RleHByIHVuZXhwZWN0ZWRfdCB1bmV4cGVj
dCB7IH07CiAKLXRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBVbmV4cGVjdGVkPHN0ZDo6ZGVj
YXlfdDxFPj4gbWFrZVVuZXhwZWN0ZWQoRSYmIHYpIHsgcmV0dXJuIFVuZXhwZWN0ZWQ8dHlwZW5h
bWUgc3RkOjpkZWNheTxFPjo6dHlwZT4oc3RkOjpmb3J3YXJkPEU+KHYpKTsgfQordGVtcGxhdGU8
Y2xhc3MgRT4gY2xhc3MgYmFkX2V4cGVjdGVkX2FjY2VzczsKIAotc3RydWN0IFVuZXhwZWN0VGFn
IHsKLSAgICBVbmV4cGVjdFRhZygpID0gZGVmYXVsdDsKK3RlbXBsYXRlPD4KK2NsYXNzIGJhZF9l
eHBlY3RlZF9hY2Nlc3M8dm9pZD4gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24geworcHVibGljOgor
ICAgIGV4cGxpY2l0IGJhZF9leHBlY3RlZF9hY2Nlc3MoKSB7IH0KIH07Ci1jb25zdGV4cHIgVW5l
eHBlY3RUYWcgVW5leHBlY3QgeyB9OyAvLyBGSVhNRSBUaGlzIGlzIGFuIGlubGluZSB2YXJpYWJs
ZSBmb3IgQysrMTcgYW5kIGxhdGVyLgogCi0vLyBGSVhNRSB0aGlzIHNob3VsZCBqdXN0IGJlIHN0
ZDo6aW5fcGxhY2VfdCB3aGljaCB3ZSBhbHNvIGRlZmluZSBpbiBvcHRpb25hbCBhbmQgdmFyaWFu
dC4KLXN0cnVjdCBJblBsYWNlVGFnIHsKLSAgICBJblBsYWNlVGFnKCkgPSBkZWZhdWx0OwotfTsK
LWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OwordGVtcGxhdGU8Y2xhc3MgRT4KK2Ns
YXNzIGJhZF9leHBlY3RlZF9hY2Nlc3MgOiBwdWJsaWMgYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lk
PiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgYmFkX2V4cGVjdGVkX2FjY2VzcyhFIHZhbCkgOiB2
YWwodmFsKSB7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBub2V4Y2Vw
dCBvdmVycmlkZSB7IHJldHVybiBzdGQ6OmV4Y2VwdGlvbjo6d2hhdCgpOyB9CisgICAgRSYgZXJy
b3IoKSAmIHsgcmV0dXJuIHZhbDsgfQorICAgIGNvbnN0IEUmIGVycm9yKCkgY29uc3QmIHsgcmV0
dXJuIHZhbDsgfQorICAgIEUmJiBlcnJvcigpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSh2YWwpOyB9
CisgICAgY29uc3QgRSYmICBlcnJvcigpIGNvbnN0JiYgeyByZXR1cm4gc3RkOjptb3ZlKHZhbCk7
IH0KIAotbmFtZXNwYWNlIEV4cGVjdGVkRGV0YWlsIHsKK3ByaXZhdGU6CisgICAgRSB2YWw7Cit9
OwogCi0vLyBJbnZva2VkIHdoZXJlIHN0ZDo6RXhwZWN0ZWQgd291bGQgaW5zdGVhZCB0aHJvdy4K
LWlubGluZSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgVGhyb3coKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KK25hbWVzcGFjZSBfX2V4cGVjdGVkX2RldGFpbCB7CiAKLXN0
YXRpYyBjb25zdGV4cHIgZW51bSBjbGFzcyBWYWx1ZVRhZ1R5cGUgeyB9IFZhbHVlVGFnIHsgfTsK
LXN0YXRpYyBjb25zdGV4cHIgZW51bSBjbGFzcyBFcnJvclRhZ1R5cGUgeyB9IEVycm9yVGFnIHsg
fTsKK19fRVhQRUNURURfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBlbnVtIGNsYXNzIHZhbHVl
X3RhZ190IHsgfSB2YWx1ZV90YWcgeyB9OworX19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFCTEUgY29u
c3RleHByIGVudW0gY2xhc3MgZXJyb3JfdGFnX3QgeyB9IGVycm9yX3RhZyB7IH07CiAKIHRlbXBs
YXRlPGNsYXNzIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4gdm9pZCBkZXN0cm95KFQmKSB7IH0KIHRlbXBsYXRl
PGNsYXNzIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxUPjo6dmFsdWUgJiYgKHN0ZDo6aXNfY2xhc3M8VD46OnZhbHVlIHx8IHN0ZDo6aXNfdW5pb248
VD46OnZhbHVlKT4qID0gbnVsbHB0cj4gdm9pZCBkZXN0cm95KFQmIHQpIHsgdC5+VCgpOyB9CiAK
IHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci11bmlvbiBDb25zdGV4cHJTdG9yYWdlIHsKLSAg
ICB0eXBlZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAgdHlw
ZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwordW5pb24gY29uc3RleHByX3N0b3Jh
Z2UgeworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBlcnJvcl90eXBl
OworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CiAgICAgY2hhciBk
dW1teTsKLSAgICBWYWx1ZVR5cGUgdmFsOwotICAgIEVycm9yVHlwZSBlcnI7Ci0gICAgY29uc3Rl
eHByIENvbnN0ZXhwclN0b3JhZ2UoKSA6IGR1bW15KCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0
ZXhwclN0b3JhZ2UoVmFsdWVUYWdUeXBlKSA6IHZhbCgpIHsgfQotICAgIGNvbnN0ZXhwciBDb25z
dGV4cHJTdG9yYWdlKEVycm9yVGFnVHlwZSkgOiBlcnIoKSB7IH0KLSAgICBjb25zdGV4cHIgQ29u
c3RleHByU3RvcmFnZShWYWx1ZVRhZ1R5cGUsIGNvbnN0IFZhbHVlVHlwZSYgdikgOiB2YWwodikg
eyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBjb25zdCBF
cnJvclR5cGUmIGUpIDogZXJyKGUpIHsgfQotICAgIH5Db25zdGV4cHJTdG9yYWdlKCkgPSBkZWZh
dWx0OworICAgIHZhbHVlX3R5cGUgdmFsOworICAgIGVycm9yX3R5cGUgZXJyOworICAgIGNvbnN0
ZXhwciBjb25zdGV4cHJfc3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KKyAgICBjb25zdGV4cHIgY29u
c3RleHByX3N0b3JhZ2UodmFsdWVfdGFnX3QpIDogdmFsKCkgeyB9CisgICAgY29uc3RleHByIGNv
bnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQorICAgIGNvbnN0ZXhwciBj
b25zdGV4cHJfc3RvcmFnZSh2YWx1ZV90YWdfdCwgY29uc3QgdmFsdWVfdHlwZSYgdikgOiB2YWwo
dikgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190LCBjb25z
dCBlcnJvcl90eXBlJiBlKSA6IGVycihlKSB7IH0KKyAgICB+Y29uc3RleHByX3N0b3JhZ2UoKSA9
IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgotdW5pb24gU3RvcmFn
ZSB7Ci0gICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOwot
ICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3VuaW9uIHN0b3JhZ2Ug
eworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOwor
ICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CiAgICAgY2hhciBkdW1t
eTsKLSAgICBWYWx1ZVR5cGUgdmFsOwotICAgIEVycm9yVHlwZSBlcnI7Ci0gICAgY29uc3RleHBy
IFN0b3JhZ2UoKSA6IGR1bW15KCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoVmFsdWVUYWdU
eXBlKSA6IHZhbCgpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSkgOiBl
cnIoKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShWYWx1ZVRhZ1R5cGUsIGNvbnN0IFZhbHVl
VHlwZSYgdmFsKSA6IHZhbCh2YWwpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKFZhbHVlVGFn
VHlwZSwgVmFsdWVUeXBlJiYgdmFsKSA6IHZhbChzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWwp
KSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUsIGNvbnN0IEVycm9yVHlw
ZSYgZXJyKSA6IGVycihlcnIpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlw
ZSwgRXJyb3JUeXBlJiYgZXJyKSA6IGVycihzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSB7
IH0KLSAgICB+U3RvcmFnZSgpIHsgfQorICAgIHZhbHVlX3R5cGUgdmFsOworICAgIGVycm9yX3R5
cGUgZXJyOworICAgIGNvbnN0ZXhwciBzdG9yYWdlKCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0
ZXhwciBzdG9yYWdlKHZhbHVlX3RhZ190KSA6IHZhbCgpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9y
YWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKHZhbHVl
X3RhZ190LCBjb25zdCB2YWx1ZV90eXBlJiB2YWwpIDogdmFsKHZhbCkgeyB9CisgICAgY29uc3Rl
eHByIHN0b3JhZ2UodmFsdWVfdGFnX3QsIHZhbHVlX3R5cGUmJiB2YWwpIDogdmFsKHN0ZDo6Zm9y
d2FyZDx2YWx1ZV90eXBlPih2YWwpKSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90
YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IGVycihlcnIpIHsgfQorICAgIGNvbnN0ZXhw
ciBzdG9yYWdlKGVycm9yX3RhZ190LCBlcnJvcl90eXBlJiYgZXJyKSA6IGVycihzdGQ6OmZvcndh
cmQ8ZXJyb3JfdHlwZT4oZXJyKSkgeyB9CisgICAgfnN0b3JhZ2UoKSB7IH0KIH07CiAKIHRlbXBs
YXRlPGNsYXNzIEU+Ci11bmlvbiBDb25zdGV4cHJTdG9yYWdlPHZvaWQsIEU+IHsKLSAgICB0eXBl
ZGVmIHZvaWQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAgdHlwZWRl
ZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwordW5pb24gY29uc3RleHByX3N0b3JhZ2U8
dm9pZCwgRT4geworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBl
cnJvcl90eXBlOworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CiAg
ICAgY2hhciBkdW1teTsKLSAgICBFcnJvclR5cGUgZXJyOwotICAgIGNvbnN0ZXhwciBDb25zdGV4
cHJTdG9yYWdlKCkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdl
KFZhbHVlVGFnVHlwZSkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9y
YWdlKEVycm9yVGFnVHlwZSkgOiBlcnIoKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByU3Rv
cmFnZShFcnJvclRhZ1R5cGUsIGNvbnN0IEVycm9yVHlwZSYgZSkgOiBlcnIoZSkgeyB9Ci0gICAg
fkNvbnN0ZXhwclN0b3JhZ2UoKSA9IGRlZmF1bHQ7CisgICAgZXJyb3JfdHlwZSBlcnI7CisgICAg
Y29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0ZXhw
ciBjb25zdGV4cHJfc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0
ZXhwciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7IH0KKyAgICBjb25z
dGV4cHIgY29uc3RleHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVycm9yX3R5cGUmIGUp
IDogZXJyKGUpIHsgfQorICAgIH5jb25zdGV4cHJfc3RvcmFnZSgpID0gZGVmYXVsdDsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEU+Ci11bmlvbiBTdG9yYWdlPHZvaWQsIEU+IHsKLSAgICB0eXBlZGVm
IHZvaWQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAgdHlwZWRlZiBV
bmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwordW5pb24gc3RvcmFnZTx2b2lkLCBFPiB7Cisg
ICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7Cisg
ICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAgICBjaGFyIGR1bW15
OwotICAgIEVycm9yVHlwZSBlcnI7Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoKSA6IGR1bW15KCkg
eyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoVmFsdWVUYWdUeXBlKSA6IGR1bW15KCkgeyB9Ci0g
ICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlKSA6IGVycigpIHsgfQotICAgIGNvbnN0
ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSwgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogZXJyKGVy
cikgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBFcnJvclR5cGUmJiBl
cnIpIDogZXJyKHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+KGVycikpIHsgfQotICAgIH5TdG9yYWdl
KCkgeyB9CisgICAgZXJyb3JfdHlwZSBlcnI7CisgICAgY29uc3RleHByIHN0b3JhZ2UoKSA6IGR1
bW15KCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UodmFsdWVfdGFnX3QpIDogZHVtbXkoKSB7
IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7IH0KKyAgICBj
b25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IGVy
cihlcnIpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKGVycm9yX3RhZ190LCBlcnJvcl90eXBl
JiYgZXJyKSA6IGVycihzdGQ6OmZvcndhcmQ8ZXJyb3JfdHlwZT4oZXJyKSkgeyB9CisgICAgfnN0
b3JhZ2UoKSB7IH0KIH07CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci1zdHJ1Y3QgQ29u
c3RleHByQmFzZSB7Ci0gICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJy
b3JUeXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKLSAgICBD
b25zdGV4cHJTdG9yYWdlPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiBzOworc3RydWN0IGNvbnN0ZXhw
cl9iYXNlIHsKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3Jf
dHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOworICAgIGNv
bnN0ZXhwcl9zdG9yYWdlPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9vbCBoYXM7
Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAg
IGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKFZhbHVlVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMo
dHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdUeXBlIHRhZykg
OiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoVmFs
dWVUYWdUeXBlIHRhZywgY29uc3QgVmFsdWVUeXBlJiB2YWwpIDogcyh0YWcsIHZhbCksIGhhcyh0
cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBj
b25zdCBFcnJvclR5cGUmIGVycikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KLSAgICB+
Q29uc3RleHByQmFzZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2Uo
KSA6IHMoKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSh2YWx1
ZV90YWdfdCB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0
ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9CisgICAg
Y29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKHZhbHVlX3RhZ190IHRhZywgY29uc3QgdmFsdWVfdHlw
ZSYgdmFsKSA6IHModGFnLCB2YWwpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0
ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZywgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IHModGFn
LCBlcnIpLCBoYXMoZmFsc2UpIHsgfQorICAgIH5jb25zdGV4cHJfYmFzZSgpID0gZGVmYXVsdDsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci1zdHJ1Y3QgQmFzZSB7Ci0gICAgdHlw
ZWRlZiBUIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOwotICAgIHR5cGVkZWYg
VW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKLSAgICBTdG9yYWdlPFZhbHVlVHlwZSwgRXJy
b3JUeXBlPiBzOworc3RydWN0IGJhc2UgeworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAg
IHR5cGVkZWYgRSBlcnJvcl90eXBlOworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVj
dGVkX3R5cGU7CisgICAgc3RvcmFnZTx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiBzOwogICAgIGJv
b2wgaGFzOwotICAgIGNvbnN0ZXhwciBCYXNlKCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KLSAgICBj
b25zdGV4cHIgQmFzZShWYWx1ZVRhZ1R5cGUgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQot
ICAgIGNvbnN0ZXhwciBCYXNlKEVycm9yVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2Up
IHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKFZhbHVlVGFnVHlwZSB0YWcsIGNvbnN0IFZhbHVlVHlw
ZSYgdmFsKSA6IHModGFnLCB2YWwpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2Uo
VmFsdWVUYWdUeXBlIHRhZywgVmFsdWVUeXBlJiYgdmFsKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8
VmFsdWVUeXBlPih2YWwpKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKEVycm9y
VGFnVHlwZSB0YWcsIGNvbnN0IEVycm9yVHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFs
c2UpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKEVycm9yVGFnVHlwZSB0YWcsIEVycm9yVHlwZSYm
IGVycikgOiBzKHRhZywgc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyKSksIGhhcyhmYWxzZSkg
eyB9Ci0gICAgQmFzZShjb25zdCBCYXNlJiBvKQorICAgIGNvbnN0ZXhwciBiYXNlKCkgOiBzKCks
IGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZSh2YWx1ZV90YWdfdCB0YWcpIDogcyh0
YWcpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UoZXJyb3JfdGFnX3QgdGFnKSA6
IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZSh2YWx1ZV90YWdfdCB0
YWcsIGNvbnN0IHZhbHVlX3R5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRydWUpIHsgfQor
ICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZywgdmFsdWVfdHlwZSYmIHZhbCkgOiBz
KHRhZywgc3RkOjpmb3J3YXJkPHZhbHVlX3R5cGU+KHZhbCkpLCBoYXModHJ1ZSkgeyB9CisgICAg
Y29uc3RleHByIGJhc2UoZXJyb3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDog
cyh0YWcsIGVyciksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UoZXJyb3JfdGFn
X3QgdGFnLCBlcnJvcl90eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8ZXJyb3JfdHlw
ZT4oZXJyKSksIGhhcyhmYWxzZSkgeyB9CisgICAgYmFzZShjb25zdCBiYXNlJiBvKQogICAgICAg
ICA6IGhhcyhvLmhhcykKICAgICB7CiAgICAgICAgIGlmIChoYXMpCi0gICAgICAgICAgICA6Om5l
dyAoJnMudmFsKSBWYWx1ZVR5cGUoby5zLnZhbCk7CisgICAgICAgICAgICA6Om5ldyAoJnMudmFs
KSB2YWx1ZV90eXBlKG8ucy52YWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICA6Om5ldyAo
JnMuZXJyKSBFcnJvclR5cGUoby5zLmVycik7CisgICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBl
cnJvcl90eXBlKG8ucy5lcnIpOwogICAgIH0KLSAgICBCYXNlKEJhc2UmJiBvKQorICAgIGJhc2Uo
YmFzZSYmIG8pCiAgICAgICAgIDogaGFzKG8uaGFzKQogICAgIHsKICAgICAgICAgaWYgKGhhcykK
LSAgICAgICAgICAgIDo6bmV3ICgmcy52YWwpIFZhbHVlVHlwZShXVEZNb3ZlKG8ucy52YWwpKTsK
KyAgICAgICAgICAgIDo6bmV3ICgmcy52YWwpIHZhbHVlX3R5cGUoc3RkOjptb3ZlKG8ucy52YWwp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgOjpuZXcgKCZzLmVycikgRXJyb3JUeXBlKFdU
Rk1vdmUoby5zLmVycikpOworICAgICAgICAgICAgOjpuZXcgKCZzLmVycikgZXJyb3JfdHlwZShz
dGQ6Om1vdmUoby5zLmVycikpOwogICAgIH0KLSAgICB+QmFzZSgpCisgICAgfmJhc2UoKQogICAg
IHsKICAgICAgICAgaWYgKGhhcykKICAgICAgICAgICAgIGRlc3Ryb3kocy52YWwpOwpAQCAtMTk3
LDQ1ICszNTYsNDUgQEAgc3RydWN0IEJhc2UgewogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRT4KLXN0
cnVjdCBDb25zdGV4cHJCYXNlPHZvaWQsIEU+IHsKLSAgICB0eXBlZGVmIHZvaWQgVmFsdWVUeXBl
OwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVu
ZXhwZWN0ZWRUeXBlOwotICAgIENvbnN0ZXhwclN0b3JhZ2U8VmFsdWVUeXBlLCBFcnJvclR5cGU+
IHM7CitzdHJ1Y3QgY29uc3RleHByX2Jhc2U8dm9pZCwgRT4geworICAgIHR5cGVkZWYgdm9pZCB2
YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOworICAgIHR5cGVkZWYgdW5leHBl
Y3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CisgICAgY29uc3RleHByX3N0b3JhZ2U8dmFsdWVfdHlw
ZSwgZXJyb3JfdHlwZT4gczsKICAgICBib29sIGhhczsKLSAgICBjb25zdGV4cHIgQ29uc3RleHBy
QmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2Uo
VmFsdWVUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIg
Q29uc3RleHByQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0K
LSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBjb25zdCBFcnJv
clR5cGUmIGVycikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIg
Q29uc3RleHByQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBFcnJvclR5cGUmJiBlcnIpIDogcyh0YWcs
IHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQotICAgIH5Db25z
dGV4cHJCYXNlKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSgpIDog
cygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKHZhbHVlX3Rh
Z190IHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHBy
X2Jhc2UoZXJyb3JfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25z
dGV4cHIgY29uc3RleHByX2Jhc2UoZXJyb3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBl
cnIpIDogcyh0YWcsIGVyciksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhw
cl9iYXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVycikgOiBzKHRhZywgc3RkOjpm
b3J3YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQorICAgIH5jb25zdGV4cHJf
YmFzZSgpID0gZGVmYXVsdDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEU+Ci1zdHJ1Y3QgQmFzZTx2
b2lkLCBFPiB7Ci0gICAgdHlwZWRlZiB2b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJy
b3JUeXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKLSAgICBT
dG9yYWdlPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiBzOworc3RydWN0IGJhc2U8dm9pZCwgRT4gewor
ICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOwor
ICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CisgICAgc3RvcmFnZTx2
YWx1ZV90eXBlLCBlcnJvcl90eXBlPiBzOwogICAgIGJvb2wgaGFzOwotICAgIGNvbnN0ZXhwciBC
YXNlKCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShWYWx1ZVRhZ1R5
cGUgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKEVycm9y
VGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNl
KEVycm9yVGFnVHlwZSB0YWcsIGNvbnN0IEVycm9yVHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBo
YXMoZmFsc2UpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKEVycm9yVGFnVHlwZSB0YWcsIEVycm9y
VHlwZSYmIGVycikgOiBzKHRhZywgc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyKSksIGhhcyhm
YWxzZSkgeyB9Ci0gICAgQmFzZShjb25zdCBCYXNlJiBvKQorICAgIGNvbnN0ZXhwciBiYXNlKCkg
OiBzKCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZSh2YWx1ZV90YWdfdCB0YWcp
IDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UoZXJyb3JfdGFnX3Qg
dGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90
YWdfdCB0YWcsIGNvbnN0IGVycm9yX3R5cGUmIGVycikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNl
KSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcsIGVycm9yX3R5cGUmJiBl
cnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBlPihlcnIpKSwgaGFzKGZhbHNlKSB7
IH0KKyAgICBiYXNlKGNvbnN0IGJhc2UmIG8pCiAgICAgICAgIDogaGFzKG8uaGFzKQogICAgIHsK
ICAgICAgICAgaWYgKCFoYXMpCi0gICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBFcnJvclR5cGUo
by5zLmVycik7CisgICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBlcnJvcl90eXBlKG8ucy5lcnIp
OwogICAgIH0KLSAgICBCYXNlKEJhc2UmJiBvKQorICAgIGJhc2UoYmFzZSYmIG8pCiAgICAgICAg
IDogaGFzKG8uaGFzKQogICAgIHsKICAgICAgICAgaWYgKCFoYXMpCi0gICAgICAgICAgICA6Om5l
dyAoJnMuZXJyKSBFcnJvclR5cGUoV1RGTW92ZShvLnMuZXJyKSk7CisgICAgICAgICAgICA6Om5l
dyAoJnMuZXJyKSBlcnJvcl90eXBlKHN0ZDo6bW92ZShvLnMuZXJyKSk7CiAgICAgfQotICAgIH5C
YXNlKCkKKyAgICB+YmFzZSgpCiAgICAgewogICAgICAgICBpZiAoIWhhcykKICAgICAgICAgICAg
IGRlc3Ryb3kocy5lcnIpOwpAQCAtMjQzLDE5MyArNDAyLDE3NSBAQCBzdHJ1Y3QgQmFzZTx2b2lk
LCBFPiB7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgotdXNpbmcgQmFzZVNlbGVj
dCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8Cit1c2luZyBiYXNlX3NlbGVjdCA9IHR5cGVu
YW1lIHN0ZDo6Y29uZGl0aW9uYWw8CiAgICAgKChzdGQ6OmlzX3ZvaWQ8VD46OnZhbHVlIHx8IHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCiAgICAgICAgICYmIHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxFPjo6dmFsdWUpLAotICAgIENvbnN0ZXhwckJhc2U8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2NvbnN0PEU+Ojp0eXBlPiwKLSAgICBCYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+
Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxFPjo6dHlwZT4KKyAgICBjb25zdGV4
cHJfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSwgdHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3Q8RT46OnR5cGU+LAorICAgIGJhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y29uc3Q8VD46OnR5cGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PEU+Ojp0eXBlPgogPjo6
dHlwZTsKIAotfSAvLyBuYW1lc3BhY2UgRXhwZWN0ZWREZXRhaWwKK30gLy8gbmFtZXNwYWNlIF9f
ZXhwZWN0ZWRfZGV0YWlsCiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci1jbGFzcyBFeHBl
Y3RlZCA6IHByaXZhdGUgRXhwZWN0ZWREZXRhaWw6OkJhc2VTZWxlY3Q8VCwgRT4gewotICAgIHR5
cGVkZWYgRXhwZWN0ZWREZXRhaWw6OkJhc2VTZWxlY3Q8VCwgRT4gYmFzZTsKK2NsYXNzIGV4cGVj
dGVkIDogcHJpdmF0ZSBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9zZWxlY3Q8VCwgRT4geworICAg
IHR5cGVkZWYgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2VsZWN0PFQsIEU+IGJhc2U7CiAKIHB1
YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlZhbHVlVHlwZSBWYWx1ZVR5cGU7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpFcnJvclR5cGUgRXJyb3JUeXBlOwotICAgIHR5cGVk
ZWYgdHlwZW5hbWUgYmFzZTo6VW5leHBlY3RlZFR5cGUgVW5leHBlY3RlZFR5cGU7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBiYXNlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBiYXNlOjplcnJvcl90eXBlIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBiYXNlOjp1bmV4cGVjdGVkX3R5cGUgdW5leHBlY3RlZF90eXBlOwogCiBwcml2YXRlOgotICAg
IHR5cGVkZWYgRXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHR5cGU7CisgICAgdHlwZWRl
ZiBleHBlY3RlZDx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiB0eXBlOwogCiBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgVT4gc3RydWN0IHJlYmluZCB7Ci0gICAgICAgIHVzaW5nIHR5cGUgPSBF
eHBlY3RlZDxVLCBFcnJvclR5cGU+OworICAgICAgICB1c2luZyB0eXBlID0gZXhwZWN0ZWQ8VSwg
ZXJyb3JfdHlwZT47CiAgICAgfTsKIAotICAgIGNvbnN0ZXhwciBFeHBlY3RlZCgpIDogYmFzZShF
eHBlY3RlZERldGFpbDo6VmFsdWVUYWcpIHsgfQotICAgIEV4cGVjdGVkKGNvbnN0IEV4cGVjdGVk
JikgPSBkZWZhdWx0OwotICAgIEV4cGVjdGVkKEV4cGVjdGVkJiYpID0gZGVmYXVsdDsKLQotICAg
IGNvbnN0ZXhwciBFeHBlY3RlZChjb25zdCBWYWx1ZVR5cGUmIGUpIDogYmFzZShFeHBlY3RlZERl
dGFpbDo6VmFsdWVUYWcsIGUpIHsgfQotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChWYWx1ZVR5cGUm
JiBlKSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnLCBzdGQ6OmZvcndhcmQ8VmFsdWVU
eXBlPihlKSkgeyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxp
Y2l0IEV4cGVjdGVkKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2UoRXhwZWN0ZWRE
ZXRhaWw6OlZhbHVlVGFnLCBWYWx1ZVR5cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkg
eyB9Ci0gICAgLy8gdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4
cGxpY2l0IEV4cGVjdGVkKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJn
cyYmLi4uKTsKLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoY29uc3QgVW5leHBlY3RlZFR5cGUmIHUp
IDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUoKSkgeyB9Ci0gICAgY29u
c3RleHByIEV4cGVjdGVkKFVuZXhwZWN0ZWRUeXBlJiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWls
OjpFcnJvclRhZywgc3RkOjpmb3J3YXJkPFVuZXhwZWN0ZWRUeXBlPih1KS52YWx1ZSgpKSB7IH0K
LSAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBFeHBlY3RlZChjb25zdCBVbmV4cGVj
dGVkPEVycj4mIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUoKSkg
eyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3Rl
ZDxFcnI+JiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgc3RkOjpmb3J3YXJk
PEVycj4odS52YWx1ZSgpKSkgeyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4gY29uc3Rl
eHByIGV4cGxpY2l0IEV4cGVjdGVkKFVuZXhwZWN0VGFnLCBBcmdzJiYuLi4gYXJncykgOiBiYXNl
KEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZywgVW5leHBlY3RlZFR5cGUoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSkgeyB9Ci0gICAgLy8gdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJn
cz4gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKFVuZXhwZWN0VGFnLCBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7Ci0KLSAgICB+RXhwZWN0ZWQoKSA9IGRlZmF1bHQ7Ci0K
LSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IEV4cGVjdGVkJiBlKSB7IHR5cGUoZSkuc3dh
cCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oRXhwZWN0
ZWQmJiBlKSB7IHR5cGUoV1RGTW92ZShlKSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQot
ICAgIHRlbXBsYXRlPGNsYXNzIFU+IEV4cGVjdGVkJiBvcGVyYXRvcj0oVSYmIHUpIHsgdHlwZShX
VEZNb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9w
ZXJhdG9yPShjb25zdCBVbmV4cGVjdGVkVHlwZSYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyBy
ZXR1cm4gKnRoaXM7IH0KLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KFVuZXhwZWN0ZWRUeXBlJiYg
dSkgeyB0eXBlKFdURk1vdmUodSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBj
b25zdGV4cHIgZXhwZWN0ZWQoKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZhbHVlX3RhZykg
eyB9CisgICAgZXhwZWN0ZWQoY29uc3QgZXhwZWN0ZWQmKSA9IGRlZmF1bHQ7CisgICAgZXhwZWN0
ZWQoZXhwZWN0ZWQmJikgPSBkZWZhdWx0OworCisgICAgY29uc3RleHByIGV4cGVjdGVkKGNvbnN0
IHZhbHVlX3R5cGUmIGUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFsdWVfdGFnLCBlKSB7
IH0KKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQodmFsdWVfdHlwZSYmIGUpIDogYmFzZShfX2V4cGVj
dGVkX2RldGFpbDo6dmFsdWVfdGFnLCBzdGQ6OmZvcndhcmQ8dmFsdWVfdHlwZT4oZSkpIHsgfQor
ICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZChz
dGQ6OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6
OnZhbHVlX3RhZywgdmFsdWVfdHlwZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0K
KyAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGlj
aXQgZXhwZWN0ZWQoaW5fcGxhY2VfdCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYu
Li4pOworICAgIGNvbnN0ZXhwciBleHBlY3RlZChjb25zdCB1bmV4cGVjdGVkX3R5cGUmIHUpIDog
YmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1LnZhbHVlKCkpIHsgfQorICAgIGNv
bnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkX3R5cGUmJiB1KSA6IGJhc2UoX19leHBlY3RlZF9k
ZXRhaWw6OmVycm9yX3RhZywgc3RkOjpmb3J3YXJkPHVuZXhwZWN0ZWRfdHlwZT4odSkudmFsdWUo
KSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3Qg
dW5leHBlY3RlZDxFcnI+JiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3RhZywg
dS52YWx1ZSgpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBleHBlY3Rl
ZCh1bmV4cGVjdGVkPEVycj4mJiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3Rh
Zywgc3RkOjpmb3J3YXJkPEVycj4odS52YWx1ZSgpKSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3Mu
Li4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKHVuZXhwZWN0ZWRfdCwgQXJncyYm
Li4uIGFyZ3MpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFsdWVfdGFnLCB1bmV4cGVjdGVk
X3R5cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisgICAgLy8gdGVtcGxhdGU8
Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKHVuZXhw
ZWN0ZWRfdCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworCisgICAgfmV4
cGVjdGVkKCkgPSBkZWZhdWx0OworCisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBleHBl
Y3RlZCYgZSkgeyB0eXBlKGUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBleHBl
Y3RlZCYgb3BlcmF0b3I9KGV4cGVjdGVkJiYgZSkgeyB0eXBlKHN0ZDo6bW92ZShlKSkuc3dhcCgq
dGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFU+IGV4cGVjdGVkJiBv
cGVyYXRvcj0oVSYmIHUpIHsgdHlwZShzdGQ6Om1vdmUodSkpLnN3YXAoKnRoaXMpOyByZXR1cm4g
KnRoaXM7IH0KKyAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IHVuZXhwZWN0ZWRfdHlwZSYg
dSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBleHBlY3RlZCYg
b3BlcmF0b3I9KHVuZXhwZWN0ZWRfdHlwZSYmIHUpIHsgdHlwZShzdGQ6Om1vdmUodSkpLnN3YXAo
KnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KICAgICAvLyB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiB2
b2lkIGVtcGxhY2UoQXJncyYmLi4uKTsKICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiB2b2lkIGVtcGxhY2Uoc3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4p
OwogCi0gICAgdm9pZCBzd2FwKEV4cGVjdGVkJiBvKQorICAgIHZvaWQgc3dhcChleHBlY3RlZCYg
bykKICAgICB7CiAgICAgICAgIHVzaW5nIHN0ZDo6c3dhcDsKICAgICAgICAgaWYgKGJhc2U6Omhh
cyAmJiBvLmhhcykKICAgICAgICAgICAgIHN3YXAoYmFzZTo6cy52YWwsIG8ucy52YWwpOwogICAg
ICAgICBlbHNlIGlmIChiYXNlOjpoYXMgJiYgIW8uaGFzKSB7Ci0gICAgICAgICAgICBFcnJvclR5
cGUgZShXVEZNb3ZlKG8ucy5lcnIpKTsKLSAgICAgICAgICAgIEV4cGVjdGVkRGV0YWlsOjpkZXN0
cm95KG8ucy5lcnIpOwotICAgICAgICAgICAgOjpuZXcgKCZvLnMudmFsKSBWYWx1ZVR5cGUoV1RG
TW92ZShiYXNlOjpzLnZhbCkpOwotICAgICAgICAgICAgRXhwZWN0ZWREZXRhaWw6OmRlc3Ryb3ko
YmFzZTo6cy52YWwpOwotICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLmVycikgRXJyb3JUeXBl
KFdURk1vdmUoZSkpOworICAgICAgICAgICAgZXJyb3JfdHlwZSBlKHN0ZDo6bW92ZShvLnMuZXJy
KSk7CisgICAgICAgICAgICBfX2V4cGVjdGVkX2RldGFpbDo6ZGVzdHJveShvLnMuZXJyKTsKKyAg
ICAgICAgICAgIDo6bmV3ICgmby5zLnZhbCkgdmFsdWVfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy52
YWwpKTsKKyAgICAgICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KGJhc2U6OnMudmFs
KTsKKyAgICAgICAgICAgIDo6bmV3ICgmYmFzZTo6cy5lcnIpIGVycm9yX3R5cGUoc3RkOjptb3Zl
KGUpKTsKICAgICAgICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIWJhc2U6OmhhcyAmJiBvLmhhcykgewotICAgICAgICAgICAgVmFsdWVUeXBlIHYoV1RG
TW92ZShvLnMudmFsKSk7Ci0gICAgICAgICAgICBFeHBlY3RlZERldGFpbDo6ZGVzdHJveShvLnMu
dmFsKTsKLSAgICAgICAgICAgIDo6bmV3ICgmby5zLmVycikgRXJyb3JUeXBlKFdURk1vdmUoYmFz
ZTo6cy5lcnIpKTsKLSAgICAgICAgICAgIEV4cGVjdGVkRGV0YWlsOjpkZXN0cm95KGJhc2U6OnMu
ZXJyKTsKLSAgICAgICAgICAgIDo6bmV3ICgmYmFzZTo6cy52YWwpIFZhbHVlVHlwZShXVEZNb3Zl
KHYpKTsKKyAgICAgICAgICAgIHZhbHVlX3R5cGUgdihzdGQ6Om1vdmUoby5zLnZhbCkpOworICAg
ICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRlc3Ryb3koby5zLnZhbCk7CisgICAgICAgICAg
ICA6Om5ldyAoJm8ucy5lcnIpIGVycm9yX3R5cGUoc3RkOjptb3ZlKGJhc2U6OnMuZXJyKSk7Cisg
ICAgICAgICAgICBfX2V4cGVjdGVkX2RldGFpbDo6ZGVzdHJveShiYXNlOjpzLmVycik7CisgICAg
ICAgICAgICA6Om5ldyAoJmJhc2U6OnMudmFsKSB2YWx1ZV90eXBlKHN0ZDo6bW92ZSh2KSk7CiAg
ICAgICAgICAgICBzd2FwKGJhc2U6Omhhcywgby5oYXMpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHN3YXAoYmFzZTo6cy5lcnIsIG8ucy5lcnIpOwogICAgIH0KIAotICAgIGNvbnN0ZXhw
ciBjb25zdCBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmYmFzZTo6cy52
YWw7IH0KLSAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmYmFzZTo6cy52YWw7
IH0KLSAgICBjb25zdGV4cHIgY29uc3QgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCAmIHsg
cmV0dXJuIGJhc2U6OnMudmFsOyB9Ci0gICAgVmFsdWVUeXBlJiBvcGVyYXRvciooKSAmIHsgcmV0
dXJuIGJhc2U6OnMudmFsOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IFZhbHVlVHlwZSYmIG9wZXJh
dG9yKigpIGNvbnN0ICYmIHsgcmV0dXJuIFdURk1vdmUoYmFzZTo6cy52YWwpOyB9Ci0gICAgUkVM
QVhFRF9DT05TVEVYUFIgVmFsdWVUeXBlJiYgb3BlcmF0b3IqKCkgJiYgeyByZXR1cm4gV1RGTW92
ZShiYXNlOjpzLnZhbCk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSogb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuICZiYXNlOjpzLnZhbDsgfQorICAgIHZhbHVlX3R5cGUqIG9w
ZXJhdG9yLT4oKSB7IHJldHVybiAmYmFzZTo6cy52YWw7IH0KKyAgICBjb25zdGV4cHIgY29uc3Qg
dmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQor
ICAgIHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpICYgeyByZXR1cm4gYmFzZTo6cy52YWw7IH0KKyAg
ICBjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYmIG9wZXJhdG9yKigpIGNvbnN0ICYmIHsgcmV0
dXJuIHN0ZDo6bW92ZShiYXNlOjpzLnZhbCk7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiB2YWx1
ZV90eXBlJiYgb3BlcmF0b3IqKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKGJhc2U6OnMudmFsKTsg
fQogICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
YmFzZTo6aGFzOyB9Ci0gICAgY29uc3RleHByIGJvb2wgaGFzVmFsdWUoKSBjb25zdCB7IHJldHVy
biBiYXNlOjpoYXM7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSgpIGNv
bnN0ICYgeyByZXR1cm4gYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoRXhwZWN0ZWREZXRhaWw6
OlRocm93KCksIGJhc2U6OnMudmFsKTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIFZhbHVlVHlw
ZSYgdmFsdWUoKSAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDogKEV4cGVjdGVk
RGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLnZhbCk7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgVmFs
dWVUeXBlJiYgdmFsdWUoKSBjb25zdCAmJiB7IHJldHVybiBXVEZNb3ZlKGJhc2U6OmhhcyA/IGJh
c2U6OnMudmFsIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLnZhbCkpOyB9Ci0g
ICAgUkVMQVhFRF9DT05TVEVYUFIgVmFsdWVUeXBlJiYgdmFsdWUoKSAmJiB7IHJldHVybiBXVEZN
b3ZlKGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBi
YXNlOjpzLnZhbCkpOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IEVycm9yVHlwZSYgZXJyb3IoKSBj
b25zdCAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFp
bDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpOyB9Ci0gICAgRXJyb3JUeXBlJiBlcnJvcigpICYgeyBy
ZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygp
LCBiYXNlOjpzLmVycik7IH0KLSAgICBSRUxBWEVEX0NPTlNURVhQUiBFcnJvclR5cGUmJiBlcnJv
cigpICYmIHsgcmV0dXJuIFdURk1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVj
dGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLmVycikpOyB9Ci0gICAgY29uc3RleHByIGNvbnN0
IEVycm9yVHlwZSYmIGVycm9yKCkgY29uc3QgJiYgeyByZXR1cm4gV1RGTW92ZSghYmFzZTo6aGFz
ID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKSk7
IH0KLSAgICBjb25zdGV4cHIgVW5leHBlY3RlZFR5cGUgZ2V0VW5leHBlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIFVuZXhwZWN0ZWRUeXBlKGJhc2U6OnMuZXJyKTsgfQotICAgIHRlbXBsYXRlPGNsYXNz
IFU+IGNvbnN0ZXhwciBWYWx1ZVR5cGUgdmFsdWVPcihVJiYgdSkgY29uc3QgJiB7IHJldHVybiBi
YXNlOjpoYXMgPyAqKnRoaXMgOiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGU+KHN0ZDo6Zm9yd2FyZDxV
Pih1KSk7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBWYWx1ZVR5cGUgdmFsdWVPcihVJiYgdSkg
JiYgeyByZXR1cm4gYmFzZTo6aGFzID8gV1RGTW92ZSgqKnRoaXMpIDogc3RhdGljX2Nhc3Q8VmFs
dWVUeXBlPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CisgICAgY29uc3RleHByIGJvb2wgaGFzX3Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9CisgICAgY29uc3RleHByIGNvbnN0IHZh
bHVlX3R5cGUmIHZhbHVlKCkgY29uc3QgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBiYXNlOjpzLnZh
bCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8ZXJyb3JfdHlwZT4oYmFz
ZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpOyB9CisgICAgUkVMQVhFRF9DT05TVEVYUFIgdmFsdWVf
dHlwZSYgdmFsdWUoKSAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDogKF9fRVhQ
RUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2VzczxlcnJvcl90eXBlPihiYXNlOjpzLmVycikp
LCBiYXNlOjpzLnZhbCk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYmIHZhbHVl
KCkgY29uc3QgJiYgeyByZXR1cm4gc3RkOjptb3ZlKGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDog
KF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2VzczxlcnJvcl90eXBlPihiYXNlOjpz
LmVycikpLCBiYXNlOjpzLnZhbCkpOyB9CisgICAgUkVMQVhFRF9DT05TVEVYUFIgdmFsdWVfdHlw
ZSYmIHZhbHVlKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKGJhc2U6OmhhcyA/IGJhc2U6OnMudmFs
IDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2VzczxlcnJvcl90eXBlPihiYXNl
OjpzLmVycikpLCBiYXNlOjpzLnZhbCkpOyB9CisgICAgY29uc3RleHByIGNvbnN0IGVycm9yX3R5
cGUmIGVycm9yKCkgY29uc3QgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAo
X19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpzLmVy
cik7IH0KKyAgICBlcnJvcl90eXBlJiBlcnJvcigpICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJh
c2U6OnMuZXJyIDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigp
KSwgYmFzZTo6cy5lcnIpOyB9CisgICAgUkVMQVhFRF9DT05TVEVYUFIgZXJyb3JfdHlwZSYmIGVy
cm9yKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKCFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChf
X0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJy
KSk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgZXJyb3JfdHlwZSYmIGVycm9yKCkgY29uc3QgJiYg
eyByZXR1cm4gc3RkOjptb3ZlKCFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVE
X1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKSk7IH0KKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBjb25zdGV4cHIgdmFsdWVfdHlwZSB2YWx1ZV9vcihVJiYgdSkg
Y29uc3QgJiB7IHJldHVybiBiYXNlOjpoYXMgPyAqKnRoaXMgOiBzdGF0aWNfY2FzdDx2YWx1ZV90
eXBlPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gdmFsdWVf
dHlwZSB2YWx1ZV9vcihVJiYgdSkgJiYgeyByZXR1cm4gYmFzZTo6aGFzID8gc3RkOjptb3ZlKCoq
dGhpcykgOiBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CiB9
OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotY2xhc3MgRXhwZWN0ZWQ8dm9pZCwgRT4gOiBwcml2YXRl
IEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PHZvaWQsIEU+IHsKLSAgICB0eXBlZGVmIEV4cGVj
dGVkRGV0YWlsOjpCYXNlU2VsZWN0PHZvaWQsIEU+IGJhc2U7CitjbGFzcyBleHBlY3RlZDx2b2lk
LCBFPiA6IHByaXZhdGUgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2VsZWN0PHZvaWQsIEU+IHsK
KyAgICB0eXBlZGVmIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlX3NlbGVjdDx2b2lkLCBFPiBiYXNl
OwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpWYWx1ZVR5cGUgVmFsdWVU
eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6RXJyb3JUeXBlIEVycm9yVHlwZTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlVuZXhwZWN0ZWRUeXBlIFVuZXhwZWN0ZWRUeXBlOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworICAgIHR5
cGVkZWYgdHlwZW5hbWUgYmFzZTo6ZXJyb3JfdHlwZSBlcnJvcl90eXBlOworICAgIHR5cGVkZWYg
dHlwZW5hbWUgYmFzZTo6dW5leHBlY3RlZF90eXBlIHVuZXhwZWN0ZWRfdHlwZTsKIAogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIEV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiB0eXBlOworICAg
IHR5cGVkZWYgZXhwZWN0ZWQ8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gdHlwZTsKIAogcHVibGlj
OgogICAgIHRlbXBsYXRlPGNsYXNzIFU+IHN0cnVjdCByZWJpbmQgewotICAgICAgICB1c2luZyB0
eXBlID0gRXhwZWN0ZWQ8VSwgRXJyb3JUeXBlPjsKKyAgICAgICAgdXNpbmcgdHlwZSA9IGV4cGVj
dGVkPFUsIGVycm9yX3R5cGU+OwogICAgIH07CiAKLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoKSA6
IGJhc2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnKSB7IH0KLSAgICBFeHBlY3RlZChjb25zdCBF
eHBlY3RlZCYpID0gZGVmYXVsdDsKLSAgICBFeHBlY3RlZChFeHBlY3RlZCYmKSA9IGRlZmF1bHQ7
Ci0gICAgLy8gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKGluX3BsYWNlX3QpOwotICAgIGNv
bnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVkVHlwZSBjb25zdCYgdSkgOiBiYXNlKEV4cGVjdGVk
RGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQo
VW5leHBlY3RlZFR5cGUmJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCBzdGQ6
OmZvcndhcmQ8VW5leHBlY3RlZFR5cGU+KHUpLnZhbHVlKCkpIHsgfQotICAgIHRlbXBsYXRlPGNs
YXNzIEVycj4gY29uc3RleHByIEV4cGVjdGVkKFVuZXhwZWN0ZWQ8RXJyPiBjb25zdCYgdSkgOiBi
YXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KKyAgICBjb25zdGV4
cHIgZXhwZWN0ZWQoKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZhbHVlX3RhZykgeyB9Cisg
ICAgZXhwZWN0ZWQoY29uc3QgZXhwZWN0ZWQmKSA9IGRlZmF1bHQ7CisgICAgZXhwZWN0ZWQoZXhw
ZWN0ZWQmJikgPSBkZWZhdWx0OworICAgIC8vIGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZChp
bl9wbGFjZV90KTsKKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZF90eXBlIGNvbnN0
JiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3RhZywgdS52YWx1ZSgpKSB7IH0K
KyAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZF90eXBlJiYgdSkgOiBiYXNlKF9fZXhw
ZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHN0ZDo6Zm9yd2FyZDx1bmV4cGVjdGVkX3R5cGU+KHUp
LnZhbHVlKCkpIHsgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIGV4cGVjdGVk
KHVuZXhwZWN0ZWQ8RXJyPiBjb25zdCYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJv
cl90YWcsIHUudmFsdWUoKSkgeyB9CiAKLSAgICB+RXhwZWN0ZWQoKSA9IGRlZmF1bHQ7CisgICAg
fmV4cGVjdGVkKCkgPSBkZWZhdWx0OwogCi0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBF
eHBlY3RlZCYgZSkgeyB0eXBlKGUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBF
eHBlY3RlZCYgb3BlcmF0b3I9KEV4cGVjdGVkJiYgZSkgeyB0eXBlKFdURk1vdmUoZSkpLnN3YXAo
KnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IFVu
ZXhwZWN0ZWRUeXBlJiB1KSB7IHR5cGUodSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfSAv
LyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCi0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShVbmV4
cGVjdGVkVHlwZSYmIHUpIHsgdHlwZShXVEZNb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0
aGlzOyB9IC8vIE5vdCBpbiB0aGUgY3VycmVudCBwYXBlci4KKyAgICBleHBlY3RlZCYgb3BlcmF0
b3I9KGNvbnN0IGV4cGVjdGVkJiBlKSB7IHR5cGUoZSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhp
czsgfQorICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oZXhwZWN0ZWQmJiBlKSB7IHR5cGUoc3RkOjpt
b3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CisgICAgZXhwZWN0ZWQmIG9wZXJh
dG9yPShjb25zdCB1bmV4cGVjdGVkX3R5cGUmIHUpIHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0
dXJuICp0aGlzOyB9IC8vIE5vdCBpbiB0aGUgY3VycmVudCBwYXBlci4KKyAgICBleHBlY3RlZCYg
b3BlcmF0b3I9KHVuZXhwZWN0ZWRfdHlwZSYmIHUpIHsgdHlwZShzdGQ6Om1vdmUodSkpLnN3YXAo
KnRoaXMpOyByZXR1cm4gKnRoaXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgogICAg
IC8vIHZvaWQgZW1wbGFjZSgpOwogCi0gICAgdm9pZCBzd2FwKEV4cGVjdGVkJiBvKQorICAgIHZv
aWQgc3dhcChleHBlY3RlZCYgbykKICAgICB7CiAgICAgICAgIHVzaW5nIHN0ZDo6c3dhcDsKICAg
ICAgICAgaWYgKGJhc2U6OmhhcyAmJiBvLmhhcykgewogICAgICAgICAgICAgLy8gRG8gbm90aGlu
Zy4KICAgICAgICAgfSBlbHNlIGlmIChiYXNlOjpoYXMgJiYgIW8uaGFzKSB7Ci0gICAgICAgICAg
ICBFcnJvclR5cGUgZShXVEZNb3ZlKG8ucy5lcnIpKTsKLSAgICAgICAgICAgIDo6bmV3ICgmYmFz
ZTo6cy5lcnIpIEVycm9yVHlwZShlKTsKKyAgICAgICAgICAgIGVycm9yX3R5cGUgZShzdGQ6Om1v
dmUoby5zLmVycikpOworICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLmVycikgZXJyb3JfdHlw
ZShlKTsKICAgICAgICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIWJhc2U6OmhhcyAmJiBvLmhhcykgewotICAgICAgICAgICAgOjpuZXcgKCZvLnMuZXJy
KSBFcnJvclR5cGUoV1RGTW92ZShiYXNlOjpzLmVycikpOworICAgICAgICAgICAgOjpuZXcgKCZv
LnMuZXJyKSBlcnJvcl90eXBlKHN0ZDo6bW92ZShiYXNlOjpzLmVycikpOwogICAgICAgICAgICAg
c3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzd2Fw
KGJhc2U6OnMuZXJyLCBvLnMuZXJyKTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQotICAgIGNvbnN0ZXhw
ciBib29sIGhhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9Ci0gICAgdm9pZCB2
YWx1ZSgpIGNvbnN0IHsgIWJhc2U6OmhhcyA/IEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpIDogdm9p
ZCgpOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IEUmIGVycm9yKCkgY29uc3QgJiB7IHJldHVybiAh
YmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6
OnMuZXJyKTsgfQotICAgIEUmIGVycm9yKCkgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6
cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKTsgfQotICAgIFJF
TEFYRURfQ09OU1RFWFBSIEUmJiBlcnJvcigpICYmIHsgcmV0dXJuIFdURk1vdmUoIWJhc2U6Omhh
cyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLmVycikp
OyB9Ci0gICAgY29uc3RleHByIFVuZXhwZWN0ZWRUeXBlIGdldFVuZXhwZWN0ZWQoKSBjb25zdCB7
IHJldHVybiBVbmV4cGVjdGVkVHlwZShiYXNlOjpzLmVycik7IH0KKyAgICBjb25zdGV4cHIgYm9v
bCBoYXNfdmFsdWUoKSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0KKyAgICB2b2lkIHZhbHVl
KCkgY29uc3QgeyAhYmFzZTo6aGFzID8gX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNj
ZXNzPHZvaWQ+KCkpIDogdm9pZCgpOyB9CisgICAgY29uc3RleHByIGNvbnN0IEUmIGVycm9yKCkg
Y29uc3QgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9U
SFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpzLmVycik7IH0KKyAgICBF
JiBlcnJvcigpICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQRUNU
RURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFzZTo6cy5lcnIpOyB9Cisg
ICAgUkVMQVhFRF9DT05TVEVYUFIgRSYmIGVycm9yKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKCFi
YXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9h
Y2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKSk7IH0KIH07CiAKLXRlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4m
IHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBib29sKHgpID09IGJvb2woeSkg
JiYgKHggPyB4LnZhbHVlKCkgPT0geS52YWx1ZSgpIDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7
IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVy
biAhKHggPT0geSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFeHBlY3RlZDx2b2lkLCBFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4m
IHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHRydWUgOiB4LmVycm9yKCkg
PT0geS5lcnJvcigpKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7IHJl
dHVybiB4ID09IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0IEV4cGVjdGVkPFQs
IEU+JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSA9PSB5OyB9Ci10ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4cGVjdGVkPFQs
IEU+JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ICE9IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10
ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFQmIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4
KSAhPSB5OyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkg
eyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYmICh4ID8geC52YWx1ZSgpID09IHkudmFsdWUo
KSA6IHguZXJyb3IoKSA9PSB5LmVycm9yKCkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25z
dCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gISh4ID09IHkpOyB9CiAKLXRlbXBsYXRlPGNs
YXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8
VCwgRT4mIHgsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHggPT0gRXhwZWN0ZWQ8
VCwgRT4oeSk7IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVW5leHBlY3RlZDxFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkp
IHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNs
YXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHgs
IGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHggIT0gRXhwZWN0ZWQ8VCwgRT4oeSk7
IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVW5leHBlY3RlZDxFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJu
IEV4cGVjdGVkPFQsIEU+KHgpICE9IHk7IH0KK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgZXhwZWN0ZWQ8dm9pZCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVk
PHZvaWQsIEU+JiB5KSB7IHJldHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB0cnVlIDog
eC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgRT4gdm9pZCBzd2FwKEV4cGVjdGVkPFQsIEU+JiB4LCBFeHBlY3RlZDxULCBFPiYgeSkgeyB4
LnN3YXAoeSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuIHgg
PT0gZXhwZWN0ZWQ8VCwgRT4oeSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkp
IHsgcmV0dXJuIGV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNs
YXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgs
IGNvbnN0IFQmIHkpIHsgcmV0dXJuIHggIT0gZXhwZWN0ZWQ8VCwgRT4oeSk7IH0KK3RlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgeCwg
Y29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIGV4cGVjdGVkPFQsIEU+KHgpICE9IHk7
IH0KIAotLy8gTm90ZTogdGhpcyBpc24ndCBpbiB0aGUgY3VycmVudCBwcm9wb3NhbCBiZWNhdXNl
IGl0IHJlbGllcyBvbiBDKysxNyBkZWR1Y3Rpb24gZ3VpZGVzIGluc3RlYWQuCi10ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcyBFID0gc3RkOjpudWxsb3B0X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDxzdGQ6
OmRlY2F5X3Q8VD4sIEU+IG1ha2VFeHBlY3RlZChUJiYgdikKLXsKLSAgICByZXR1cm4gRXhwZWN0
ZWQ8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZSwgRT4oc3RkOjpmb3J3YXJkPFQ+KHYpKTsK
LX0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBFeHBlY3RlZDxULCBzdGQ6
OmRlY2F5X3Q8RT4+IG1ha2VFeHBlY3RlZEZyb21FcnJvcihFJiYgZSkgeyByZXR1cm4gRXhwZWN0
ZWQ8VCwgc3RkOjpkZWNheV90PEU+PihtYWtlVW5leHBlY3RlZChlKSk7IH0KLXRlbXBsYXRlPGNs
YXNzIFQsIGNsYXNzIEUsIGNsYXNzIFU+IGNvbnN0ZXhwciBFeHBlY3RlZDxULCBFPiBtYWtlRXhw
ZWN0ZWRGcm9tRXJyb3IoVSYmIHUpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KG1ha2VVbmV4cGVj
dGVkKEUgeyBzdGQ6OmZvcndhcmQ8VT4odSkgfSApKTsgfQotLy8gdGVtcGxhdGU8Y2xhc3MgRiwg
Y2xhc3MgRSA9IHN0ZDo6bnVsbG9wdF90PiBjb25zdGV4cHIgRXhwZWN0ZWQ8dHlwZW5hbWUgc3Rk
OjpyZXN1bHRfb2Y8Rj46OnR5cGUsIEU+IG1ha2VFeHBlY3RlZF9mcm9tX2NhbGwoRiBmKTsKK3Rl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
ZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHggPT0g
ZXhwZWN0ZWQ8VCwgRT4oeSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8
VCwgRT4mIHkpIHsgcmV0dXJuIGV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KK3RlbXBsYXRlPGNs
YXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8
VCwgRT4mIHgsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHggIT0gZXhwZWN0ZWQ8
VCwgRT4oeSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oY29uc3QgdW5leHBlY3RlZDxFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkp
IHsgcmV0dXJuIGV4cGVjdGVkPFQsIEU+KHgpICE9IHk7IH0KIAotaW5saW5lIEV4cGVjdGVkPHZv
aWQsIHN0ZDo6bnVsbG9wdF90PiBtYWtlRXhwZWN0ZWQoKSB7IHJldHVybiBFeHBlY3RlZDx2b2lk
LCBzdGQ6Om51bGxvcHRfdD4oKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4g
dm9pZCBzd2FwKGV4cGVjdGVkPFQsIEU+JiB4LCBleHBlY3RlZDxULCBFPiYgeSkgeyB4LnN3YXAo
eSk7IH0KIAotfSAvLyBuYW1lc3BhY2UgV1RGCit9fX0gLy8gbmFtZXNwYWNlIHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjMKIAotdXNpbmcgV1RGOjpJblBsYWNlOwotdXNpbmcgV1RG
OjpVbmV4cGVjdGVkOwotdXNpbmcgV1RGOjptYWtlVW5leHBlY3RlZDsKLXVzaW5nIFdURjo6VW5l
eHBlY3Q7Ci11c2luZyBXVEY6OkV4cGVjdGVkOwotdXNpbmcgV1RGOjptYWtlRXhwZWN0ZWQ7Ci11
c2luZyBXVEY6Om1ha2VFeHBlY3RlZEZyb21FcnJvcjsKK19fRVhQRUNURURfSU5MSU5FX1ZBUklB
QkxFIGNvbnN0ZXhwciBzdGQ6OmV4cGVyaW1lbnRhbDo6dW5leHBlY3RlZF90JiB1bmV4cGVjdCA9
IHN0ZDo6ZXhwZXJpbWVudGFsOjp1bmV4cGVjdDsKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+
IHVzaW5nIEV4cGVjdGVkID0gc3RkOjpleHBlcmltZW50YWw6OmV4cGVjdGVkPFQsIEU+OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCmluZGV4IGYzZGNjYjguLjgwOWU4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDcgKzU4LDYgQEAg
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0SGFzaCB7IHVzaW5nIEhhc2ggPSB2b2lk
OyB9OwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoVHJhaXRzOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLj4gY2xhc3MgVmFyaWFudDsKLXRlbXBsYXRlPGNsYXNzLCBjbGFzcz4gY2xhc3Mg
RXhwZWN0ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgc2l6ZV90ID0gMCwgdHlwZW5hbWUgPSBDcmFz
aE9uT3ZlcmZsb3csIHNpemVfdCA9IDE2LCB0eXBlbmFtZSA9IEZhc3RNYWxsb2M+IGNsYXNzIFZl
Y3RvcjsKIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlPjo6SGFzaCwgdHlwZW5hbWUgPSBIYXNoVHJhaXRzPFZhbHVlPj4gY2xhc3Mg
SGFzaENvdW50ZWRTZXQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBl
ZEFyZywgdHlwZW5hbWUgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLCB0eXBl
bmFtZSA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgPSBIYXNoVHJhaXRzPE1hcHBlZEFy
Zz4+IGNsYXNzIEhhc2hNYXA7CkBAIC02NiwxMiArNjUsMTggQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVBcmcsIHR5cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNo
LCB0eXAKIAogfQogCituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFjZSBleHBlcmltZW50YWwgewor
aW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgewordGVtcGxhdGU8Y2xhc3MsIGNsYXNz
PiBjbGFzcyBleHBlY3RlZDsKK3RlbXBsYXRlPGNsYXNzPiBjbGFzcyB1bmV4cGVjdGVkOworfX19
IC8vIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCisKIHVzaW5n
IFdURjo6QXRvbWljU3RyaW5nOwogdXNpbmcgV1RGOjpBdG9taWNTdHJpbmdJbXBsOwogdXNpbmcg
V1RGOjpCaW5hcnlTZW1hcGhvcmU7CiB1c2luZyBXVEY6OkNvbXBsZXRpb25IYW5kbGVyOwogdXNp
bmcgV1RGOjpDU3RyaW5nOwotdXNpbmcgV1RGOjpFeHBlY3RlZDsKIHVzaW5nIFdURjo6RnVuY3Rp
b247CiB1c2luZyBXVEY6OkZ1bmN0aW9uRGlzcGF0Y2hlcjsKIHVzaW5nIFdURjo6SGFzaENvdW50
ZWRTZXQ7CkBAIC05MywzICs5OCw2IEBAIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdU
Rjo6VGV4dFBvc2l0aW9uOwogdXNpbmcgV1RGOjpWYXJpYW50OwogdXNpbmcgV1RGOjpWZWN0b3I7
CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IHVzaW5nIEV4cGVjdGVkID0gc3RkOjpleHBl
cmltZW50YWw6OmV4cGVjdGVkPFQsIEU+OwordGVtcGxhdGU8Y2xhc3MgRT4gdXNpbmcgVW5leHBl
Y3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjp1bmV4cGVjdGVkPEU+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKaW5kZXgg
ZDAyNmUxZi4uZDllNThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCkBAIC0yODIsMTAgKzI4Miw2IEBAIGNvbnN0
ZXhwciBVIGNvbnZlcnQoVSB2KSB7IHJldHVybiB2OyB9CiBjb25zdGV4cHIgc3RydWN0IHRyaXZp
YWxfaW5pdF90e30gdHJpdmlhbF9pbml0e307CiAKIAotLy8gMjAuNS42LCBJbi1wbGFjZSBjb25z
dHJ1Y3Rpb24KLWNvbnN0ZXhwciBzdHJ1Y3QgaW5fcGxhY2VfdHt9IGluX3BsYWNle307Ci0KLQog
Ly8gMjAuNS43LCBEaXNlbmdhZ2VkIHN0YXRlIGluZGljYXRvcgogc3RydWN0IG51bGxvcHRfdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCAxMmUzOTNhLi43ZmExZjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaApAQCAtNTI1LDYgKzUyNSwyOSBAQCB0ZW1wbGF0ZTxjbGFzcyBCMCwgY2xhc3MgQjEs
IGNsYXNzIEIyLCBjbGFzcy4uLiBCbj4gc3RydWN0IHd0Zl9jb25qdW5jdGlvbl9pbXBsPAogdGVt
cGxhdGU8Y2xhc3MuLi4gX0FyZ3M+IHN0cnVjdCBjb25qdW5jdGlvbiA6IHd0Zl9jb25qdW5jdGlv
bl9pbXBsPF9BcmdzLi4uPiB7IH07CiAjZW5kaWYKIAorI2lmIF9fY3BsdXNwbHVzIDwgMjAxNzAz
TAorCisvLyBUaGVzZSBhcmUgaW5saW5lIHZhcmlhYmxlIGZvciBDKysxNyBhbmQgbGF0ZXIuCisj
ZGVmaW5lIF9fSU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIHN0YXRpYyBjb25zdAorCitzdHJ1Y3Qg
aW5fcGxhY2VfdCB7CisgICAgZXhwbGljaXQgaW5fcGxhY2VfdCgpID0gZGVmYXVsdDsKK307Citf
X0lOX1BMQUNFX0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgaW5fcGxhY2VfdCBpbl9wbGFjZSB7
IH07CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaW5fcGxhY2VfdHlwZV90IHsKKyAgICBl
eHBsaWNpdCBpbl9wbGFjZV90eXBlX3QoKSA9IGRlZmF1bHQ7Cit9OwordGVtcGxhdGUgPGNsYXNz
IFQ+CitfX0lOX1BMQUNFX0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgaW5fcGxhY2VfdHlwZV90
PFQ+IGluX3BsYWNlX3R5cGUgeyB9OworCit0ZW1wbGF0ZSA8c2l6ZV90IEk+IHN0cnVjdCBpbl9w
bGFjZV9pbmRleF90IHsKKyAgICBleHBsaWNpdCBpbl9wbGFjZV9pbmRleF90KCkgPSBkZWZhdWx0
OworfTsKK3RlbXBsYXRlIDxzaXplX3QgST4KK19fSU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNv
bnN0ZXhwciBpbl9wbGFjZV9pbmRleF90PEk+IGluX3BsYWNlX2luZGV4IHsgfTsKKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cyA8IDIwMTcwM0wKKwogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKICNkZWZpbmUg
V1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuZXhwZWN0ZWQuaCBiL1NvdXJjZS9XVEYvd3Rm
L1VuZXhwZWN0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjUzYjNj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oCkBAIC0wLDAg
KzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEltcGxlbWVudGF0aW9uIG9mIExpYnJhcnkg
RnVuZGFtZW50YWxzIHYzJ3Mgc3RkOjpleHBlY3RlZCwgYXMgZGVzY3JpYmVkIGhlcmU6IGh0dHA6
Ly93ZzIxLmxpbmsvcDAzMjNyNAorCisjcHJhZ21hIG9uY2UKKworLyoKKyAgICB1bmV4cGVjdGVk
IHN5bm9wc2lzCisKK25hbWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7Citp
bmxpbmUgbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MyB7CisgICAgLy8gPy4/LjMsIFVuZXhwZWN0
ZWQgb2JqZWN0IHR5cGUKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgIGNsYXNzIHVuZXhw
ZWN0ZWQ7CisKKyAgICAvLyA/Lj8uNCwgVW5leHBlY3RlZCByZWxhdGlvbmFsIG9wZXJhdG9ycwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgICAgICBjb25zdGV4cHIgYm9vbAorICAgICAgICBv
cGVyYXRvcj09KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mLCBjb25zdCB1bmV4cGVjdGVkPEU+Jik7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhwciBib29sCisgICAgICAgIG9w
ZXJhdG9yIT0oY29uc3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mKTsKKwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgIGNsYXNzIHVuZXhwZWN0ZWQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdW5leHBlY3RlZCgpID0gZGVsZXRlOworICAgICAgICBjb25zdGV4cHIgZXhw
bGljaXQgdW5leHBlY3RlZChjb25zdCBFJik7CisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCB1
bmV4cGVjdGVkKEUmJik7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBFJiB2YWx1ZSgpIGNvbnN0
ICY7CisgICAgICAgIGNvbnN0ZXhwciBFJiB2YWx1ZSgpICY7CisgICAgICAgIGNvbnN0ZXhwciBF
JiYgdmFsdWUoKSAmJjsKKyAgICAgICAgY29uc3RleHByIEUgY29uc3QmJiB2YWx1ZSgpIGNvbnN0
JiY7CisgICAgcHJpdmF0ZToKKyAgICAgICAgRSB2YWw7IC8vIGV4cG9zaXRpb24gb25seQorICAg
IH07CisKK319fQorCisqLworCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx1dGlsaXR5
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIHN0ZCB7CituYW1l
c3BhY2UgZXhwZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsK
KwordGVtcGxhdGU8Y2xhc3MgRT4KK2NsYXNzIHVuZXhwZWN0ZWQgeworcHVibGljOgorICAgIHVu
ZXhwZWN0ZWQoKSA9IGRlbGV0ZTsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgdW5leHBlY3RlZChj
b25zdCBFJiBlKSA6IHZhbChlKSB7IH0KKyAgICBjb25zdGV4cHIgZXhwbGljaXQgdW5leHBlY3Rl
ZChFJiYgZSkgOiB2YWwoc3RkOjpmb3J3YXJkPEU+KGUpKSB7IH0KKyAgICBjb25zdGV4cHIgY29u
c3QgRSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIHZhbDsgfQorICAgIFJFTEFYRURfQ09OU1RF
WFBSIEUmIHZhbHVlKCkgJiB7IHJldHVybiB2YWw7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiBF
JiYgdmFsdWUoKSAmJiB7IHJldHVybiBXVEZNb3ZlKHZhbCk7IH0KKyAgICBSRUxBWEVEX0NPTlNU
RVhQUiBjb25zdCBFJiYgdmFsdWUoKSBjb25zdCAmJiB7IHJldHVybiBXVEZNb3ZlKHZhbCk7IH0K
KworcHJpdmF0ZToKKyAgICBFIHZhbDsKK307CisKK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCB1bmV4cGVj
dGVkPEU+JiByaHMpIHsgcmV0dXJuIGxocy52YWx1ZSgpID09IHJocy52YWx1ZSgpOyB9Cit0ZW1w
bGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8
RT4mIGxocywgY29uc3QgdW5leHBlY3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSAh
PSByaHMudmFsdWUoKTsgfQorCit9fX0gLy8gbmFtZXNwYWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjpm
dW5kYW1lbnRhbHNfdjMKKwordGVtcGxhdGU8Y2xhc3MgRT4gdXNpbmcgVW5leHBlY3RlZCA9IHN0
ZDo6ZXhwZXJpbWVudGFsOjp1bmV4cGVjdGVkPEU+OworCisvLyBOb3QgaW4gdGhlIHN0ZDo6ZXhw
ZWN0ZWQgc3BlYywgYnV0IHVzZWZ1bCB0byB3b3JrIGFyb3VuZCBsYWNrIG9mIEMrKzE3IGRlZHVj
dGlvbiBndWlkZXMuCit0ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgVW5leHBlY3RlZDxzdGQ6
OmRlY2F5X3Q8RT4+IG1ha2VVbmV4cGVjdGVkKEUmJiB2KSB7IHJldHVybiBVbmV4cGVjdGVkPHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8RT46OnR5cGU+KHN0ZDo6Zm9yd2FyZDxFPih2KSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4MTkxYzYxLi4xMTAyMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisy
MDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyNjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdmFyaW91cyB1
c2VzIG9mIEV4cGVjdGVkLCBtb3N0bHkgcmVuYW1pbmcgdmFsdWVPciBhbmQKKyAgICAgICAgaGFz
VmFsdWUgdG8gdGhlIFNUTCBuYW1pbmcgY29udmVudGlvbi4KKworICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnJldHJpZXZl
UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YmF0Y2hEZWxldGVPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmJhdGNoUHV0T3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlU3RvcmFnZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3Jh
Z2U6OnJlbW92ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0Rh
dGFPckVycm9yRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc09yRXJyb3JG
cm9tUmVjb3Jkc0RhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNo
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNj
cmlwdFdpdGhDYWNoZSBjb25zdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpjb21waWxlUnVsZUxpc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmdldERvbWFpbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2Fk
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6bG9hZEVuY29kZWRS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cGFyc2VSdWxlTGlz
dCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udCk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlU2V0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6
bG9hZEJlc3RGaXRJbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSdWxlSW1wb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6
cmVxdWVzdFN0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9DYWxsYmFja1Jlc3VsdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FsbGJhY2tSZXN1bHQ8UmV0dXJuVHlwZT46OnR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsbGJhY2tSZXN1bHQ8UmV0dXJuVHlwZT46OnJlbGVhc2VSZXR1
cm5WYWx1ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25PcjxSZXR1cm5U
eXBlPjo6aGFzRXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbk9y
PHZvaWQ+OjpoYXNFeGNlcHRpb24gY29uc3QpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgICogaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVs
ZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZl
KToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGln
aHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVt
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xv
YWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJz
ZXI6OnBhcnNlSVB2NEhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExv
YWRpbmcpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6cmVxdWVzdEltYWdlUmVzb3VyY2UpOgorICAgICAg
ICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9udEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6dXBkYXRlRXh0ZXJuYWxE
b2N1bWVudCk6CisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KToKKwogMjAxNy0xMS0zMCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGZpbHRlciBs
b2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDVl
YTIyMGIuLjc4ZmUwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCkBAIC00MjAsMTIgKzQyMCwxMiBAQCB2b2lkIERPTUNhY2hlOjpyZXRyaWV2ZVJlY29yZHMo
Y29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPAogCiAgICAg
bV9jb25uZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMobV9pZGVudGlmaWVyLCByZXRyaWV2ZVVSTCwg
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZHNPckVycm9yJiYgcmVz
dWx0KSB7CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgIGlmICghcmVz
dWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRp
b24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkcyhXVEZN
b3ZlKHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQp
OwogICAgICAgICB9CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBET01DYWNoZTo6YmF0Y2hEZWxl
dGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW8K
ICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgbV9jb25uZWN0aW9uLT5iYXRjaERl
bGV0ZU9wZXJhdGlvbihtX2lkZW50aWZpZXIsIHJlcXVlc3QuaW50ZXJuYWxSZXF1ZXN0KCksIFdU
Rk1vdmUob3B0aW9ucyksIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNv
cmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBl
ZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKERPTUNhY2hl
RW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soIXJlc3VsdC52YWx1ZSgpLmlzRW1wdHkoKSk7
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBET01DYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24oVmVj
dG9yPFJlY29yZD4mJiByZWNvcmRzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXgKICAgICBzZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7CiAgICAgbV9jb25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbiht
X2lkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAg
aWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkK
KyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA0
NmU2ZjJiLi44NTk5NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBET01DYWNoZVN0b3Jh
Z2U6OnJldHJpZXZlQ2FjaGVzKFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4KICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgbV9jb25uZWN0aW9uLT5y
ZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIG1fdXBkYXRlQ291bnRlciwgW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFz
VmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1
bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAg
LTE5MSw3ICsxOTEsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcm
IG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RAogICAgICAgICBzZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIG5h
bWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJ
ZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9p
c1N0b3BwZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAg
ICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQu
ZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZv
aWQgRE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMQm9vbGVhbj4mCiAgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsK
ICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlm
aWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2Fj
aGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
bV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQor
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1
bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKaW5kZXggMDYzYjcwMi4uMjY2Y2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QKICAgICAgICAgQVNT
RVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOwogCiAgICAgICAgIG1fbWFpblRocmVhZENvbm5l
Y3Rpb24tPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0o
Y29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVJZGVudGlmaWVyLCAhcmVzdWx0Lmhhc1ZhbHVlKCkgfHwg
cmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXIpOworICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChjYWNoZUlkZW50aWZpZXIsICFyZXN1bHQuaGFzX3ZhbHVlKCkgfHwg
cmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7CiAgICAgICAgICAgICAgICAgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCByZXN1bHQpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwKIAog
ICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIHVw
ZGF0ZUNvdW50ZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcmVxdWVzdElkZW50aWZpZXJdKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgICAgIENhY2hlSW5mb3NPckVycm9yIGlzb2xhdGVkUmVzdWx0OwotICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhh
c192YWx1ZSgpKQogICAgICAgICAgICAgICAgIGlzb2xhdGVkUmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlzb2xhdGVkUmVzdWx0ID0g
cmVzdWx0LnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGlj
IGlubGluZSBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiByZWNvcmRzRGF0YUZyb21SZWNv
cmRzKGNvbnN0IFZlY3RvcjwKIAogc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NU
aHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+IHJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKGNv
bnN0IFJlY29yZHNPckVycm9yJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUo
KSkKKyAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKIAogICAgIHJldHVybiByZWNvcmRzRGF0YUZyb21SZWNv
cmRzKHJlc3VsdC52YWx1ZSgpKTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgaW5saW5lIFZl
Y3RvcjxSZWNvcmQ+IHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoVmVjdG9yPENyb3NzVGhyZWFkUmVj
b3JkRGF0YQogCiBzdGF0aWMgaW5saW5lIFJlY29yZHNPckVycm9yIHJlY29yZHNPckVycm9yRnJv
bVJlY29yZHNEYXRhKEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJv
cj4mJiByZWNvcmRzRGF0YSkKIHsKLSAgICBpZiAoIXJlY29yZHNEYXRhLmhhc1ZhbHVlKCkpCisg
ICAgaWYgKCFyZWNvcmRzRGF0YS5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKHJlY29yZHNEYXRhLmVycm9yKCkpOwogICAgIHJldHVybiByZWNvcmRzRnJvbVJlY29y
ZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEudmFsdWUoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcAppbmRleCBlZTA2OGY2
Li5kNjYyMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUo
RAogICAgIGlmICghbV9pbml0aWF0b3JOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXF1ZXN0LnNl
dEluaXRpYXRvcihtX2luaXRpYXRvck5hbWUpOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOworICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJl
cXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IDU2ZGZmNmEuLmVmNjM0MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRv
Qnl0ZWNvZGUoQ29tYmluZWRVUkxGaWx0ZXJzJiYgZmlsdGVycywgVW5pdmVyc2FsQWN0aW9uU2V0
JiYKIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBp
bGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmluZyYmIHJ1bGVKU09OKQogewogICAgIGF1dG8gcnVs
ZUxpc3QgPSBwYXJzZVJ1bGVMaXN0KFdURk1vdmUocnVsZUpTT04pKTsKLSAgICBpZiAoIXJ1bGVM
aXN0Lmhhc1ZhbHVlKCkpCisgICAgaWYgKCFydWxlTGlzdC5oYXNfdmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIHJ1bGVMaXN0LmVycm9yKCk7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxl
PiBwYXJzZWRSdWxlTGlzdCA9IFdURk1vdmUocnVsZUxpc3QudmFsdWUoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHAKaW5kZXggMTY2MTRjNS4uY2NkYjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6
OmVycm9yX2NvZGU+IGdldFN0cmluZ0xpc3QoRXhlY1N0YXRlJiBleGVjLAogc3RhdGljIEV4cGVj
dGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+IGdldERvbWFpbkxpc3QoRXhlY1N0
YXRlJiBleGVjLCBjb25zdCBKU09iamVjdCogYXJyYXlPYmplY3QpCiB7CiAgICAgYXV0byBzdHJp
bmdzID0gZ2V0U3RyaW5nTGlzdChleGVjLCBhcnJheU9iamVjdCk7Ci0gICAgaWYgKCFzdHJpbmdz
Lmhhc1ZhbHVlKCkpCisgICAgaWYgKCFzdHJpbmdzLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gc3RyaW5nczsKICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN0cmluZ3MudmFsdWUoKSkgewog
ICAgICAgICAvLyBEb21haW5zIHNob3VsZCBiZSBwdW55Y29kZSBlbmNvZGVkIGxvd2VyIGNhc2Uu
CkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIEV4cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3Jf
Y29kZT4gbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU08KICAgICBjb25zdCBK
U1ZhbHVlIGlmRG9tYWluVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmZXhlYywgImlmLWRvbWFpbiIpKTsKICAgICBpZiAoIXNjb3BlLmV4Y2Vw
dGlvbigpICYmIGlmRG9tYWluVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBhdXRvIGlmRG9t
YWluID0gZ2V0RG9tYWluTGlzdChleGVjLCBhc09iamVjdChpZkRvbWFpblZhbHVlKSk7Ci0gICAg
ICAgIGlmICghaWZEb21haW4uaGFzVmFsdWUoKSkKKyAgICAgICAgaWYgKCFpZkRvbWFpbi5oYXNf
dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpZkRvbWFpbi5lcnJv
cigpKTsKICAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZShpZkRvbWFpbi52YWx1
ZSgpKTsKICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCkBAIC0xOTAs
NyArMTkwLDcgQEAgc3RhdGljIEV4cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9h
ZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU08KICAgICAgICAgaWYgKHRyaWdnZXIu
Y29uZGl0aW9uVHlwZSAhPSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpOb25lKQogICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRp
cGxlQ29uZGl0aW9ucyk7CiAgICAgICAgIGF1dG8gdW5sZXNzRG9tYWluID0gZ2V0RG9tYWluTGlz
dChleGVjLCBhc09iamVjdCh1bmxlc3NEb21haW5WYWx1ZSkpOwotICAgICAgICBpZiAoIXVubGVz
c0RvbWFpbi5oYXNWYWx1ZSgpKQorICAgICAgICBpZiAoIXVubGVzc0RvbWFpbi5oYXNfdmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh1bmxlc3NEb21haW4uZXJyb3Io
KSk7CiAgICAgICAgIHRyaWdnZXIuY29uZGl0aW9ucyA9IFdURk1vdmUodW5sZXNzRG9tYWluLnZh
bHVlKCkpOwogICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTIw
NCw3ICsyMDQsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBs
b2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTTwogICAgICAgICBpZiAodHJpZ2dl
ci5jb25kaXRpb25UeXBlICE9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpCiAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVs
dGlwbGVDb25kaXRpb25zKTsKICAgICAgICAgYXV0byBpZlRvcFVSTCA9IGdldFN0cmluZ0xpc3Qo
ZXhlYywgYXNPYmplY3QoaWZUb3BVUkxWYWx1ZSkpOwotICAgICAgICBpZiAoIWlmVG9wVVJMLmhh
c1ZhbHVlKCkpCisgICAgICAgIGlmICghaWZUb3BVUkwuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaWZUb3BVUkwuZXJyb3IoKSk7CiAgICAgICAgIHRyaWdn
ZXIuY29uZGl0aW9ucyA9IFdURk1vdmUoaWZUb3BVUkwudmFsdWUoKSk7CiAgICAgICAgIGlmICh0
cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBF
eHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYg
ZXhlYywgY29uc3QgSlNPCiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvblR5cGUgIT0gVHJp
Z2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOwogICAg
ICAgICBhdXRvIHVubGVzc1RvcFVSTCA9IGdldFN0cmluZ0xpc3QoZXhlYywgYXNPYmplY3QodW5s
ZXNzVG9wVVJMVmFsdWUpKTsKLSAgICAgICAgaWYgKCF1bmxlc3NUb3BVUkwuaGFzVmFsdWUoKSkK
KyAgICAgICAgaWYgKCF1bmxlc3NUb3BVUkwuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQodW5sZXNzVG9wVVJMLmVycm9yKCkpOwogICAgICAgICB0cmlnZ2Vy
LmNvbmRpdGlvbnMgPSBXVEZNb3ZlKHVubGVzc1RvcFVSTC52YWx1ZSgpKTsKICAgICAgICAgaWYg
KHRyaWdnZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCkBAIC0yODgsMTEgKzI4OCwxMSBAQCBzdGF0
aWMgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRB
Y3Rpb24oRXhlY1N0YXRlJiBleAogc3RhdGljIEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8Q29udGVu
dEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRSdWxlKEV4ZWNTdGF0ZSYgZXhl
YywgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QpCiB7CiAgICAgYXV0byB0cmlnZ2VyID0gbG9h
ZFRyaWdnZXIoZXhlYywgcnVsZU9iamVjdCk7Ci0gICAgaWYgKCF0cmlnZ2VyLmhhc1ZhbHVlKCkp
CisgICAgaWYgKCF0cmlnZ2VyLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQodHJpZ2dlci5lcnJvcigpKTsKIAogICAgIGF1dG8gYWN0aW9uID0gbG9hZEFjdGlvbihl
eGVjLCBydWxlT2JqZWN0KTsKLSAgICBpZiAoIWFjdGlvbi5oYXNWYWx1ZSgpKQorICAgIGlmICgh
YWN0aW9uLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYWN0aW9u
LmVycm9yKCkpOwogCiAgICAgaWYgKGFjdGlvbi52YWx1ZSgpKQpAQCAtMzQwLDcgKzM0MCw3IEBA
IHN0YXRpYyBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9y
X2NvZGU+IGxvYWRFbmNvZGVkUnVsZXMoCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFJ1bGUpOwogCiAgICAgICAgIGF1
dG8gcnVsZSA9IGxvYWRSdWxlKGV4ZWMsICpydWxlT2JqZWN0KTsKLSAgICAgICAgaWYgKCFydWxl
Lmhhc1ZhbHVlKCkpCisgICAgICAgIGlmICghcnVsZS5oYXNfdmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChydWxlLmVycm9yKCkpOwogICAgICAgICBpZiAocnVsZS52
YWx1ZSgpKQogICAgICAgICAgICAgcnVsZUxpc3QuYXBwZW5kKCpydWxlLnZhbHVlKCkpOwpAQCAt
MzY0LDcgKzM2NCw3IEBAIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0
ZDo6ZXJyb3JfY29kZT4gcGFyc2VSdWxlTGlzdChTdHJpbmcmJiByCiAKICAgICB2bSA9IG51bGxw
dHI7CiAKLSAgICBpZiAoIXJ1bGVMaXN0Lmhhc1ZhbHVlKCkpCisgICAgaWYgKCFydWxlTGlzdC5o
YXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJ1bGVMaXN0LmVycm9y
KCkpOwogCiAgICAgaWYgKHJ1bGVMaXN0LT5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggOGFjZDlhZi4uODFkOGE3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDEsNyArMTAxLDcg
QEAgQ2FjaGVkRm9udCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgaXNTVkcsIGJvb2wKIAogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwobV9yZXNvdXJjZSkp
LCBvcHRpb25zKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWRykudmFs
dWVPcihudWxscHRyKTsKKyAgICBtX2NhY2hlZEZvbnQgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWRykudmFsdWVfb3Io
bnVsbHB0cik7CiAgICAgcmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IGE2ODFiOGIuLmE5N2RjMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAzLDcgKzEwMyw3IEBA
IHN0ZDo6cGFpcjxDYWNoZWRJbWFnZSosIGZsb2F0PiBDU1NJbWFnZVNldFZhbHVlOjpsb2FkQmVz
dEZpdEltYWdlKENhY2hlZFJlc291cmNlCiAgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0
Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQogICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nl
c3NDb250cm9sKCpkb2N1bWVudCk7CiAKLSAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5y
ZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAg
bV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFs
dWVfb3IobnVsbHB0cik7CiAgICAgICAgIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0b3IgPSBpbWFn
ZS5zY2FsZUZhY3RvcjsKICAgICB9CiAgICAgcmV0dXJuIHsgbV9jYWNoZWRJbWFnZS5nZXQoKSwg
bV9iZXN0Rml0SW1hZ2VTY2FsZUZhY3RvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
Y3BwCmluZGV4IDM3MzYzZDAuLmMxOTFlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNzIsNyArNzIsNyBAQCBDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdl
KENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cgogICAgICAgICAgICAg
QVNTRVJUKGxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAgICAgIHJlcXVlc3QudXBkYXRlRm9y
QWNjZXNzQ29udHJvbCgqbG9hZGVyLmRvY3VtZW50KCkpOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVl
T3IobnVsbHB0cik7CisgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdl
KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIH0KICAgICByZXR1cm4g
bV9jYWNoZWRJbWFnZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5j
cHAKaW5kZXggYzAwZmYyZS4uMDQ5OGFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUlt
cG9ydC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQogICogKEMpIDIwMDItMjAwMyBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFN0eWxlUnVsZUltcG9ydDo6cmVxdWVz
dFN0eWxlU2hlZXQoKQogICAgICAgICByZXF1ZXN0LnNldE9wdGlvbnMoUmVzb3VyY2VMb2FkZXJP
cHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tD
bGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSwg
U2tpcFNlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1
ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQ
b2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNo
aW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpKTsKICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3Vt
ZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3Vt
ZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3Zl
KHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkgewog
ICAgICAgICAvLyBpZiB0aGUgaW1wb3J0IHJ1bGUgaXMgaXNzdWVkIGR5bmFtaWNhbGx5LCB0aGUg
c2hlZXQgbWF5IGJlCiAgICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgcGVuZGluZyBzaGVldCBj
b3VudCwgc28gbGV0IHRoZSBkb2Mga25vdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NhbGxiYWNrUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2FsbGJhY2tSZXN1bHQuaApp
bmRleCAzYmViZmUxLi44NzhmZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2Fs
bGJhY2tSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2FsbGJhY2tSZXN1bHQuaApA
QCAtNzEsMTIgKzcxLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBD
YWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBlPjo6Q2FsbGJhY2tSZXN1bHQoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBDYWxsYmFja1Jlc3VsdFR5cGUgQ2FsbGJhY2tSZXN1
bHQ8UmV0dXJuVHlwZT46OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3ZhbHVlLmhhc1Zh
bHVlKCkgPyBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MgOiBtX3ZhbHVlLmVycm9yKCk7Cisg
ICAgcmV0dXJuIG1fdmFsdWUuaGFzX3ZhbHVlKCkgPyBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nl
c3MgOiBtX3ZhbHVlLmVycm9yKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+
IGlubGluZSBhdXRvIENhbGxiYWNrUmVzdWx0PFJldHVyblR5cGU+OjpyZWxlYXNlUmV0dXJuVmFs
dWUoKSAtPiBSZXR1cm5UeXBlJiYKIHsKLSAgICBBU1NFUlQobV92YWx1ZS5oYXNWYWx1ZSgpKTsK
KyAgICBBU1NFUlQobV92YWx1ZS5oYXNfdmFsdWUoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUobV92
YWx1ZS52YWx1ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDgyOTQyYmIuLjQy
Y2IzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMwNDEsNyArMzA0MSw3IEBAIFVSTCBF
bGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogCiBpbnQgRWxlbWVudDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VIVE1MSW50
ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJu
IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigw
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUpCkBAIC0zMDUxLDcgKzMwNTEsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIGludCB2YWx1ZQogCiB1bnNpZ25lZCBFbGVtZW50OjpnZXRVbnNpZ25lZElu
dGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwogfQog
CiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRp
b25Pci5oCmluZGV4IGZmOTU1MjIuLjczYzhkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5o
CkBAIC0xLDYgKzEsNiBAQAogLyoKIAotQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KK0NvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIAogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk1LDcgKzk1LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJU
eXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmUKIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlw
ZT4gaW5saW5lIGJvb2wgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46Omhhc0V4Y2VwdGlvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICFtX3ZhbHVlLmhhc1ZhbHVlKCk7CisgICAgcmV0dXJuICFtX3Zh
bHVlLmhhc192YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxp
bmUgY29uc3QgRXhjZXB0aW9uJiBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6ZXhjZXB0aW9uKCkg
Y29uc3QKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD46OkV4Y2Vw
dGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIAogaW5saW5lIGJvb2wgRXhjZXB0aW9uT3I8
dm9pZD46Omhhc0V4Y2VwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3ZhbHVlLmhhc1Zh
bHVlKCk7CisgICAgcmV0dXJuICFtX3ZhbHVlLmhhc192YWx1ZSgpOwogfQogCiBpbmxpbmUgY29u
c3QgRXhjZXB0aW9uJiBFeGNlcHRpb25Pcjx2b2lkPjo6ZXhjZXB0aW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggMTVhMmIxNS4u
OTVjZTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKQEAgLTE1OCwxNCArMTU4LDE0IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgaWYgKG1faXNYU0wpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpOwogICAgICAgICAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9u
czo6TW9kZTo6U2FtZU9yaWdpbjsKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNv
dXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnN9KS52YWx1
ZU9yKG51bGxwdHIpOworICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291cmNlUmVx
dWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9uc30pLnZhbHVlX29yKG51
bGxwdHIpOwogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJpYnV0ZXMtPmdldCgiY2hhcnNldCIpOwog
ICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCku
Y29tcGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVu
dCgpLmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOwogCi0gICAgICAgICAgICAgICAgbV9j
YWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NT
U3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICAg
ICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAg
ICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZTViOTJiNC4uM2Q4NmM3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xODAyLDcgKzE4MDIsNyBAQCBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzRW1wdHlWYWx1ZSgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSkKIHsKICAgICB1bnNpZ25lZCBvbGRFZmZlY3RpdmVNYXhMZW5ndGggPSBlZmZlY3Rp
dmVNYXhMZW5ndGgoKTsKLSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExl
bmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7
CiAgICAgaWYgKG9sZEVmZmVjdGl2ZU1heExlbmd0aCAhPSBlZmZlY3RpdmVNYXhMZW5ndGgoKSkK
ICAgICAgICAgdXBkYXRlVmFsdWVJZk5lZWRlZCgpOwogCkBAIC0xODE0LDcgKzE4MTQsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSkKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGludCBv
bGRNaW5MZW5ndGggPSBtaW5MZW5ndGgoKTsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRl
cm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZh
bHVlX29yKC0xKSk7CiAgICAgaWYgKG9sZE1pbkxlbmd0aCAhPSBtaW5MZW5ndGgoKSkKICAgICAg
ICAgdXBkYXRlVmFsdWVJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggOWQzZGNlMy4uMTU4NDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKICAgICAgICAgcmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4o
Y3Jvc3NPcmlnaW4oKSwgZG9jdW1lbnQoKSk7CiAKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIW1fY2FjaGVkU2hlZXQpOwotICAgICAgICBtX2NhY2hlZFNoZWV0ID0g
ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdU
Rk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgIG1fY2FjaGVkU2hlZXQg
PSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQo
V1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAKICAgICAgICAgaWYgKG1fY2Fj
aGVkU2hlZXQpCiAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQoKnRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNjBmNzAx
Ni4uZDczZjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiB2b2lk
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhU
TUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5h
bFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVl
X29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgo
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAg
IHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggMTBlYmIwYi4uNmM4NjE0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjA5LDcgKzIwOSw3
IEBAIEV4cGVjdGVkPHVuc2lnbmVkLCBIVE1MSW50ZWdlclBhcnNpbmdFcnJvcj4gcGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpCiB7CiAgICAgYXV0byBvcHRpb25hbFNpZ25lZFJl
c3VsdCA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOwogICAgIGlmICghb3B0aW9uYWxTaWduZWRS
ZXN1bHQpCi0gICAgICAgIHJldHVybiBvcHRpb25hbFNpZ25lZFJlc3VsdC5nZXRVbmV4cGVjdGVk
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKG9wdGlvbmFsU2lnbmVk
UmVzdWx0LmVycm9yKCkpKTsKIAogICAgIGlmIChvcHRpb25hbFNpZ25lZFJlc3VsdC52YWx1ZSgp
IDwgMCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEhUTUxJbnRlZ2VyUGFyc2luZ0Vy
cm9yOjpOZWdhdGl2ZU92ZXJmbG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaAppbmRleCAyNjljYzYyLi5kY2NjYzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OCw3ICsxNTgsNyBAQCBpbmxp
bmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUodW5zaWduZWQgdmFsdWUsIHVu
c2lnbmVkIGRlZmF1bHRWYWx1ZQogaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5l
Z2F0aXZlKFN0cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDAp
CiB7CiAgICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KTsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJp
bmdWYWx1ZSkudmFsdWVPcihkZWZhdWx0VmFsdWUpOworICAgIHVuc2lnbmVkIHZhbHVlID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1ZhbHVlKS52YWx1ZV9vcihkZWZhdWx0VmFs
dWUpOwogICAgIEFTU0VSVCh2YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKICAg
ICByZXR1cm4gdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDEyMmYwZDkuLjkxYWMzOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXI6OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRJbml0aWF0
b3IobV9sb2FkZXIub3B0aW9ucygpLmluaXRpYXRvcik7CiAKICAgICBBU1NFUlQoIW1fcmVzb3Vy
Y2UpOwotICAgIG1fcmVzb3VyY2UgPSBtX2xvYWRlci5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocHJlZmxpZ2h0UmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CisgICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShwcmVmbGlnaHRS
ZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCBhYzg4NTkwLi5jODk0NGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
ICAgICBtYWluUmVzb3VyY2VSZXF1ZXN0LnNldE5hdmlnYXRpb25TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YShtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhKTsKICNlbmRpZgogCi0g
ICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJl
c291cmNlKFdURk1vdmUobWFpblJlc291cmNlUmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7Cisg
ICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJl
c291cmNlKFdURk1vdmUobWFpblJlc291cmNlUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAobV9tYWluUmVzb3VyY2Ug
JiYgbV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYg
bV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5kb21haW4oKSA9PSBDb250ZW50RXh0ZW5z
aW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYmYxZmI0NC4uOTkw
M2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAog
ICAgICAgICB9CiAKICAgICAgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IG1fZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShuZXdSZXF1ZXN0
KSk7Ci0gICAgICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZU9yKG51bGxwdHIp
OworICAgICAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFsdWVfb3IobnVsbHB0cik7
CiAgICAgICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAKaW5kZXggYmJkNDY0Yy4uNjI3MjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQogICAgICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5tX2Rv
Y3VtZW50UmVzb3VyY2VzLnNldChuZXdJbWFnZS0+dXJsKCksIG5ld0ltYWdlLmdldCgpKTsKICAg
ICAgICAgICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuc2V0QXV0b0xvYWRJbWFn
ZXMoYXV0b0xvYWRPdGhlckltYWdlcyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmV3
SW1hZ2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZN
b3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICAgICAgbmV3SW1hZ2UgPSBk
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVl
c3QpKS52YWx1ZV9vcihudWxscHRyKTsKIAogICAgICAgICAvLyBJZiB3ZSBkbyBub3QgaGF2ZSBh
biBpbWFnZSBoZXJlLCBpdCBtZWFucyB0aGF0IGEgY3Jvc3Mtc2l0ZQogICAgICAgICAvLyB2aW9s
YXRpb24gb2NjdXJyZWQsIG9yIHRoYXQgdGhlIGltYWdlIHdhcyBibG9ja2VkIHZpYSBDb250ZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggZjdjYzU3OS4uMjA3OWZkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yMzEsNyArMjMxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxv
YWRJZk5lZWRlZChjb25zdCBMaW4KICAgICBsaW5rUmVxdWVzdC5zZXRJc0xpbmtQcmVsb2FkKCk7
CiAKICAgICBsaW5rUmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4oY3Jvc3NPcmln
aW5Nb2RlLCBkb2N1bWVudCk7Ci0gICAgYXV0byBjYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnByZWxvYWQodHlwZS52YWx1ZSgpLCBXVEZNb3ZlKGxp
bmtSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICBhdXRvIGNhY2hlZExpbmtSZXNvdXJj
ZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucHJlbG9hZCh0eXBlLnZhbHVlKCks
IFdURk1vdmUobGlua1JlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKIAogICAgIGlmIChjYWNo
ZWRMaW5rUmVzb3VyY2UgJiYgbG9hZGVyKQogICAgICAgICByZXR1cm4gY3JlYXRlTGlua1ByZWxv
YWRSZXNvdXJjZUNsaWVudCgqY2FjaGVkTGlua1Jlc291cmNlLCAqbG9hZGVyLCB0eXBlLnZhbHVl
KCkpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIGJvb2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3Qg
TGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBVUkwmIGhyZWYsCiAgICAgICAg
IH0KICAgICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgICAgICBvcHRpb25z
LmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2s7Ci0gICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNl
ID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TGlua1Jlc291cmNlKHR5
cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQuY29tcGxl
dGVVUkwoaHJlZikpLCBvcHRpb25zLCBwcmlvcml0eSkpLnZhbHVlT3IobnVsbHB0cik7CisgICAg
ICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS5yZXF1ZXN0TGlua1Jlc291cmNlKHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QoZG9jdW1lbnQuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zLCBwcmlvcml0eSkp
LnZhbHVlX29yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9jYWNoZWRMaW5rUmVzb3VyY2UpCiAg
ICAgICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
ODQxZDhmMS4uNDY3NDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
SWdhbGlhIFMuTAotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNyArODEs
NyBAQCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBNZWRpYVJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZQogICAgIGlmIChtX21lZGlhRWxlbWVudCkKICAg
ICAgICAgY2FjaGVSZXF1ZXN0LnNldEluaXRpYXRvcigqbV9tZWRpYUVsZW1lbnQuZ2V0KCkpOwog
Ci0gICAgYXV0byByZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdE1lZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAg
ICBhdXRvIHJlc291cmNlID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0TWVkaWEoV1RGTW92ZShjYWNoZVJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICBp
ZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA4MDQwYjc4Li5mZjE0MzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBA
IGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSwgYm9vbCBpCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGN1ZVJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpKSwgb3B0aW9u
cyk7CiAgICAgY3VlUmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4oY3Jvc3NPcmln
aW5Nb2RlLCAqZG9jdW1lbnQpOwogCi0gICAgbV9yZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RUZXh0VHJhY2soV1RGTW92ZShjdWVSZXF1ZXN0KSkudmFs
dWVPcihudWxscHRyKTsKKyAgICBtX3Jlc291cmNlID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdFRleHRUcmFjayhXVEZNb3ZlKGN1ZVJlcXVlc3QpKS52YWx1ZV9vcihu
dWxscHRyKTsKICAgICBpZiAoIW1fcmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5jcHAKaW5kZXggMmUwOGVlMi4uMTJlNjA2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6
OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyCiAgICAgZmV0
Y2hPcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5kb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTChtX3VybCkpLCBmZXRjaE9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1f
ZG9jdW1lbnQgPSBsb2FkZXIucmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CisgICAgbV9kb2N1bWVudCA9IGxvYWRlci5yZXF1ZXN0U1ZHRG9jdW1l
bnQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKG1fZG9jdW1l
bnQpCiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZENsaWVudCgqdGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXggMTVkNDRmNS4uZDgyZDNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgSWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICByZXF1ZXN0LnNldEluaXRpYXRv
cihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuaWNvbik7CiAKICAgICBhdXRvIGNh
Y2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdEljb24oV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJl
c291cmNlLnZhbHVlT3IobnVsbHB0cik7CisgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNl
LnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jlc291
cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCmluZGV4IDY3Mjg2MTIuLjZiNGNhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMzE0LDExICsyMzE0LDExIEBAIEV4cGVjdGVkPFVSTFBhcnNlcjo6SVB2
NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQ
CiAgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6
ZSgpID4gNCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6
Ok5vdElQdjQpOwogICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAg
IGlmICghaXRlbS5oYXNWYWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJzaW5n
RXJyb3I6OkZhaWx1cmUpCisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVy
cm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwogICAgIH0KICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFz
VmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxv
dykKKyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0
UGllY2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOwogICAgIH0KICAgICBpZiAoaXRlbXMu
c2l6ZSgpID4gMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ5NTE4ODIuLjUyZWI3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZl
ckRhdGEsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgQ2xpZW50Q3JlZGVudGlh
bFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3Jl
ZGVudGlhbHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0Nv
cnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNM
b2FkaW5nLCBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsKIAogICAgIENhY2hlZFJl
c291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCk7Ci0gICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jl
c291cmNlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cikgOiBudWxscHRyOworICAg
IG1fcmVzb3VyY2UgPSBsb2FkZXIgPyBsb2FkZXItPnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3Zl
KHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKSA6IG51bGxwdHI7CiAgICAgaWYgKG1fcmVzb3Vy
Y2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggODQ3YTRmOS4uOTcxYzgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIC8vIGlzIGluIGEgdXNlci1hZ2Vu
dCBzaGFkb3cgdHJlZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczNDk4Pi4KICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChXVEZNb3ZlKHJl
c291cmNlUmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05v
dFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90
VXNlLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFs
cywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBGZXRj
aE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5n
UG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGlu
ZykpOwogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkpCi0gICAgICAgIG1fcmVzb3VyY2UgPSBsb2FkZXItPnJlcXVlc3RNZWRp
YShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX3Jlc291cmNl
ID0gbG9hZGVyLT5yZXF1ZXN0TWVkaWEoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0
cik7CiAKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM0
YzlkMDUuLjNjNzBiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNw
cApAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VS
ZXNvdXJjZSgpCiAKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpKSwgb3B0aW9ucyk7CiAgICAgcmVx
dWVzdC5zZXRJbml0aWF0b3IoKnRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBkb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CisgICAgbV9jYWNoZWRJbWFnZSA9IGRvY3VtZW50KCkuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVs
bHB0cik7CiAKICAgICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+
YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZVVyaUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxl
bWVudC5jcHAKaW5kZXggOWQ3NjEwNS4uNjBhOTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6Omxv
YWRGb250KCkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9h
ZGVyID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgICAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChocmVmKSksIG9wdGlvbnMpOwogICAgICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigqdGhp
cyk7Ci0gICAgICAgIG1fY2FjaGVkRm9udCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLnJlcXVlc3RG
b250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHRm9udFRhcmdldCgqdGhpcykpLnZhbHVlT3IobnVs
bHB0cik7CisgICAgICAgIG1fY2FjaGVkRm9udCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLnJlcXVl
c3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHRm9udFRhcmdldCgqdGhpcykpLnZhbHVlX29y
KG51bGxwdHIpOwogICAgICAgICBpZiAobV9jYWNoZWRGb250KSB7CiAgICAgICAgICAgICBtX2Nh
Y2hlZEZvbnQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAgICBtX2NhY2hlZEZvbnQtPmJl
Z2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAppbmRleCBlZWRmODY2Li4wNTg4MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCkBAIC01LDcgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDExIFRv
cmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAogICogQ29weXJpZ2h0IChDKSAy
MDEyIFJlbmF0YSBIb2RvdmFuIDxyZW5pQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERv
Y3VtZW50KCkKICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1l
T3JpZ2luOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IFJlc291cmNl
UmVxdWVzdCB7IGV4dGVybmFsRG9jdW1lbnRVUkwgfSwgb3B0aW9ucyB9OwogICAgICAgICByZXF1
ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgICAgIG1fZXh0ZXJuYWxEb2N1bWVudCA9IGRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92
ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9leHRlcm5hbERvY3VtZW50
ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTVkdEb2N1bWVudChX
VEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICAgICAgaWYgKG1fZXh0ZXJu
YWxEb2N1bWVudCkKICAgICAgICAgICAgIG1fZXh0ZXJuYWxEb2N1bWVudC0+YWRkQ2xpZW50KCp0
aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKaW5kZXggN2FkMzk5
NC4uODRjYTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgWFNMIGltcGxlbWVudGF0aW9u
LgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwMyw3ICsx
MDMsNyBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCgpCiAKICAgICBhdXRvIG9wdGlv
bnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
OwogICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKLSAg
ICBtX2NhY2hlZFNoZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RYU0xTdHlsZVNo
ZWV0KHtSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKGFic0hyZWYpKSwgb3B0aW9uc30pLnZhbHVlT3IobnVsbHB0cik7CisgICAgbV9j
YWNoZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7
UmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChhYnNIcmVmKSksIG9wdGlvbnN9KS52YWx1ZV9vcihudWxscHRyKTsKIAogICAgIGlmICht
X2NhY2hlZFNoZWV0KSB7CiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCgqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCA4MzU3
ZWFiLi4wZGQ1MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKQEAgLTQ4Miw4ICs0ODIsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVu
YW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4gc3RydWN0IEFyZ3VtZQogICAgIH0K
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXJyb3JUeXBlPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OkV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPj4g
ewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OkV4
cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiYgZXhwZWN0ZWQpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEVycm9yVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8RXhw
ZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiYgZXhw
ZWN0ZWQpCiAgICAgewogICAgICAgICBpZiAoIWV4cGVjdGVkLmhhc1ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CkBAIC00OTQsNyArNDk0LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdURjo6RXhwZWMKICAgICAgICAgZW5jb2RlciA8PCBleHBlY3RlZC52YWx1ZSgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdURjo6RXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJv
clR5cGU+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNWYWx1ZTsKICAgICAgICAg
ZGVjb2RlciA+PiBoYXNWYWx1ZTsKQEAgLTUwNyw3ICs1MDcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEVycm9yVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RG
OjpFeHBlYwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBXVEY6OkV4cGVjdGVkPFZh
bHVlVHlwZSwgRXJyb3JUeXBlPiBleHBlY3RlZChXVEZNb3ZlKCp2YWx1ZSkpOworICAgICAgICAg
ICAgRXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+IGV4cGVjdGVkKFdURk1vdmUoKnZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShleHBlY3RlZCk7CiAgICAgICAgIH0KICAg
ICAgICAgc3RkOjpvcHRpb25hbDxFcnJvclR5cGU+IGVycm9yOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUwMTE1YWUuLjk2ZTc5ZGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXBkYXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNvZGluZyBzdHlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRl
c3RzIGFjY29yZGluZyB0byBuYW1lIGNoYW5nZXMgYXMgd2VsbCBhcyByZW1vdmFsIG9mCisgICAg
ICAgIG5vdy1nb25lIEFQSXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9F
eHBlY3RlZC5jcHA6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3Yz
OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAo
V1RGOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0
ZXN0UGFyc2VIVE1MSW50ZWdlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKwogMjAxNy0xMS0zMCAgQmFzdWtlIFN1enVraSAgPEJh
c3VrZS5TdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDYW5ub3QgYnVpbGQg
d2l0aG91dCBJbnRlcm5ldCBjb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9FeHBlY3RlZC5jcHAKaW5kZXggYWM4MDE2Yi4uM2JkNDhkMyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcApAQCAtMzEsMTYgKzMxLDIwIEBACiAjaW5jbHVk
ZSA8c3RyaW5nPgogCiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
ZXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogCi1uYW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBzdGQgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDE+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0mIG9zLCBjb25zdCBzdGQ6OnBhaXI8VDAsIFQxPiYgcCkKIHsKICAgICByZXR1cm4gb3Mg
PDwgJygnIDw8IHAuZmlyc3QgPDwgIiwgIiA8PCBwLnNlY29uZCA8PCAnKSc7CiB9CiAKK25hbWVz
cGFjZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgewor
CiB0ZW1wbGF0ZTxjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgVW5leHBlY3RlZDxFPiYgdSkKIHsKICAgICByZXR1cm4gb3MgPDwgdS52YWx1
ZSgpOwpAQCAtNDgsMTkgKzUyLDIwIEBAIHRlbXBsYXRlPGNsYXNzIEU+IHN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBVbmV4cGVjdGVkPEU+CiAKIHRlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzIEU+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJl
YW0mIG9zLCBjb25zdCBFeHBlY3RlZDxULCBFPiYgZSkKIHsKLSAgICBpZiAoZS5oYXNWYWx1ZSgp
KQorICAgIGlmIChlLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gb3MgPDwgZS52YWx1ZSgp
OwogICAgIHJldHVybiBvcyA8PCBlLmVycm9yKCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEU+IHN0
ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBFeHBlY3RlZDx2
b2lkLCBFPiYgZSkKIHsKLSAgICBpZiAoZS5oYXNWYWx1ZSgpKQorICAgIGlmIChlLmhhc192YWx1
ZSgpKQogICAgICAgICByZXR1cm4gb3MgPDwgIiI7CiAgICAgcmV0dXJuIG9zIDw8IGUuZXJyb3Io
KTsKIH0KIAotfQorfX19IC8vIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50
YWxzX3YzCisKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC0xMTEsNzkgKzExNiw2
MiBAQCBURVNUKFdURl9FeHBlY3RlZCwgZXhwZWN0ZWQpCiAgICAgdHlwZWRlZiBFeHBlY3RlZDxm
b28sIHN0ZDo6c3RyaW5nPiBGb29TdHJpbmc7CiAgICAgewogICAgICAgICBhdXRvIGUgPSBFKCk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KGUuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZSgpLCAwKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShlLnZh
bHVlX29yKDMuMTQpLCAwKTsKICAgICB9CiAgICAgewogICAgICAgICBjb25zdGV4cHIgRSBlOwot
ICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShl
Lmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUudmFsdWUoKSwgMCk7Ci0gICAgICAg
IEVYUEVDVF9FUShlLnZhbHVlT3IoMy4xNCksIDApOworICAgICAgICBFWFBFQ1RfRVEoZS52YWx1
ZV9vcigzLjE0KSwgMCk7CiAgICAgfQogICAgIHsKICAgICAgICAgYXV0byBlID0gRSg0Mik7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKGUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUu
aGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZSgpLCA0Mik7Ci0gICAgICAg
IEVYUEVDVF9FUShlLnZhbHVlT3IoMy4xNCksIDQyKTsKKyAgICAgICAgRVhQRUNUX0VRKGUudmFs
dWVfb3IoMy4xNCksIDQyKTsKICAgICAgICAgY29uc3QgYXV0byBlMihlKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUoZTIuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc192YWx1
ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUyLnZhbHVlKCksIDQyKTsKLSAgICAgICAgRVhQRUNU
X0VRKGUyLnZhbHVlT3IoMy4xNCksIDQyKTsKKyAgICAgICAgRVhQRUNUX0VRKGUyLnZhbHVlX29y
KDMuMTQpLCA0Mik7CiAgICAgICAgIEUgZTM7CiAgICAgICAgIGUzID0gZTI7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKGUzLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNfdmFs
dWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlMy52YWx1ZSgpLCA0Mik7Ci0gICAgICAgIEVYUEVD
VF9FUShlMy52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShlMy52YWx1ZV9v
cigzLjE0KSwgNDIpOwogICAgICAgICBjb25zdCBFIGU0ID0gZTI7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKGU0Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlNC5oYXNfdmFsdWUoKSk7
CiAgICAgICAgIEVYUEVDVF9FUShlNC52YWx1ZSgpLCA0Mik7Ci0gICAgICAgIEVYUEVDVF9FUShl
NC52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShlNC52YWx1ZV9vcigzLjE0
KSwgNDIpOwogICAgIH0KICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBFIGMoNDIpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShjLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShjLmhhc192
YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGMudmFsdWUoKSwgNDIpOwotICAgICAgICBFWFBF
Q1RfRVEoYy52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShjLnZhbHVlX29y
KDMuMTQpLCA0Mik7CiAgICAgICAgIGNvbnN0ZXhwciBjb25zdCBhdXRvIGMyKGMpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShjMi5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYzIuaGFz
X3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoYzIudmFsdWUoKSwgNDIpOwotICAgICAgICBF
WFBFQ1RfRVEoYzIudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBFWFBFQ1RfRVEoYzIudmFs
dWVfb3IoMy4xNCksIDQyKTsKICAgICB9CiAgICAgewogICAgICAgICBhdXRvIHUgPSBFKG1ha2VV
bmV4cGVjdGVkKG9vcHMpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHUuaGFzVmFsdWUoKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRSh1Lmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKHUu
ZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUSh1LmdldFVuZXhwZWN0ZWQoKS52YWx1
ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKHUudmFsdWVPcigzLjE0KSwgMyk7CisgICAg
ICAgIEVYUEVDVF9FUSh1LnZhbHVlX29yKDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAgICAg
ICBhdXRvIHV2ID0gRVYobWFrZVVuZXhwZWN0ZWQob29wcykpOwotICAgICAgICBFWFBFQ1RfRkFM
U0UodXYuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSh1di5oYXNfdmFsdWUoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSh1di5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VR
KHV2LmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKHV2
LnZhbHVlT3IoMy4xNCksIDMpOworICAgICAgICBFWFBFQ1RfRVEodXYudmFsdWVfb3IoMy4xNCks
IDMpOwogICAgIH0KICAgICB7CiAgICAgICAgIEUgZSA9IG1ha2VVbmV4cGVjdGVkKG9vcHMpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUu
ZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1
ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMyk7Ci0gICAg
fQotICAgIHsKLSAgICAgICAgYXV0byBlID0gbWFrZUV4cGVjdGVkRnJvbUVycm9yPGludCwgY29u
c3QgY2hhcio+KG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKGUuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZS5l
cnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZhbHVl
KCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCAzKTsKLSAgICB9
Ci0gICAgewotICAgICAgICBhdXRvIGUgPSBtYWtlRXhwZWN0ZWRGcm9tRXJyb3I8aW50LCBjb25z
dCB2b2lkKj4ob29wcyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc1ZhbHVlKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0
VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9y
KDMuMTQpLCAzKTsKKyAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVfb3IoMy4xNCksIDMpOwogICAg
IH0KICAgICB7CiAgICAgICAgIGF1dG8gZSA9IEZvb0NoYXIoNDIpOwpAQCAtMjM2LDUxICsyMjQs
MzYgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHZvaWQpCiAgICAgdHlwZWRlZiBFeHBlY3RlZDx2b2lk
LCBzdGQ6OnN0cmluZz4gU3RyaW5nOwogICAgIHsKICAgICAgICAgYXV0byBlID0gRSgpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShlLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlLmhh
c192YWx1ZSgpKTsKICAgICAgICAgY29uc3QgYXV0byBlMihlKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUoZTIuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc192YWx1ZSgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKGUsIGUyKTsKICAgICAgICAgRSBlMzsKICAgICAgICAgZTMgPSBl
MjsKLSAgICAgICAgRVhQRUNUX1RSVUUoZTMuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGUzLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUsIGUzKTsKICAgICB9CiAg
ICAgewogICAgICAgICBjb25zdGV4cHIgRSBjOwotICAgICAgICBFWFBFQ1RfVFJVRShjLmhhc1Zh
bHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShjLmhhc192YWx1ZSgpKTsKICAgICAgICAgY29u
c3RleHByIGNvbnN0IGF1dG8gYzIoYyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGMyLmhhc1ZhbHVl
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShjMi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVD
VF9FUShjLCBjMik7CiAgICAgfQogICAgIHsKICAgICAgICAgYXV0byB1ID0gRShtYWtlVW5leHBl
Y3RlZChvb3BzKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1Lmhhc1ZhbHVlKCkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0UodS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSh1LmVycm9y
KCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEodS5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwg
b29wcyk7CiAgICAgfQogICAgIHsKICAgICAgICAgYXV0byB1diA9IEVWKG1ha2VVbmV4cGVjdGVk
KG9vcHMpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHV2Lmhhc1ZhbHVlKCkpOworICAgICAgICBF
WFBFQ1RfRkFMU0UodXYuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEodXYuZXJyb3Io
KSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUSh1di5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwg
b29wcyk7CiAgICAgfQogICAgIHsKICAgICAgICAgRSBlID0gbWFrZVVuZXhwZWN0ZWQob29wcyk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc1ZhbHVlKCkpOwotICAgICAgICBFWFBFQ1RfRVEo
ZS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZh
bHVlKCksIG9vcHMpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIGF1dG8gZSA9IG1ha2VFeHBlY3Rl
ZEZyb21FcnJvcjx2b2lkLCBjb25zdCBjaGFyKj4ob29wcyk7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RShlLmhhc1ZhbHVlKCkpOwotICAgICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwotICAgIH0K
LSAgICB7Ci0gICAgICAgIGF1dG8gZSA9IG1ha2VFeHBlY3RlZEZyb21FcnJvcjx2b2lkLCBjb25z
dCB2b2lkKj4ob29wcyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc1ZhbHVlKCkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLmVy
cm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEoZS5nZXRVbmV4cGVjdGVkKCkudmFsdWUo
KSwgb29wcyk7CiAgICAgfQogICAgIHsKICAgICAgICAgYXV0byBlMCA9IEUoKTsKQEAgLTMxMiw3
ICsyODUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdm9pZCkKICAgICB9CiAgICAgewogICAgICAg
ICB0eXBlZGVmIEV4cGVjdGVkPHN0ZDo6cGFpcjxpbnQsIGludD4sIHN0ZDo6c3RyaW5nPiBFdDsK
LSAgICAgICAgRVhQRUNUX0VRKEV0KFdURjo6SW5QbGFjZSwgMSwgMiksIEV0KFdURjo6SW5QbGFj
ZSwgMSwgMikpOworICAgICAgICBFWFBFQ1RfRVEoRXQoc3RkOjppbl9wbGFjZSwgMSwgMiksIEV0
KHN0ZDo6aW5fcGxhY2UsIDEsIDIpKTsKICAgICB9CiB9CiAKQEAgLTQ2NSw3ICs0MzgsNyBAQCBU
RVNUKFdURl9FeHBlY3RlZCwgUmVmKQogICAgIHsKICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsK
ICAgICAgICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4sIGludD4gZXhwZWN0ZWQgPSBSZWY8UmVm
TG9nZ2VyPihhKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQuaGFzVmFsdWUoKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBleHBlY3RlZC52YWx1ZSgpLnB0cigpKTsKICAgICB9CiAKQEAgLTQ3Myw4ICs0NDYs
OCBAQCBURVNUKFdURl9FeHBlY3RlZCwgUmVmKQogCiAgICAgewogICAgICAgICBSZWZMb2dnZXIg
YSgiYSIpOwotICAgICAgICBFeHBlY3RlZDxSZWY8UmVmTG9nZ2VyPiwgaW50PiBleHBlY3RlZCA9
IG1ha2VFeHBlY3RlZDxSZWY8UmVmTG9nZ2VyPiwgaW50PihSZWY8UmVmTG9nZ2VyPihhKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkLmhhc1ZhbHVlKCkpOworICAgICAgICBFeHBlY3Rl
ZDxSZWY8UmVmTG9nZ2VyPiwgaW50PiBleHBlY3RlZCA9IEV4cGVjdGVkPFJlZjxSZWZMb2dnZXI+
LCBpbnQ+KFJlZjxSZWZMb2dnZXI+KGEpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQu
aGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIGV4cGVjdGVkLnZhbHVlKCkucHRy
KCkpOwogICAgIH0KIApAQCAtNDgzLDcgKzQ1Niw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCBSZWYp
CiAgICAgewogICAgICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAgICAgICBFeHBlY3RlZDxpbnQs
IFJlZjxSZWZMb2dnZXI+PiBleHBlY3RlZCA9IG1ha2VVbmV4cGVjdGVkKFJlZjxSZWZMb2dnZXI+
KGEpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGV4cGVjdGVkLmhhc1ZhbHVlKCkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0UoZXhwZWN0ZWQuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
JmEsIGV4cGVjdGVkLmVycm9yKCkucHRyKCkpOwogICAgIH0KIApAQCAtNDkyLDcgKzQ2NSw3IEBA
IFRFU1QoV1RGX0V4cGVjdGVkLCBSZWYpCiAgICAgewogICAgICAgICBSZWZMb2dnZXIgYSgiYSIp
OwogICAgICAgICBFeHBlY3RlZDx2b2lkLCBSZWY8UmVmTG9nZ2VyPj4gZXhwZWN0ZWQgPSBtYWtl
VW5leHBlY3RlZChSZWY8UmVmTG9nZ2VyPihhKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShleHBl
Y3RlZC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV4cGVjdGVkLmhhc192YWx1
ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBleHBlY3RlZC5lcnJvcigpLnB0cigpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCAwZjFjMDJkLi40MTg2MDdhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3
LDcgKzM3LDcgQEAgc3RhdGljIGludCB0ZXN0UGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcm
IGlucHV0KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlu
cHV0KTsKICAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0
aW9uYWxSZXN1bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVf
b3IoMCk7CiB9CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTEludGVnZXJGYWlscyhjb25zdCBTdHJp
bmcmIGlucHV0KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXN0UGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBv
cHRpb25hbFJlc3VsdCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihpbnB1dCk7CiAgICAg
RVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0
LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQog
CiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJGYWlscyhjb25zdCBTdHJp
bmcmIGlucHV0KQotLSAKMi45LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328144</attachid>
            <date>2017-12-01 13:25:48 -0800</date>
            <delta_ts>2017-12-01 15:52:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Update-std-expected-to-match-libc-coding-style.patch</filename>
            <type>text/plain</type>
            <size>136120</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAwOTNlZmQ1MWE1NjgzNTRkMTE2MWEyM2RhMjZhNTJjZTAxOGZjZTdjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDEgRGVjIDIwMTcgMTI6MzQ6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUg
c3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCgotLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCAgICAgICAgICAgIHwgICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCAgICB8ICAxMCAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oICAgICAgICAgICAgfCAg
IDggKy0KIC4uLi93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weSAgICAg
IHwgIDE4ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcCB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDkyICsrKwogU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCA2NTEgKysrKysrKysrKysrKy0tLS0tLS0tCiBTb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogU291cmNl
L1dURi93dGYvT3B0aW9uYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKwog
U291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTcg
KysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA5OCArKysrCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCAgICAg
ICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3Jh
Z2UuY3BwICAgfCAgIDYgKy0KIC4uLi9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcCB8ICAgMiArLQogLi4uL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgfCAgIDQgKy0KIC4uLi9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogU291cmNl
L1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmggICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCAgICAgICAgICAgICAgICAgICB8ICAg
NiArLQogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgICAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAg
ICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgICAg
ICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcCAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgICAgICB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgICAgICAgICAgfCAgIDIgKy0K
IC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCAgICAgICAgICB8
ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCAgICAgICAgICAg
ICAgfCAgIDYgKy0KIC4uLi9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAgIHwgICA0ICstCiAuLi4vYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsKIC4uLi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICAgIHwgIDE0ICstCiAuLi4vY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAgIHwgICAyICstCiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oICAgICAgICB8ICAxMiAr
LQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTggKwogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwICAgICAgICAg
fCAxMTcgKystLQogLi4uL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAgICAgICAg
ICAgICAgfCAgIDYgKy0KIDU4IGZpbGVzIGNoYW5nZWQsIDk0OSBpbnNlcnRpb25zKCspLCA0NTIg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dURi93dGYvVW5leHBlY3Rl
ZC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmY5NGYxZS4uYWQ4M2ZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMTItMDEgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVk
IHRvIG1hdGNoIGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB2YXJpb3VzIHVzZXMgb2YgRXhwZWN0ZWQuCisK
KyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlSW1wb3J0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeUhlbHBlcik6CisgICAgICAgICog
d2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlu
bGluZXNIZWFkZXIucHk6CisgICAgICAgIChsb2FkTWFjcm8pOgorICAgICAgICAoc3RvcmVNYWNy
byk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yik6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMjUzNjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggYTZh
ZTI5Zi4uZmEzNmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApA
QCAtNDUsNyArNDUsNyBAQCB1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQzMl90OwogCiBjbGFz
cyBNb2R1bGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlPiB7CiBwdWJsaWM6
Ci0gICAgdXNpbmcgVmFsaWRhdGlvblJlc3VsdCA9IFdURjo6RXhwZWN0ZWQ8UmVmUHRyPE1vZHVs
ZT4sIFN0cmluZz47CisgICAgdXNpbmcgVmFsaWRhdGlvblJlc3VsdCA9IEV4cGVjdGVkPFJlZlB0
cjxNb2R1bGU+LCBTdHJpbmc+OwogICAgIHR5cGVkZWYgdm9pZCBDYWxsYmFja1R5cGUoVmFsaWRh
dGlvblJlc3VsdCYmKTsKICAgICB1c2luZyBBc3luY1ZhbGlkYXRpb25DYWxsYmFjayA9IFJlZlB0
cjxTaGFyZWRUYXNrPENhbGxiYWNrVHlwZT4+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDBjNzNkM2YuLmEwOTg3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCkBAIC0x
NzksMTQgKzE3OSwxNCBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0gdHJ1ZTsKICAgICAgICAgICAg
IFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5nZXRVbmV4cGVjdGVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpNZW1vcnk6IHsKICAgICAgICAgICAgIGJv
b2wgaXNJbXBvcnQgPSB0cnVlOwogICAgICAgICAgICAgUGFydGlhbFJlc3VsdCByZXN1bHQgPSBw
YXJzZU1lbW9yeUhlbHBlcihpc0ltcG9ydCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJl
c3VsdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXRVbmV4cGVjdGVkKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9y
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRXh0ZXJu
YWxLaW5kOjpHbG9iYWw6IHsKQEAgLTI2Myw3ICsyNjMsNyBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6
cGFyc2VUYWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKICAgICBQYXJ0aWFsUmVzdWx0IGxpbWl0cyA9
IHBhcnNlUmVzaXphYmxlTGltaXRzKGluaXRpYWwsIG1heGltdW0pOwogICAgIGlmIChVTkxJS0VM
WSghbGltaXRzKSkKLSAgICAgICAgcmV0dXJuIGxpbWl0cy5nZXRVbmV4cGVjdGVkKCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGxpbWl0cy5lcnJvcigpKSk7CiAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihpbml0aWFsID4gbWF4VGFibGVFbnRyaWVzLCAiVGFibGUncyBp
bml0aWFsIHBhZ2UgY291bnQgb2YgIiwgaW5pdGlhbCwgIiBpcyB0b28gYmlnLCBtYXhpbXVtICIs
IG1heFRhYmxlRW50cmllcyk7CiAKICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGltdW0gPj0g
aW5pdGlhbCk7CkBAIC0yODUsNyArMjg1LDcgQEAgYXV0byBNb2R1bGVQYXJzZXI6OnBhcnNlVGFi
bGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYm9vbCBpc0ltcG9ydCA9IGZhbHNlOwogICAgIFBh
cnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CiAgICAgaWYg
KFVOTElLRUxZKCFyZXN1bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0LmdldFVuZXhwZWN0ZWQo
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkp
KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zMDMsNyArMzAzLDcgQEAgYXV0byBNb2R1bGVQ
YXJzZXI6OnBhcnNlTWVtb3J5SGVscGVyKGJvb2wgaXNJbXBvcnQpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKICAgICAgICAgUGFydGlh
bFJlc3VsdCBsaW1pdHMgPSBwYXJzZVJlc2l6YWJsZUxpbWl0cyhpbml0aWFsLCBtYXhpbXVtKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFsaW1pdHMpKQotICAgICAgICAgICAgcmV0dXJuIGxpbWl0
cy5nZXRVbmV4cGVjdGVkKCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RG
TW92ZShsaW1pdHMuZXJyb3IoKSkpOwogICAgICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGlt
dW0gPj0gaW5pdGlhbCk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIVBhZ2VDb3VudDo6
aXNWYWxpZChpbml0aWFsKSwgIk1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiAiLCBpbml0
aWFsLCAiIGlzIGludmFsaWQiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNl
ci5oCmluZGV4IDk1ZjRkYjUuLjNjNzI4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFyc2VyLmgKQEAgLTk3LDEwICs5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVy
biBmYWlsKF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAK
LSNkZWZpbmUgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhoZWxwZXIpIGRvIHsgICBcCi0gICAg
ICAgIGF1dG8gaGVscGVyUmVzdWx0ID0gaGVscGVyOyAgICAgICAgICAgICAgXAotICAgICAgICBp
ZiAoVU5MSUtFTFkoIWhlbHBlclJlc3VsdCkpICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJl
dHVybiBoZWxwZXJSZXN1bHQuZ2V0VW5leHBlY3RlZCgpOyBcCisjZGVmaW5lIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMoaGVscGVyKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgYXV0byBoZWxwZXJSZXN1bHQgPSBoZWxwZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoIWhlbHBlclJlc3VsdCkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
V1RGTW92ZShoZWxwZXJSZXN1bHQuZXJyb3IoKSkpOyAgIFwKICAgICB9IHdoaWxlICgwKQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVX
YXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
Z2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5CmluZGV4IDE4MDUzZDMuLmJjNTRh
MjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZh
bGlkYXRlSW5saW5lc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFkZXIucHkKQEAgLTEsNiArMSw2IEBACiAjIS91
c3IvYmluL2VudiBweXRob24KIAotIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDcg
KzYzLDcgQEAgZGVmIHVuYXJ5TWFjcm8obmFtZSk6CiB0ZW1wbGF0ZTw+IGF1dG8gVmFsaWRhdGU6
OmFkZE9wPE9wVHlwZTo6IiIiICsgdG9DcHAobmFtZSkgKyAiIiI+KEV4cHJlc3Npb25UeXBlIHZh
bHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKICAgICBpZiAoVU5MSUtF
TFkodmFsdWUgIT0gIiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVyIl1bMF0pICsgIiIiKSkKLSAg
ICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZh
aWxlZDogIiIiICsgbmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJl
dHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAi
IiIgKyBuYW1lICsgIiIiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgIHJlc3VsdCA9ICIi
IiArIGNwcFR5cGUob3BbInJldHVybiJdWzBdKSArICIiIjsKICAgICByZXR1cm4geyB9OwpAQCAt
NzcsMTAgKzc3LDEwIEBAIGRlZiBiaW5hcnlNYWNybyhuYW1lKToKIHRlbXBsYXRlPD4gYXV0byBW
YWxpZGF0ZTo6YWRkT3A8T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIj4oRXhwcmVzc2lv
blR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFJlc3VsdAogewogICAgIGlmIChVTkxJS0VMWShsZWZ0ICE9ICIiIiArIGNwcFR5cGUob3Bb
InBhcmFtZXRlciJdWzBdKSArICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3Vs
dDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgbGVmdCB2
YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6
ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIGxlZnQgdmFs
dWUgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgaWYgKFVOTElLRUxZKHJpZ2h0ICE9ICIiIiArIGNw
cFR5cGUob3BbInBhcmFtZXRlciJdWzFdKSArICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVj
dGVkPFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAi
IiIgcmlnaHQgdmFsdWUgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICByZXR1cm4gVW5leHBlY3Rl
ZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIi
IiByaWdodCB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CiAKICAgICByZXN1bHQgPSAiIiIgKyBjcHBU
eXBlKG9wWyJyZXR1cm4iXVswXSkgKyAiIiI7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTkyLDcgKzky
LDcgQEAgZGVmIGxvYWRNYWNybyhuYW1lKToKICAgICByZXR1cm4gIiIiCiAgICAgY2FzZSBMb2Fk
T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIjogewogICAgICAgICBpZiAoVU5MSUtFTFko
cG9pbnRlciAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAg
ICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9u
IGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAg
ICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24g
ZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAg
ICAgIHJlc3VsdCA9ICIiIiArIGNwcFR5cGUob3BbInJldHVybiJdWzBdKSArICIiIjsKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTEwNCwxMCArMTA0LDEwIEBAIGRlZiBzdG9yZU1hY3JvKG5hbWUp
OgogICAgIHJldHVybiAiIiIKICAgICBjYXNlIFN0b3JlT3BUeXBlOjoiIiIgKyB0b0NwcChuYW1l
KSArICIiIjogewogICAgICAgICBpZiAoVU5MSUtFTFkocG9pbnRlciAhPSAiIiIgKyBjcHBUeXBl
KG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0
ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIi
IiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVk
PFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIi
IHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZSAh
PSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVsxXSkgKyAiIiIpKQotICAgICAgICAgICAg
cmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDog
IiIiICsgbmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgICAgICByZXR1
cm4gVW5leHBlY3RlZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIi
ICsgbmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CiAKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9IiIiCkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIGF1dG8gVmFsaWRhdGU6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5
cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3QpIC0+IFJlc3VsdAog
ewogICAgIGlmIChVTkxJS0VMWSghaGFzTWVtb3J5KCkpKQotICAgICAgICByZXR1cm4gVW5leHBl
Y3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiBsb2FkIGluc3RydWN0
aW9uIHdpdGhvdXQgbWVtb3J5Iik7CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6
ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiBsb2FkIGluc3RydWN0aW9uIHdpdGhvdXQg
bWVtb3J5Iik7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAiIiIgKyBsb2FkQ2FzZXMgKyAiIiIKQEAg
LTE1MCw3ICsxNTAsNyBAQCBhdXRvIFZhbGlkYXRlOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJl
c3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bAogYXV0byBWYWxpZGF0ZTo6
c3RvcmUoU3RvcmVPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25U
eXBlIHZhbHVlLCB1aW50MzJfdCkgLT4gUmVzdWx0CiB7CiAgICAgaWYgKFVOTElLRUxZKCFoYXNN
ZW1vcnkoKSkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6RXJyb3JUeXBlPigi
dmFsaWRhdGlvbiBmYWlsZWQ6IHN0b3JlIGluc3RydWN0aW9uIHdpdGhvdXQgbWVtb3J5Iik7Cisg
ICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24g
ZmFpbGVkOiBzdG9yZSBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIpOwogCiAgICAgc3dpdGNo
IChvcCkgewogIiIiICsgc3RvcmVDYXNlcyArICIiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAppbmRleCA0MGMxMDA2Li4y
M2ZlZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNX
ZWJBc3NlbWJseU1vZHVsZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlIiwgJkJhc2U6
OnNfaQogSlNXZWJBc3NlbWJseU1vZHVsZSogSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1
YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206Ok1v
ZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAg
IGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCks
IHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApp
bmRleCAwMWI1ZDA3Li44ZmVjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3JlYXRlU3R1YihWTSYsIEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIFdURjo6RXhwZWN0ZWQ8UmVmUHRyPFdhc206Ok1vZHVsZT4sIFN0cmluZz4mJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGNyZWF0ZVN0
dWIoVk0mLCBFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFeHBlY3RlZDxSZWZQdHI8V2FzbTo6TW9k
dWxlPiwgU3RyaW5nPiYmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgY29uc3QgV2FzbTo6TW9kdWxl
SW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjNGU1NWUuLjgy
NDc1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNo
IGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFzIG9mIGh0dHBzOi8vd2cyMS5saW5rL3AwMzIzcjQgc3RkOjpleHBlY3Rl
ZCBpcyBvbiBpdHMgd2F5IHRvIHRoZQorICAgICAgICBMaWJyYXJ5IEZ1bmRhbWVudGFscyB2MyBU
UyAoTEVXRyBhbmQgRVdHIHZvdGVkIGZvciB0aGlzLCBidXQgTFdHCisgICAgICAgIGhhc24ndCBk
b25lIHdvcmRpbmcgcmV2aWV3IHlldCwgaGVuY2UgIm9uIGl0cyB3YXkiKS4gVGhlIEFQSSBpcwor
ICAgICAgICB0aGVyZWZvcmUgcHJldHR5IGNsb3NlIHRvIHdoYXQgd2lsbCBiZSBpbiB0aGUgVFMs
IGFuZCBJJ3ZlIGdvdHRlbgorICAgICAgICByZXF1ZXN0cyBmb3IgYW4gZWFzaWx5IHVzYWJsZSBp
bXBsZW1lbnRhdGlvbiBvZiBzdGQ6OmV4cGVjdGVkLiBJCisgICAgICAgIHRhbGtlZCB0byBvdXIg
Y2xhbmcgdGVhbSBhbmQgdGhleSdsbCBoZWxwIG1lIG1pZ3JhdGUgb3VyCisgICAgICAgIGltcGxl
bWVudGF0aW9uIHRvIGxpYmMrKywgYnV0IG91ciBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gbG9vayBt
b3JlCisgICAgICAgIGxpa2UgbGliYysrIHRoYW4gaXQgZG9lcyBub3cuIE9uY2UgaW4gbGliYysr
IEknbGwgbWFpbnRhaW4gY2hhbmdlcworICAgICAgICBvbiBib3RoIHNpZGVzIHRvIG1ha2Ugc3Vy
ZSBuZWl0aGVyIGlzIG91dC1vZi1kYXRlIGZvciB0b28gbG9uZy4KKworICAgICAgICAtIEZvcmsg
c3RkOjp1bmV4cGVjdGVkIGludG8gaXRzIG93biBoZWFkZXIuCisgICAgICAgIC0gQWRkIG1pbGQg
c3VwcG9ydCBmb3IgYW4gZXhjZXB0aW9uLWJhc2VkIGltcGxlbWVudGF0aW9uLCBidXQKKyAgICAg
ICAgICBkb24ndCBkbyBub2V4Y2VwdCB5ZXQuCisgICAgICAgIC0gUmVuYW1lIGV2ZXJ5dGhpbmcg
dG8gZm9sbG93IFNUTCBzdHlsZSwgYW5kIGtlZXAgYSBnbG9iYWwgdXNpbmcKKyAgICAgICAgICBv
ciB2YXJpYWJsZSBhbGlhcyB3aGVyZSBwb3NzaWJsZSB0byByZWR1Y2UgV2ViS2l0IGNvZGUgY2h1
cm4uCisgICAgICAgIC0gTWlub3IgQVBJIHVwZGF0ZXMgdG8gcmVtb3ZlIHRoaW5ncyB0aGF0IGFy
ZW4ndCBpbiB0aGUgcHJvcG9zYWwKKyAgICAgICAgICBhbnltb3JlLgorCisgICAgICAgICogd3Rm
L0V4cGVjdGVkLmg6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3Yz
OjpiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+OjpiYWRfZXhwZWN0ZWRfYWNjZXNzKToKKyAgICAg
ICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmJhZF9leHBlY3RlZF9hY2Nl
c3M6OmJhZF9leHBlY3RlZF9hY2Nlc3MpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192Mzo6YmFkX2V4cGVjdGVkX2FjY2Vzczo6ZXJyb3IpOgorICAgICAgICAoc3Rk
OjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6YmFkX2V4cGVjdGVkX2FjY2Vzczo6ZXJy
b3IgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6
X19leHBlY3RlZF9kZXRhaWw6OmNvbnN0ZXhwcl9iYXNlOjpjb25zdGV4cHJfYmFzZSk6CisgICAg
ICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpfX2V4cGVjdGVkX2RldGFp
bDo6YmFzZTo6YmFzZSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxz
X3YzOjpfX2V4cGVjdGVkX2RldGFpbDo6YmFzZTo6fmJhc2UpOgorICAgICAgICAoc3RkOjpleHBl
cmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6OmV4cGVjdGVkKToKKyAgICAgICAg
KHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvcj0p
OgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6
OnN3YXApOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhw
ZWN0ZWQ6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJhdG9yLT4pOgorICAgICAgICAoc3RkOjpleHBl
cmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJhdG9yKiBjb25zdCk6Cisg
ICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4
cGVjdGVkOjpoYXNfdmFsdWUgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhw
ZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjp2YWx1ZSk6CisgICAgICAgIChz
dGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6ZXJyb3IgY29uc3Qp
OgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6
OmVycm9yKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4
cGVjdGVkOjp2YWx1ZV9vciBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVu
ZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6dmFsdWVfb3IpOgorICAgICAgICAoc3RkOjpleHBlcmlt
ZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChzdGQ6OmV4cGVy
aW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpvcGVyYXRvciE9KToKKyAgICAgICAgKHN0ZDo6ZXhw
ZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OnN3YXApOgorICAgICAgICAoV1RGOjpVbmV4cGVj
dGVkOjpVbmV4cGVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VW5leHBlY3RlZDo6dmFs
dWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVbmV4cGVjdGVkOjp2YWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bWFrZVVuZXhwZWN0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6VGhyb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6ZGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OkV4cGVjdGVkRGV0YWlsOjpzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRhaWw6OkNvbnN0ZXhw
ckJhc2U6OkNvbnN0ZXhwckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERl
dGFpbDo6QmFzZTo6QmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkRGV0YWls
OjpCYXNlOjp+QmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpFeHBlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OkV4cGVjdGVkOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhw
ZWN0ZWQ6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3Bl
cmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJhdG9y
Kik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Omhhc1ZhbHVlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6RXhwZWN0ZWQ6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhw
ZWN0ZWQ6OmVycm9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OmVy
cm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OmdldFVuZXhwZWN0ZWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6dmFsdWVPciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjp2YWx1ZU9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1ha2VFeHBlY3RlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6Om1ha2VFeHBlY3RlZEZyb21FcnJvcik6IERlbGV0ZWQuCisg
ICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAg
ICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgICogd3RmL1VuZXhwZWN0ZWQuaDogQWRk
ZWQuCisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjp1bmV4cGVj
dGVkOjp1bmV4cGVjdGVkKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRh
bHNfdjM6OnVuZXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVu
dGFsOjpmdW5kYW1lbnRhbHNfdjM6OnVuZXhwZWN0ZWQ6OnZhbHVlKToKKyAgICAgICAgKHN0ZDo6
ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Om9wZXJhdG9yPT0pOgorICAgICAgICAoc3Rk
OjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3IhPSk6CisgICAgICAgICht
YWtlVW5leHBlY3RlZCk6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjUzNjIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oIGIvU291cmNlL1dURi93dGYv
RXhwZWN0ZWQuaAppbmRleCA3MjhiNDEzLi41ODFlNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9FeHBlY3RlZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKQEAgLTIzLDE3
MSArMjMsMzMwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
Ly8gV1RGOjpFeHBlY3RlZCBpcyBiYXNlZCBvbiBzdGQ6OmV4cGVjdGVkLCBhcyBkZXNjcmliZWQg
aGVyZTogaHR0cDovL3dnMjEubGluay9wMDMyM3IxCi0vLyBUaGUgc3BlY2lmaWNhdGlvbiBleHBl
Y3RzIHRvIHRocm93LiBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBleGNlcHRp
b25zLCB1c2VzIFJFTEVBU0VfQVNTRVJUIGluc3RlYWQuCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBM
aWJyYXJ5IEZ1bmRhbWVudGFscyB2MydzIHN0ZDo6ZXhwZWN0ZWQsIGFzIGRlc2NyaWJlZCBoZXJl
OiBodHRwOi8vd2cyMS5saW5rL3AwMzIzcjQKIAogI3ByYWdtYSBvbmNlCiAKKy8qCisgICAgZXhw
ZWN0ZWQgc3lub3BzaXMKKworbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhwZXJpbWVudGFs
IHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKKyAgICAvLyA/Lj8uNCwgRXhw
ZWN0ZWQgZm9yIG9iamVjdCB0eXBlcworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgor
ICAgICAgICBjbGFzcyBleHBlY3RlZDsKKworICAgIC8vID8uPy41LCBFeHBlY3RlZCBzcGVjaWFs
aXphdGlvbiBmb3Igdm9pZAorICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgICAgICBjbGFzcyBl
eHBlY3RlZDx2b2lkLEU+OworCisgICAgLy8gPy4/LjYsIHVuZXhwZWN0IHRhZworICAgIHN0cnVj
dCB1bmV4cGVjdF90IHsKKyAgICAgICB1bmV4cGVjdF90KCkgPSBkZWZhdWx0OworICAgIH07Cisg
ICAgaW5saW5lIGNvbnN0ZXhwciB1bmV4cGVjdF90IHVuZXhwZWN0e307CisKKyAgICAvLyA/Lj8u
NywgY2xhc3MgYmFkX2V4cGVjdGVkX2FjY2VzcworICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAg
ICAgIGNsYXNzIGJhZF9leHBlY3RlZF9hY2Nlc3M7CisKKyAgICAvLyA/Lj8uOCwgU3BlY2lhbGl6
YXRpb24gZm9yIHZvaWQuCisgICAgdGVtcGxhdGUgPD4KKyAgICAgICBjbGFzcyBiYWRfZXhwZWN0
ZWRfYWNjZXNzPHZvaWQ+OworCisgICAgLy8gPy4/LjksIEV4cGVjdGVkIHJlbGF0aW9uYWwgb3Bl
cmF0b3JzCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCBleHBlY3RlZDxU
LCBFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiwgY29uc3QgZXhwZWN0ZWQ8
VCwgRT4mKTsKKworICAgIC8vID8uPy4xMCwgQ29tcGFyaXNvbiB3aXRoIFQKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNs
YXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmLCBjb25zdCBl
eHBlY3RlZDxULCBFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IFQm
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgVCYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7CisKKyAgICAvLyA/
Lj8uMTAsIENvbXBhcmlzb24gd2l0aCB1bmV4cGVjdGVkPEU+CisgICAgdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiwgY29uc3QgdW5leHBlY3RlZDxFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
LCBjbGFzcyBFPgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVj
dGVkPEU+JiwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwg
Y2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8
VCwgRT4mLCBjb25zdCB1bmV4cGVjdGVkPEU+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNs
YXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8
RT4mLCBjb25zdCBleHBlY3RlZDxULCBFPiYpOworCisgICAgLy8gPy4/LjExLCBTcGVjaWFsaXpl
ZCBhbGdvcml0aG1zCisgICAgdm9pZCBzd2FwKGV4cGVjdGVkPFQsIEU+JiwgZXhwZWN0ZWQ8VCwg
RT4mKSBub2V4Y2VwdChzZWUgYmVsb3cpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IEU+CisgICAgY2xhc3MgZXhwZWN0ZWQKKyAgICB7CisgICAgcHVibGljOgorICAgICAgICB0eXBl
ZGVmIFQgdmFsdWVfdHlwZTsKKyAgICAgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAgICAg
IHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CisgICAgCisgICAgICAgIHRl
bXBsYXRlIDxjbGFzcyBVPgorICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7CisgICAgICAgICAg
ICB1c2luZyB0eXBlID0gZXhwZWN0ZWQ8VSwgZXJyb3JfdHlwZT47CisgICAgICAgICAgfTsKKyAg
ICAKKyAgICAgICAgLy8gPy4/LjQuMSwgY29uc3RydWN0b3JzCisgICAgICAgIGNvbnN0ZXhwciBl
eHBlY3RlZCgpOworICAgICAgICBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3QgZXhwZWN0ZWQmKTsK
KyAgICAgICAgY29uc3RleHByIGV4cGVjdGVkKGV4cGVjdGVkJiYpIG5vZXhjZXB0KHNlZSBiZWxv
dyk7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBHPgorICAgICAgICAgICAgRVhQ
TElDSVQgY29uc3RleHByIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkPFUsIEc+Jik7CisgICAgICAg
IHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBHPgorICAgICAgICAgICAgRVhQTElDSVQgY29uc3Rl
eHByIGV4cGVjdGVkKGV4cGVjdGVkPFUsIEc+JiYpOworICAgIAorICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVSA9IFQ+CisgICAgICAgICAgICBFWFBMSUNJVCBjb25zdGV4cHIgZXhwZWN0ZWQoVSYm
IHYpOworICAgIAorICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZChpbl9wbGFjZV90LCBBcmdzJiYuLi4pOworICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBleHBlY3RlZChpbl9wbGFjZV90LCBpbml0aWFsaXplcl9saXN0PFU+LCBB
cmdzJiYuLi4pOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBj
b25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZDxHPiBjb25zdCYpOworICAgICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3Rl
ZDxHPiAmJik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAg
Y29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKHVuZXhwZWN0X3QsIEFyZ3MmJi4uLik7CisgICAg
ICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAgY29uc3Rl
eHByIGV4cGxpY2l0IGV4cGVjdGVkKHVuZXhwZWN0X3QsIGluaXRpYWxpemVyX2xpc3Q8VT4sIEFy
Z3MmJi4uLik7CisgICAgCisgICAgICAgIC8vID8uPy40LjIsIGRlc3RydWN0b3IKKyAgICAgICAg
fmV4cGVjdGVkKCk7CisgICAgCisgICAgICAgIC8vID8uPy40LjMsIGFzc2lnbm1lbnQKKyAgICAg
ICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBleHBlY3RlZCYpOworICAgICAgICBleHBlY3Rl
ZCYgb3BlcmF0b3I9KGV4cGVjdGVkJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7CisgICAgICAgIHRl
bXBsYXRlIDxjbGFzcyBVID0gVD4gZXhwZWN0ZWQmIG9wZXJhdG9yPShVJiYpOworICAgICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNv
bnN0IHVuZXhwZWN0ZWQ8Rz4mKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEcgPSBFPgorICAg
ICAgICAgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPSh1bmV4cGVjdGVkPEc+JiYpIG5vZXhjZXB0KHNl
ZSBiZWxvdyk7CisgICAgCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgICAg
ICAgICAgdm9pZCBlbXBsYWNlKEFyZ3MmJi4uLik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBV
LCBjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAgdm9pZCBlbXBsYWNlKGluaXRpYWxpemVyX2xp
c3Q8VT4sIEFyZ3MmJi4uLik7CisgICAgCisgICAgICAgIC8vID8uPy40LjQsIHN3YXAKKyAgICAg
ICAgdm9pZCBzd2FwKGV4cGVjdGVkJikgbm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICAKKyAgICAg
ICAgLy8gPy4/LjQuNSwgb2JzZXJ2ZXJzCisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUKiBvcGVy
YXRvciAtPigpIGNvbnN0OworICAgICAgICBjb25zdGV4cHIgVCogb3BlcmF0b3IgLT4oKTsKKyAg
ICAgICAgY29uc3RleHByIGNvbnN0IFQmIG9wZXJhdG9yICooKSBjb25zdCY7CisgICAgICAgIGNv
bnN0ZXhwciBUJiBvcGVyYXRvciAqKCkgJjsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IFQmJiBv
cGVyYXRvciAqKCkgY29uc3QgJiY7CisgICAgICAgIGNvbnN0ZXhwciBUJiYgb3BlcmF0b3IgKigp
ICYmOworICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5v
ZXhjZXB0OworICAgICAgICBjb25zdGV4cHIgYm9vbCBoYXNfdmFsdWUoKSBjb25zdCBub2V4Y2Vw
dDsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QmOworICAgICAgICBj
b25zdGV4cHIgVCYgdmFsdWUoKSAmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgVCYmIHZhbHVl
KCkgY29uc3QgJiY7CisgICAgICAgIGNvbnN0ZXhwciBUJiYgdmFsdWUoKSAmJjsKKyAgICAgICAg
Y29uc3RleHByIGNvbnN0IEUmIGVycm9yKCkgY29uc3QmOworICAgICAgICBjb25zdGV4cHIgRSYg
ZXJyb3IoKSAmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgRSYmIGVycm9yKCkgY29uc3QgJiY7
CisgICAgICAgIGNvbnN0ZXhwciBFJiYgZXJyb3IoKSAmJjsKKyAgICAgICAgdGVtcGxhdGUgPGNs
YXNzIFU+CisgICAgICAgICAgICBjb25zdGV4cHIgVCB2YWx1ZV9vcihVJiYpIGNvbnN0JjsKKyAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+CisgICAgICAgICAgICBUIHZhbHVlX29yKFUmJikgJiY7
CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBoYXNfdmFsOyAvLyBleHBvc2l0aW9u
IG9ubHkKKyAgICAgICAgdW5pb24KKyAgICAgICAgeworICAgICAgICAgICAgdmFsdWVfdHlwZSB2
YWw7IC8vIGV4cG9zaXRpb24gb25seQorICAgICAgICAgICAgdW5leHBlY3RlZF90eXBlIHVuZXhw
ZWN0OyAvLyBleHBvc2l0aW9uIG9ubHkKKyAgICAgICAgfTsKKyAgICB9OworCit9fX0KKworKi8K
KwogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmV4
cGVjdGVkLmg+CiAKLW5hbWVzcGFjZSBXVEYgeworI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVYQ0VQ
VElPTlMpCisjZGVmaW5lIF9fRVhQRUNURURfVEhST1coX19leGNlcHRpb24pICh0aHJvdyBfX2V4
Y2VwdGlvbikKKyNlbHNlCisjZGVmaW5lIF9fRVhQRUNURURfVEhST1coX19leGNlcHRpb24pICgo
dm9pZCkoX19leGNlcHRpb24pLCBDUkFTSCgpKQorI2VuZGlmCiAKLXRlbXBsYXRlPGNsYXNzIEU+
Ci1jbGFzcyBVbmV4cGVjdGVkIHsKLXB1YmxpYzoKLSAgICBVbmV4cGVjdGVkKCkgPSBkZWxldGU7
Ci0gICAgY29uc3RleHByIGV4cGxpY2l0IFVuZXhwZWN0ZWQoY29uc3QgRSYgZSkgOiB2YWwoZSkg
eyB9Ci0gICAgY29uc3RleHByIGV4cGxpY2l0IFVuZXhwZWN0ZWQoRSYmIGUpIDogdmFsKHN0ZDo6
Zm9yd2FyZDxFPihlKSkgeyB9Ci0gICAgY29uc3RleHByIGNvbnN0IEUmIHZhbHVlKCkgY29uc3Qg
JiB7IHJldHVybiB2YWw7IH0KLSAgICBSRUxBWEVEX0NPTlNURVhQUiBFJiB2YWx1ZSgpICYgeyBy
ZXR1cm4gdmFsOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVYUFIgRSYmIHZhbHVlKCkgJiYgeyByZXR1
cm4gV1RGTW92ZSh2YWwpOyB9CituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFjZSBleHBlcmltZW50
YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgewogCi1wcml2YXRlOgotICAg
IEUgdmFsOworc3RydWN0IHVuZXhwZWN0ZWRfdCB7CisgICAgdW5leHBlY3RlZF90KCkgPSBkZWZh
dWx0OwogfTsKKyNpZiBfX2NwbHVzcGx1cyA8IDIwMTcwM0wKKyNkZWZpbmUgX19FWFBFQ1RFRF9J
TkxJTkVfVkFSSUFCTEUgc3RhdGljIGNvbnN0CisjZWxzZQorI2RlZmluZSBfX0VYUEVDVEVEX0lO
TElORV9WQVJJQUJMRSBpbmxpbmUKKyNlbmRpZgogCi10ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIGxocywgY29uc3QgVW5leHBl
Y3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSA9PSByaHMudmFsdWUoKTsgfQotdGVt
cGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbmV4cGVjdGVk
PEU+JiBsaHMsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkg
IT0gcmhzLnZhbHVlKCk7IH0KK19fRVhQRUNURURfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciB1
bmV4cGVjdGVkX3QgdW5leHBlY3QgeyB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIg
VW5leHBlY3RlZDxzdGQ6OmRlY2F5X3Q8RT4+IG1ha2VVbmV4cGVjdGVkKEUmJiB2KSB7IHJldHVy
biBVbmV4cGVjdGVkPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8RT46OnR5cGU+KHN0ZDo6Zm9yd2FyZDxF
Pih2KSk7IH0KK3RlbXBsYXRlPGNsYXNzIEU+IGNsYXNzIGJhZF9leHBlY3RlZF9hY2Nlc3M7CiAK
LXN0cnVjdCBVbmV4cGVjdFRhZyB7Ci0gICAgVW5leHBlY3RUYWcoKSA9IGRlZmF1bHQ7Cit0ZW1w
bGF0ZTw+CitjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+IDogcHVibGljIHN0ZDo6ZXhj
ZXB0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBiYWRfZXhwZWN0ZWRfYWNjZXNzKCkgeyB9
CiB9OwotY29uc3RleHByIFVuZXhwZWN0VGFnIFVuZXhwZWN0IHsgfTsgLy8gRklYTUUgVGhpcyBp
cyBhbiBpbmxpbmUgdmFyaWFibGUgZm9yIEMrKzE3IGFuZCBsYXRlci4KIAotLy8gRklYTUUgdGhp
cyBzaG91bGQganVzdCBiZSBzdGQ6OmluX3BsYWNlX3Qgd2hpY2ggd2UgYWxzbyBkZWZpbmUgaW4g
b3B0aW9uYWwgYW5kIHZhcmlhbnQuCi1zdHJ1Y3QgSW5QbGFjZVRhZyB7Ci0gICAgSW5QbGFjZVRh
ZygpID0gZGVmYXVsdDsKLX07Ci1jb25zdGV4cHIgSW5QbGFjZVRhZyBJblBsYWNlIHsgfTsKK3Rl
bXBsYXRlPGNsYXNzIEU+CitjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzIDogcHVibGljIGJhZF9l
eHBlY3RlZF9hY2Nlc3M8dm9pZD4geworcHVibGljOgorICAgIGV4cGxpY2l0IGJhZF9leHBlY3Rl
ZF9hY2Nlc3MoRSB2YWwpIDogdmFsKHZhbCkgeyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB3
aGF0KCkgY29uc3Qgbm9leGNlcHQgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpleGNlcHRpb246Ondo
YXQoKTsgfQorICAgIEUmIGVycm9yKCkgJiB7IHJldHVybiB2YWw7IH0KKyAgICBjb25zdCBFJiBl
cnJvcigpIGNvbnN0JiB7IHJldHVybiB2YWw7IH0KKyAgICBFJiYgZXJyb3IoKSAmJiB7IHJldHVy
biBzdGQ6Om1vdmUodmFsKTsgfQorICAgIGNvbnN0IEUmJiAgZXJyb3IoKSBjb25zdCYmIHsgcmV0
dXJuIHN0ZDo6bW92ZSh2YWwpOyB9CiAKLW5hbWVzcGFjZSBFeHBlY3RlZERldGFpbCB7Citwcml2
YXRlOgorICAgIEUgdmFsOworfTsKIAotLy8gSW52b2tlZCB3aGVyZSBzdGQ6OkV4cGVjdGVkIHdv
dWxkIGluc3RlYWQgdGhyb3cuCi1pbmxpbmUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIFRo
cm93KCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CituYW1lc3BhY2UgX19leHBl
Y3RlZF9kZXRhaWwgewogCi1zdGF0aWMgY29uc3RleHByIGVudW0gY2xhc3MgVmFsdWVUYWdUeXBl
IHsgfSBWYWx1ZVRhZyB7IH07Ci1zdGF0aWMgY29uc3RleHByIGVudW0gY2xhc3MgRXJyb3JUYWdU
eXBlIHsgfSBFcnJvclRhZyB7IH07CitfX0VYUEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25zdGV4
cHIgZW51bSBjbGFzcyB2YWx1ZV90YWdfdCB7IH0gdmFsdWVfdGFnIHsgfTsKK19fRVhQRUNURURf
SU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBlbnVtIGNsYXNzIGVycm9yX3RhZ190IHsgfSBlcnJv
cl90YWcgeyB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+IHZvaWQgZGVzdHJv
eShUJikgeyB9CiB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlICYmIChzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1
ZSB8fCBzdGQ6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSk+KiA9IG51bGxwdHI+IHZvaWQgZGVzdHJveShU
JiB0KSB7IHQuflQoKTsgfQogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgotdW5pb24gQ29u
c3RleHByU3RvcmFnZSB7Ci0gICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUg
RXJyb3JUeXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3Vu
aW9uIGNvbnN0ZXhwcl9zdG9yYWdlIHsKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB0
eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3Rl
ZF90eXBlOwogICAgIGNoYXIgZHVtbXk7Ci0gICAgVmFsdWVUeXBlIHZhbDsKLSAgICBFcnJvclR5
cGUgZXJyOwotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdlKCkgOiBkdW1teSgpIHsgfQot
ICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdlKFZhbHVlVGFnVHlwZSkgOiB2YWwoKSB7IH0K
LSAgICBjb25zdGV4cHIgQ29uc3RleHByU3RvcmFnZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9
Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0b3JhZ2UoVmFsdWVUYWdUeXBlLCBjb25zdCBWYWx1
ZVR5cGUmIHYpIDogdmFsKHYpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdlKEVy
cm9yVGFnVHlwZSwgY29uc3QgRXJyb3JUeXBlJiBlKSA6IGVycihlKSB7IH0KLSAgICB+Q29uc3Rl
eHByU3RvcmFnZSgpID0gZGVmYXVsdDsKKyAgICB2YWx1ZV90eXBlIHZhbDsKKyAgICBlcnJvcl90
eXBlIGVycjsKKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoKSA6IGR1bW15KCkgeyB9
CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190KSA6IHZhbCgpIHsg
fQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7
IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UodmFsdWVfdGFnX3QsIGNvbnN0IHZh
bHVlX3R5cGUmIHYpIDogdmFsKHYpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFn
ZShlcnJvcl90YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZSkgOiBlcnIoZSkgeyB9CisgICAgfmNv
bnN0ZXhwcl9zdG9yYWdlKCkgPSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xh
c3MgRT4KLXVuaW9uIFN0b3JhZ2UgewotICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAgdHlw
ZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5
cGU7Cit1bmlvbiBzdG9yYWdlIHsKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB0eXBl
ZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90
eXBlOwogICAgIGNoYXIgZHVtbXk7Ci0gICAgVmFsdWVUeXBlIHZhbDsKLSAgICBFcnJvclR5cGUg
ZXJyOwotICAgIGNvbnN0ZXhwciBTdG9yYWdlKCkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhw
ciBTdG9yYWdlKFZhbHVlVGFnVHlwZSkgOiB2YWwoKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFn
ZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoVmFsdWVU
YWdUeXBlLCBjb25zdCBWYWx1ZVR5cGUmIHZhbCkgOiB2YWwodmFsKSB7IH0KLSAgICBjb25zdGV4
cHIgU3RvcmFnZShWYWx1ZVRhZ1R5cGUsIFZhbHVlVHlwZSYmIHZhbCkgOiB2YWwoc3RkOjpmb3J3
YXJkPFZhbHVlVHlwZT4odmFsKSkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdU
eXBlLCBjb25zdCBFcnJvclR5cGUmIGVycikgOiBlcnIoZXJyKSB7IH0KLSAgICBjb25zdGV4cHIg
U3RvcmFnZShFcnJvclRhZ1R5cGUsIEVycm9yVHlwZSYmIGVycikgOiBlcnIoc3RkOjpmb3J3YXJk
PEVycm9yVHlwZT4oZXJyKSkgeyB9Ci0gICAgflN0b3JhZ2UoKSB7IH0KKyAgICB2YWx1ZV90eXBl
IHZhbDsKKyAgICBlcnJvcl90eXBlIGVycjsKKyAgICBjb25zdGV4cHIgc3RvcmFnZSgpIDogZHVt
bXkoKSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiB2YWwoKSB7IH0K
KyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7IH0KKyAgICBjb25z
dGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCwgY29uc3QgdmFsdWVfdHlwZSYgdmFsKSA6IHZhbCh2
YWwpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKHZhbHVlX3RhZ190LCB2YWx1ZV90eXBlJiYg
dmFsKSA6IHZhbChzdGQ6OmZvcndhcmQ8dmFsdWVfdHlwZT4odmFsKSkgeyB9CisgICAgY29uc3Rl
eHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVycm9yX3R5cGUmIGVycikgOiBlcnIoZXJy
KSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCwgZXJyb3JfdHlwZSYmIGVy
cikgOiBlcnIoc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpIHsgfQorICAgIH5zdG9yYWdl
KCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotdW5pb24gQ29uc3RleHByU3RvcmFnZTx2
b2lkLCBFPiB7Ci0gICAgdHlwZWRlZiB2b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJy
b3JUeXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3VuaW9u
IGNvbnN0ZXhwcl9zdG9yYWdlPHZvaWQsIEU+IHsKKyAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlw
ZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4g
dW5leHBlY3RlZF90eXBlOwogICAgIGNoYXIgZHVtbXk7Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAg
ICBjb25zdGV4cHIgQ29uc3RleHByU3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4
cHIgQ29uc3RleHByU3RvcmFnZShWYWx1ZVRhZ1R5cGUpIDogZHVtbXkoKSB7IH0KLSAgICBjb25z
dGV4cHIgQ29uc3RleHByU3RvcmFnZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAgY29u
c3RleHByIENvbnN0ZXhwclN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBjb25zdCBFcnJvclR5cGUmIGUp
IDogZXJyKGUpIHsgfQotICAgIH5Db25zdGV4cHJTdG9yYWdlKCkgPSBkZWZhdWx0OworICAgIGVy
cm9yX3R5cGUgZXJyOworICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZSgpIDogZHVtbXko
KSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UodmFsdWVfdGFnX3QpIDogZHVt
bXkoKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QpIDog
ZXJyKCkgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190LCBj
b25zdCBlcnJvcl90eXBlJiBlKSA6IGVycihlKSB7IH0KKyAgICB+Y29uc3RleHByX3N0b3JhZ2Uo
KSA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotdW5pb24gU3RvcmFnZTx2b2lk
LCBFPiB7Ci0gICAgdHlwZWRlZiB2b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JU
eXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3VuaW9uIHN0
b3JhZ2U8dm9pZCwgRT4geworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworICAgIHR5cGVk
ZWYgRSBlcnJvcl90eXBlOworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5
cGU7CiAgICAgY2hhciBkdW1teTsKLSAgICBFcnJvclR5cGUgZXJyOwotICAgIGNvbnN0ZXhwciBT
dG9yYWdlKCkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKFZhbHVlVGFnVHlw
ZSkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSkgOiBl
cnIoKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUsIGNvbnN0IEVycm9y
VHlwZSYgZXJyKSA6IGVycihlcnIpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFn
VHlwZSwgRXJyb3JUeXBlJiYgZXJyKSA6IGVycihzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIp
KSB7IH0KLSAgICB+U3RvcmFnZSgpIHsgfQorICAgIGVycm9yX3R5cGUgZXJyOworICAgIGNvbnN0
ZXhwciBzdG9yYWdlKCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKHZhbHVl
X3RhZ190KSA6IGR1bW15KCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3Qp
IDogZXJyKCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVy
cm9yX3R5cGUmIGVycikgOiBlcnIoZXJyKSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJv
cl90YWdfdCwgZXJyb3JfdHlwZSYmIGVycikgOiBlcnIoc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+
KGVycikpIHsgfQorICAgIH5zdG9yYWdlKCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPgotc3RydWN0IENvbnN0ZXhwckJhc2UgewotICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7
Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5l
eHBlY3RlZFR5cGU7Ci0gICAgQ29uc3RleHByU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4g
czsKK3N0cnVjdCBjb25zdGV4cHJfYmFzZSB7CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Cisg
ICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhw
ZWN0ZWRfdHlwZTsKKyAgICBjb25zdGV4cHJfc3RvcmFnZTx2YWx1ZV90eXBlLCBlcnJvcl90eXBl
PiBzOwogICAgIGJvb2wgaGFzOwotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKCkgOiBzKCks
IGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShWYWx1ZVRhZ1R5cGUg
dGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNl
KEVycm9yVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQotICAgIGNvbnN0ZXhw
ciBDb25zdGV4cHJCYXNlKFZhbHVlVGFnVHlwZSB0YWcsIGNvbnN0IFZhbHVlVHlwZSYgdmFsKSA6
IHModGFnLCB2YWwpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2Uo
RXJyb3JUYWdUeXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhh
cyhmYWxzZSkgeyB9Ci0gICAgfkNvbnN0ZXhwckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgY29uc3Rl
eHByIGNvbnN0ZXhwcl9iYXNlKCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIg
Y29uc3RleHByX2Jhc2UodmFsdWVfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQor
ICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcpIDogcyh0YWcpLCBo
YXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSh2YWx1ZV90YWdfdCB0
YWcsIGNvbnN0IHZhbHVlX3R5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRydWUpIHsgfQor
ICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcsIGNvbnN0IGVycm9y
X3R5cGUmIGVycikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KKyAgICB+Y29uc3RleHBy
X2Jhc2UoKSA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgotc3Ry
dWN0IEJhc2UgewotICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9y
VHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Ci0gICAgU3Rv
cmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gczsKK3N0cnVjdCBiYXNlIHsKKyAgICB0eXBlZGVm
IFQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVu
ZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOworICAgIHN0b3JhZ2U8dmFsdWVfdHlwZSwgZXJy
b3JfdHlwZT4gczsKICAgICBib29sIGhhczsKLSAgICBjb25zdGV4cHIgQmFzZSgpIDogcygpLCBo
YXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoVmFsdWVUYWdUeXBlIHRhZykgOiBzKHRh
ZyksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6
IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShWYWx1ZVRhZ1R5cGUg
dGFnLCBjb25zdCBWYWx1ZVR5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRydWUpIHsgfQot
ICAgIGNvbnN0ZXhwciBCYXNlKFZhbHVlVGFnVHlwZSB0YWcsIFZhbHVlVHlwZSYmIHZhbCkgOiBz
KHRhZywgc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odmFsKSksIGhhcyh0cnVlKSB7IH0KLSAgICBj
b25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBjb25zdCBFcnJvclR5cGUmIGVycikgOiBz
KHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShFcnJvclRhZ1R5
cGUgdGFnLCBFcnJvclR5cGUmJiBlcnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+
KGVycikpLCBoYXMoZmFsc2UpIHsgfQotICAgIEJhc2UoY29uc3QgQmFzZSYgbykKKyAgICBjb25z
dGV4cHIgYmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UodmFs
dWVfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNl
KGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHBy
IGJhc2UodmFsdWVfdGFnX3QgdGFnLCBjb25zdCB2YWx1ZV90eXBlJiB2YWwpIDogcyh0YWcsIHZh
bCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZSh2YWx1ZV90YWdfdCB0YWcsIHZh
bHVlX3R5cGUmJiB2YWwpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDx2YWx1ZV90eXBlPih2YWwpKSwg
aGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgY29uc3Qg
ZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0
ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVycikgOiBzKHRhZywgc3Rk
Ojpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQorICAgIGJhc2UoY29u
c3QgYmFzZSYgbykKICAgICAgICAgOiBoYXMoby5oYXMpCiAgICAgewogICAgICAgICBpZiAoaGFz
KQotICAgICAgICAgICAgOjpuZXcgKCZzLnZhbCkgVmFsdWVUeXBlKG8ucy52YWwpOworICAgICAg
ICAgICAgOjpuZXcgKCZzLnZhbCkgdmFsdWVfdHlwZShvLnMudmFsKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgOjpuZXcgKCZzLmVycikgRXJyb3JUeXBlKG8ucy5lcnIpOworICAgICAgICAg
ICAgOjpuZXcgKCZzLmVycikgZXJyb3JfdHlwZShvLnMuZXJyKTsKICAgICB9Ci0gICAgQmFzZShC
YXNlJiYgbykKKyAgICBiYXNlKGJhc2UmJiBvKQogICAgICAgICA6IGhhcyhvLmhhcykKICAgICB7
CiAgICAgICAgIGlmIChoYXMpCi0gICAgICAgICAgICA6Om5ldyAoJnMudmFsKSBWYWx1ZVR5cGUo
V1RGTW92ZShvLnMudmFsKSk7CisgICAgICAgICAgICA6Om5ldyAoJnMudmFsKSB2YWx1ZV90eXBl
KHN0ZDo6bW92ZShvLnMudmFsKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIDo6bmV3ICgm
cy5lcnIpIEVycm9yVHlwZShXVEZNb3ZlKG8ucy5lcnIpKTsKKyAgICAgICAgICAgIDo6bmV3ICgm
cy5lcnIpIGVycm9yX3R5cGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsKICAgICB9Ci0gICAgfkJhc2Uo
KQorICAgIH5iYXNlKCkKICAgICB7CiAgICAgICAgIGlmIChoYXMpCiAgICAgICAgICAgICBkZXN0
cm95KHMudmFsKTsKQEAgLTE5Nyw0NSArMzU2LDQ1IEBAIHN0cnVjdCBCYXNlIHsKIH07CiAKIHRl
bXBsYXRlPGNsYXNzIEU+Ci1zdHJ1Y3QgQ29uc3RleHByQmFzZTx2b2lkLCBFPiB7Ci0gICAgdHlw
ZWRlZiB2b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOwotICAgIHR5cGVk
ZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKLSAgICBDb25zdGV4cHJTdG9yYWdlPFZh
bHVlVHlwZSwgRXJyb3JUeXBlPiBzOworc3RydWN0IGNvbnN0ZXhwcl9iYXNlPHZvaWQsIEU+IHsK
KyAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsK
KyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOworICAgIGNvbnN0ZXhw
cl9zdG9yYWdlPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9vbCBoYXM7Ci0gICAg
Y29uc3RleHByIENvbnN0ZXhwckJhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0
ZXhwciBDb25zdGV4cHJCYXNlKFZhbHVlVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkg
eyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdUeXBlIHRhZykgOiBzKHRh
ZyksIGhhcyhmYWxzZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdU
eXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhmYWxzZSkg
eyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdUeXBlIHRhZywgRXJyb3JU
eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSwgaGFzKGZh
bHNlKSB7IH0KLSAgICB+Q29uc3RleHByQmFzZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIg
Y29uc3RleHByX2Jhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBjb25z
dGV4cHJfYmFzZSh2YWx1ZV90YWdfdCB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9CisgICAg
Y29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhm
YWxzZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZywg
Y29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQorICAg
IGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcsIGVycm9yX3R5cGUmJiBl
cnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBlPihlcnIpKSwgaGFzKGZhbHNlKSB7
IH0KKyAgICB+Y29uc3RleHByX2Jhc2UoKSA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFz
cyBFPgotc3RydWN0IEJhc2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgdm9pZCBWYWx1ZVR5cGU7
Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5l
eHBlY3RlZFR5cGU7Ci0gICAgU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gczsKK3N0cnVj
dCBiYXNlPHZvaWQsIEU+IHsKKyAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAgICB0eXBl
ZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90
eXBlOworICAgIHN0b3JhZ2U8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gczsKICAgICBib29sIGhh
czsKLSAgICBjb25zdGV4cHIgQmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3Rl
eHByIEJhc2UoVmFsdWVUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KLSAgICBj
b25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0K
LSAgICBjb25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBjb25zdCBFcnJvclR5cGUmIGVy
cikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShFcnJv
clRhZ1R5cGUgdGFnLCBFcnJvclR5cGUmJiBlcnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxFcnJv
clR5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQotICAgIEJhc2UoY29uc3QgQmFzZSYgbykKKyAg
ICBjb25zdGV4cHIgYmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGJh
c2UodmFsdWVfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhw
ciBiYXNlKGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9CisgICAgY29u
c3RleHByIGJhc2UoZXJyb3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogcyh0
YWcsIGVyciksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UoZXJyb3JfdGFnX3Qg
dGFnLCBlcnJvcl90eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8ZXJyb3JfdHlwZT4o
ZXJyKSksIGhhcyhmYWxzZSkgeyB9CisgICAgYmFzZShjb25zdCBiYXNlJiBvKQogICAgICAgICA6
IGhhcyhvLmhhcykKICAgICB7CiAgICAgICAgIGlmICghaGFzKQotICAgICAgICAgICAgOjpuZXcg
KCZzLmVycikgRXJyb3JUeXBlKG8ucy5lcnIpOworICAgICAgICAgICAgOjpuZXcgKCZzLmVycikg
ZXJyb3JfdHlwZShvLnMuZXJyKTsKICAgICB9Ci0gICAgQmFzZShCYXNlJiYgbykKKyAgICBiYXNl
KGJhc2UmJiBvKQogICAgICAgICA6IGhhcyhvLmhhcykKICAgICB7CiAgICAgICAgIGlmICghaGFz
KQotICAgICAgICAgICAgOjpuZXcgKCZzLmVycikgRXJyb3JUeXBlKFdURk1vdmUoby5zLmVycikp
OworICAgICAgICAgICAgOjpuZXcgKCZzLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoby5zLmVy
cikpOwogICAgIH0KLSAgICB+QmFzZSgpCisgICAgfmJhc2UoKQogICAgIHsKICAgICAgICAgaWYg
KCFoYXMpCiAgICAgICAgICAgICBkZXN0cm95KHMuZXJyKTsKQEAgLTI0MywxOTMgKzQwMiwxNzUg
QEAgc3RydWN0IEJhc2U8dm9pZCwgRT4gewogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
RT4KLXVzaW5nIEJhc2VTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAordXNpbmcg
YmFzZV9zZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAogICAgICgoc3RkOjppc192
b2lkPFQ+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVl
KQogICAgICAgICAmJiBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RT46OnZhbHVlKSwK
LSAgICBDb25zdGV4cHJCYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxFPjo6dHlwZT4sCi0gICAgQmFzZTx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8RT46
OnR5cGU+CisgICAgY29uc3RleHByX2Jhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46
OnR5cGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PEU+Ojp0eXBlPiwKKyAgICBiYXNlPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxFPjo6dHlwZT4KID46OnR5cGU7CiAKLX0gLy8gbmFtZXNwYWNlIEV4cGVjdGVkRGV0YWls
Cit9IC8vIG5hbWVzcGFjZSBfX2V4cGVjdGVkX2RldGFpbAogCiB0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPgotY2xhc3MgRXhwZWN0ZWQgOiBwcml2YXRlIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2Vs
ZWN0PFQsIEU+IHsKLSAgICB0eXBlZGVmIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PFQsIEU+
IGJhc2U7CitjbGFzcyBleHBlY3RlZCA6IHByaXZhdGUgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vf
c2VsZWN0PFQsIEU+IHsKKyAgICB0eXBlZGVmIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlX3NlbGVj
dDxULCBFPiBiYXNlOwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpWYWx1
ZVR5cGUgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6RXJyb3JUeXBlIEVy
cm9yVHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlVuZXhwZWN0ZWRUeXBlIFVuZXhw
ZWN0ZWRUeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90
eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6ZXJyb3JfdHlwZSBlcnJvcl90eXBlOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6dW5leHBlY3RlZF90eXBlIHVuZXhwZWN0ZWRfdHlw
ZTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBl
PiB0eXBlOworICAgIHR5cGVkZWYgZXhwZWN0ZWQ8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gdHlw
ZTsKIAogcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIFU+IHN0cnVjdCByZWJpbmQgewotICAg
ICAgICB1c2luZyB0eXBlID0gRXhwZWN0ZWQ8VSwgRXJyb3JUeXBlPjsKKyAgICAgICAgdXNpbmcg
dHlwZSA9IGV4cGVjdGVkPFUsIGVycm9yX3R5cGU+OwogICAgIH07CiAKLSAgICBjb25zdGV4cHIg
RXhwZWN0ZWQoKSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnKSB7IH0KLSAgICBFeHBl
Y3RlZChjb25zdCBFeHBlY3RlZCYpID0gZGVmYXVsdDsKLSAgICBFeHBlY3RlZChFeHBlY3RlZCYm
KSA9IGRlZmF1bHQ7Ci0KLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoY29uc3QgVmFsdWVUeXBlJiBl
KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnLCBlKSB7IH0KLSAgICBjb25zdGV4cHIg
RXhwZWN0ZWQoVmFsdWVUeXBlJiYgZSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZywg
c3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4oZSkpIHsgfQotICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFy
Z3M+IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJn
cykgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZywgVmFsdWVUeXBlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpIHsgfQotICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4u
IEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChpbl9wbGFjZV90LCBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7Ci0gICAgY29uc3RleHByIEV4cGVjdGVkKGNvbnN0
IFVuZXhwZWN0ZWRUeXBlJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCB1LnZh
bHVlKCkpIHsgfQotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVkVHlwZSYmIHUpIDog
YmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHN0ZDo6Zm9yd2FyZDxVbmV4cGVjdGVkVHlw
ZT4odSkudmFsdWUoKSkgeyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25zdGV4cHIgRXhw
ZWN0ZWQoY29uc3QgVW5leHBlY3RlZDxFcnI+JiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVy
cm9yVGFnLCB1LnZhbHVlKCkpIHsgfQotICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHBy
IEV4cGVjdGVkKFVuZXhwZWN0ZWQ8RXJyPiYmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJy
b3JUYWcsIHN0ZDo6Zm9yd2FyZDxFcnI+KHUudmFsdWUoKSkpIHsgfQotICAgIHRlbXBsYXRlPGNs
YXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChVbmV4cGVjdFRhZywgQXJn
cyYmLi4uIGFyZ3MpIDogYmFzZShFeHBlY3RlZERldGFpbDo6VmFsdWVUYWcsIFVuZXhwZWN0ZWRU
eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQotICAgIC8vIHRlbXBsYXRlPGNs
YXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChVbmV4cGVj
dFRhZywgc3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOwotCi0gICAgfkV4cGVj
dGVkKCkgPSBkZWZhdWx0OwotCi0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBFeHBlY3Rl
ZCYgZSkgeyB0eXBlKGUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBFeHBlY3Rl
ZCYgb3BlcmF0b3I9KEV4cGVjdGVkJiYgZSkgeyB0eXBlKFdURk1vdmUoZSkpLnN3YXAoKnRoaXMp
OyByZXR1cm4gKnRoaXM7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBFeHBlY3RlZCYgb3BlcmF0
b3I9KFUmJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsg
fQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgVW5leHBlY3RlZFR5cGUmIHUpIHsgdHlw
ZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9y
PShVbmV4cGVjdGVkVHlwZSYmIHUpIHsgdHlwZShXVEZNb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0
dXJuICp0aGlzOyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKCkgOiBiYXNlKF9fZXhwZWN0ZWRf
ZGV0YWlsOjp2YWx1ZV90YWcpIHsgfQorICAgIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkJikgPSBk
ZWZhdWx0OworICAgIGV4cGVjdGVkKGV4cGVjdGVkJiYpID0gZGVmYXVsdDsKKworICAgIGNvbnN0
ZXhwciBleHBlY3RlZChjb25zdCB2YWx1ZV90eXBlJiBlKSA6IGJhc2UoX19leHBlY3RlZF9kZXRh
aWw6OnZhbHVlX3RhZywgZSkgeyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKHZhbHVlX3R5cGUm
JiBlKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZhbHVlX3RhZywgc3RkOjpmb3J3YXJkPHZh
bHVlX3R5cGU+KGUpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIg
ZXhwbGljaXQgZXhwZWN0ZWQoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykgOiBiYXNl
KF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIHZhbHVlX3R5cGUoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSkgeyB9CisgICAgLy8gdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJn
cz4gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3QgdW5l
eHBlY3RlZF90eXBlJiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3RhZywgdS52
YWx1ZSgpKSB7IH0KKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZF90eXBlJiYgdSkg
OiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHN0ZDo6Zm9yd2FyZDx1bmV4cGVj
dGVkX3R5cGU+KHUpLnZhbHVlKCkpIHsgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3Rl
eHByIGV4cGVjdGVkKGNvbnN0IHVuZXhwZWN0ZWQ8RXJyPiYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRf
ZGV0YWlsOjplcnJvcl90YWcsIHUudmFsdWUoKSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRXJy
PiBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZDxFcnI+JiYgdSkgOiBiYXNlKF9fZXhwZWN0
ZWRfZGV0YWlsOjplcnJvcl90YWcsIHN0ZDo6Zm9yd2FyZDxFcnI+KHUudmFsdWUoKSkpIHsgfQor
ICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZCh1
bmV4cGVjdGVkX3QsIEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZh
bHVlX3RhZywgdW5leHBlY3RlZF90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsg
fQorICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBs
aWNpdCBleHBlY3RlZCh1bmV4cGVjdGVkX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJn
cyYmLi4uKTsKKworICAgIH5leHBlY3RlZCgpID0gZGVmYXVsdDsKKworICAgIGV4cGVjdGVkJiBv
cGVyYXRvcj0oY29uc3QgZXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJu
ICp0aGlzOyB9CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShleHBlY3RlZCYmIGUpIHsgdHlwZShz
dGQ6Om1vdmUoZSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVPiBleHBlY3RlZCYgb3BlcmF0b3I9KFUmJiB1KSB7IHR5cGUoc3RkOjptb3ZlKHUpKS5z
d2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25z
dCB1bmV4cGVjdGVkX3R5cGUmIHUpIHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlz
OyB9CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPSh1bmV4cGVjdGVkX3R5cGUmJiB1KSB7IHR5cGUo
c3RkOjptb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CiAgICAgLy8gdGVtcGxh
dGU8Y2xhc3MuLi4gQXJncz4gdm9pZCBlbXBsYWNlKEFyZ3MmJi4uLik7CiAgICAgLy8gdGVtcGxh
dGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gdm9pZCBlbXBsYWNlKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxVPiwgQXJncyYmLi4uKTsKIAotICAgIHZvaWQgc3dhcChFeHBlY3RlZCYgbykKKyAgICB2
b2lkIHN3YXAoZXhwZWN0ZWQmIG8pCiAgICAgewogICAgICAgICB1c2luZyBzdGQ6OnN3YXA7CiAg
ICAgICAgIGlmIChiYXNlOjpoYXMgJiYgby5oYXMpCiAgICAgICAgICAgICBzd2FwKGJhc2U6OnMu
dmFsLCBvLnMudmFsKTsKICAgICAgICAgZWxzZSBpZiAoYmFzZTo6aGFzICYmICFvLmhhcykgewot
ICAgICAgICAgICAgRXJyb3JUeXBlIGUoV1RGTW92ZShvLnMuZXJyKSk7Ci0gICAgICAgICAgICBF
eHBlY3RlZERldGFpbDo6ZGVzdHJveShvLnMuZXJyKTsKLSAgICAgICAgICAgIDo6bmV3ICgmby5z
LnZhbCkgVmFsdWVUeXBlKFdURk1vdmUoYmFzZTo6cy52YWwpKTsKLSAgICAgICAgICAgIEV4cGVj
dGVkRGV0YWlsOjpkZXN0cm95KGJhc2U6OnMudmFsKTsKLSAgICAgICAgICAgIDo6bmV3ICgmYmFz
ZTo6cy5lcnIpIEVycm9yVHlwZShXVEZNb3ZlKGUpKTsKKyAgICAgICAgICAgIGVycm9yX3R5cGUg
ZShzdGQ6Om1vdmUoby5zLmVycikpOworICAgICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRl
c3Ryb3koby5zLmVycik7CisgICAgICAgICAgICA6Om5ldyAoJm8ucy52YWwpIHZhbHVlX3R5cGUo
c3RkOjptb3ZlKGJhc2U6OnMudmFsKSk7CisgICAgICAgICAgICBfX2V4cGVjdGVkX2RldGFpbDo6
ZGVzdHJveShiYXNlOjpzLnZhbCk7CisgICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBl
cnJvcl90eXBlKHN0ZDo6bW92ZShlKSk7CiAgICAgICAgICAgICBzd2FwKGJhc2U6Omhhcywgby5o
YXMpOwogICAgICAgICB9IGVsc2UgaWYgKCFiYXNlOjpoYXMgJiYgby5oYXMpIHsKLSAgICAgICAg
ICAgIFZhbHVlVHlwZSB2KFdURk1vdmUoby5zLnZhbCkpOwotICAgICAgICAgICAgRXhwZWN0ZWRE
ZXRhaWw6OmRlc3Ryb3koby5zLnZhbCk7Ci0gICAgICAgICAgICA6Om5ldyAoJm8ucy5lcnIpIEVy
cm9yVHlwZShXVEZNb3ZlKGJhc2U6OnMuZXJyKSk7Ci0gICAgICAgICAgICBFeHBlY3RlZERldGFp
bDo6ZGVzdHJveShiYXNlOjpzLmVycik7Ci0gICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMudmFs
KSBWYWx1ZVR5cGUoV1RGTW92ZSh2KSk7CisgICAgICAgICAgICB2YWx1ZV90eXBlIHYoc3RkOjpt
b3ZlKG8ucy52YWwpKTsKKyAgICAgICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KG8u
cy52YWwpOworICAgICAgICAgICAgOjpuZXcgKCZvLnMuZXJyKSBlcnJvcl90eXBlKHN0ZDo6bW92
ZShiYXNlOjpzLmVycikpOworICAgICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRlc3Ryb3ko
YmFzZTo6cy5lcnIpOworICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLnZhbCkgdmFsdWVfdHlw
ZShzdGQ6Om1vdmUodikpOwogICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzd2FwKGJhc2U6OnMuZXJyLCBvLnMuZXJyKTsKICAg
ICB9CiAKLSAgICBjb25zdGV4cHIgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gJmJhc2U6OnMudmFsOyB9Ci0gICAgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgeyBy
ZXR1cm4gJmJhc2U6OnMudmFsOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IFZhbHVlVHlwZSYgb3Bl
cmF0b3IqKCkgY29uc3QgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQotICAgIFZhbHVlVHlwZSYg
b3BlcmF0b3IqKCkgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQotICAgIGNvbnN0ZXhwciBjb25z
dCBWYWx1ZVR5cGUmJiBvcGVyYXRvciooKSBjb25zdCAmJiB7IHJldHVybiBXVEZNb3ZlKGJhc2U6
OnMudmFsKTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIFZhbHVlVHlwZSYmIG9wZXJhdG9yKigp
ICYmIHsgcmV0dXJuIFdURk1vdmUoYmFzZTo6cy52YWwpOyB9CisgICAgY29uc3RleHByIGNvbnN0
IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmYmFzZTo6cy52YWw7IH0K
KyAgICB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmJhc2U6OnMudmFsOyB9Cisg
ICAgY29uc3RleHByIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0ICYgeyByZXR1
cm4gYmFzZTo6cy52YWw7IH0KKyAgICB2YWx1ZV90eXBlJiBvcGVyYXRvciooKSAmIHsgcmV0dXJu
IGJhc2U6OnMudmFsOyB9CisgICAgY29uc3RleHByIGNvbnN0IHZhbHVlX3R5cGUmJiBvcGVyYXRv
ciooKSBjb25zdCAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6cy52YWwpOyB9CisgICAgUkVM
QVhFRF9DT05TVEVYUFIgdmFsdWVfdHlwZSYmIG9wZXJhdG9yKigpICYmIHsgcmV0dXJuIHN0ZDo6
bW92ZShiYXNlOjpzLnZhbCk7IH0KICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQotICAgIGNvbnN0ZXhwciBib29sIGhhc1Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFs
IDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLnZhbCk7IH0KLSAgICBSRUxBWEVE
X0NPTlNURVhQUiBWYWx1ZVR5cGUmIHZhbHVlKCkgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBiYXNl
OjpzLnZhbCA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy52YWwpOyB9Ci0gICAg
Y29uc3RleHByIGNvbnN0IFZhbHVlVHlwZSYmIHZhbHVlKCkgY29uc3QgJiYgeyByZXR1cm4gV1RG
TW92ZShiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwg
YmFzZTo6cy52YWwpKTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIFZhbHVlVHlwZSYmIHZhbHVl
KCkgJiYgeyByZXR1cm4gV1RGTW92ZShiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChFeHBlY3Rl
ZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy52YWwpKTsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBF
cnJvclR5cGUmIGVycm9yKCkgY29uc3QgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5l
cnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKTsgfQotICAgIEVycm9y
VHlwZSYgZXJyb3IoKSAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBl
Y3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVY
UFIgRXJyb3JUeXBlJiYgZXJyb3IoKSAmJiB7IHJldHVybiBXVEZNb3ZlKCFiYXNlOjpoYXMgPyBi
YXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpKTsgfQot
ICAgIGNvbnN0ZXhwciBjb25zdCBFcnJvclR5cGUmJiBlcnJvcigpIGNvbnN0ICYmIHsgcmV0dXJu
IFdURk1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJv
dygpLCBiYXNlOjpzLmVycikpOyB9Ci0gICAgY29uc3RleHByIFVuZXhwZWN0ZWRUeXBlIGdldFVu
ZXhwZWN0ZWQoKSBjb25zdCB7IHJldHVybiBVbmV4cGVjdGVkVHlwZShiYXNlOjpzLmVycik7IH0K
LSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBjb25zdGV4cHIgVmFsdWVUeXBlIHZhbHVlT3IoVSYmIHUp
IGNvbnN0ICYgeyByZXR1cm4gYmFzZTo6aGFzID8gKip0aGlzIDogc3RhdGljX2Nhc3Q8VmFsdWVU
eXBlPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gVmFsdWVU
eXBlIHZhbHVlT3IoVSYmIHUpICYmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IFdURk1vdmUoKip0aGlz
KSA6IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQorICAgIGNv
bnN0ZXhwciBib29sIGhhc192YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQorICAg
IGNvbnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1cm4gYmFz
ZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNj
ZXNzPGVycm9yX3R5cGU+KGJhc2U6OnMuZXJyKSksIGJhc2U6OnMudmFsKTsgfQorICAgIFJFTEFY
RURfQ09OU1RFWFBSIHZhbHVlX3R5cGUmIHZhbHVlKCkgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBi
YXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8ZXJyb3Jf
dHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpOyB9CisgICAgY29uc3RleHByIGNvbnN0
IHZhbHVlX3R5cGUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShiYXNlOjpo
YXMgPyBiYXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8
ZXJyb3JfdHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpKTsgfQorICAgIFJFTEFYRURf
Q09OU1RFWFBSIHZhbHVlX3R5cGUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShiYXNl
OjpoYXMgPyBiYXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nl
c3M8ZXJyb3JfdHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpKTsgfQorICAgIGNvbnN0
ZXhwciBjb25zdCBlcnJvcl90eXBlJiBlcnJvcigpIGNvbnN0ICYgeyByZXR1cm4gIWJhc2U6Omhh
cyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2
b2lkPigpKSwgYmFzZTo6cy5lcnIpOyB9CisgICAgZXJyb3JfdHlwZSYgZXJyb3IoKSAmIHsgcmV0
dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBl
Y3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKTsgfQorICAgIFJFTEFYRURfQ09OU1RF
WFBSIGVycm9yX3R5cGUmJiBlcnJvcigpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSghYmFzZTo6aGFz
ID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZv
aWQ+KCkpLCBiYXNlOjpzLmVycikpOyB9CisgICAgY29uc3RleHByIGNvbnN0IGVycm9yX3R5cGUm
JiBlcnJvcigpIGNvbnN0ICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSghYmFzZTo6aGFzID8gYmFzZTo6
cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBi
YXNlOjpzLmVycikpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gY29uc3RleHByIHZhbHVlX3R5
cGUgdmFsdWVfb3IoVSYmIHUpIGNvbnN0ICYgeyByZXR1cm4gYmFzZTo6aGFzID8gKip0aGlzIDog
c3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQorICAgIHRlbXBs
YXRlPGNsYXNzIFU+IHZhbHVlX3R5cGUgdmFsdWVfb3IoVSYmIHUpICYmIHsgcmV0dXJuIGJhc2U6
OmhhcyA/IHN0ZDo6bW92ZSgqKnRoaXMpIDogc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpm
b3J3YXJkPFU+KHUpKTsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRT4KLWNsYXNzIEV4cGVjdGVk
PHZvaWQsIEU+IDogcHJpdmF0ZSBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDx2b2lkLCBFPiB7
Ci0gICAgdHlwZWRlZiBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDx2b2lkLCBFPiBiYXNlOwor
Y2xhc3MgZXhwZWN0ZWQ8dm9pZCwgRT4gOiBwcml2YXRlIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNl
X3NlbGVjdDx2b2lkLCBFPiB7CisgICAgdHlwZWRlZiBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9z
ZWxlY3Q8dm9pZCwgRT4gYmFzZTsKIAogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFz
ZTo6VmFsdWVUeXBlIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OkVycm9y
VHlwZSBFcnJvclR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpVbmV4cGVjdGVkVHlw
ZSBVbmV4cGVjdGVkVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUg
dmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OmVycm9yX3R5cGUgZXJyb3Jf
dHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVj
dGVkX3R5cGU7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVy
cm9yVHlwZT4gdHlwZTsKKyAgICB0eXBlZGVmIGV4cGVjdGVkPHZhbHVlX3R5cGUsIGVycm9yX3R5
cGU+IHR5cGU7CiAKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5k
IHsKLSAgICAgICAgdXNpbmcgdHlwZSA9IEV4cGVjdGVkPFUsIEVycm9yVHlwZT47CisgICAgICAg
IHVzaW5nIHR5cGUgPSBleHBlY3RlZDxVLCBlcnJvcl90eXBlPjsKICAgICB9OwogCi0gICAgY29u
c3RleHByIEV4cGVjdGVkKCkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZykgeyB9Ci0g
ICAgRXhwZWN0ZWQoY29uc3QgRXhwZWN0ZWQmKSA9IGRlZmF1bHQ7Ci0gICAgRXhwZWN0ZWQoRXhw
ZWN0ZWQmJikgPSBkZWZhdWx0OwotICAgIC8vIGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChp
bl9wbGFjZV90KTsKLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZFR5cGUgY29uc3Qm
IHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUoKSkgeyB9Ci0gICAg
Y29uc3RleHByIEV4cGVjdGVkKFVuZXhwZWN0ZWRUeXBlJiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0
YWlsOjpFcnJvclRhZywgc3RkOjpmb3J3YXJkPFVuZXhwZWN0ZWRUeXBlPih1KS52YWx1ZSgpKSB7
IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVk
PEVycj4gY29uc3QmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUo
KSkgeyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKCkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWls
Ojp2YWx1ZV90YWcpIHsgfQorICAgIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkJikgPSBkZWZhdWx0
OworICAgIGV4cGVjdGVkKGV4cGVjdGVkJiYpID0gZGVmYXVsdDsKKyAgICAvLyBjb25zdGV4cHIg
ZXhwbGljaXQgZXhwZWN0ZWQoaW5fcGxhY2VfdCk7CisgICAgY29uc3RleHByIGV4cGVjdGVkKHVu
ZXhwZWN0ZWRfdHlwZSBjb25zdCYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90
YWcsIHUudmFsdWUoKSkgeyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKHVuZXhwZWN0ZWRfdHlw
ZSYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCBzdGQ6OmZvcndhcmQ8
dW5leHBlY3RlZF90eXBlPih1KS52YWx1ZSgpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+
IGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkPEVycj4gY29uc3QmIHUpIDogYmFzZShfX2V4
cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1LnZhbHVlKCkpIHsgfQogCi0gICAgfkV4cGVjdGVk
KCkgPSBkZWZhdWx0OworICAgIH5leHBlY3RlZCgpID0gZGVmYXVsdDsKIAotICAgIEV4cGVjdGVk
JiBvcGVyYXRvcj0oY29uc3QgRXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0
dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShFeHBlY3RlZCYmIGUpIHsgdHlw
ZShXVEZNb3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQm
IG9wZXJhdG9yPShjb25zdCBVbmV4cGVjdGVkVHlwZSYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMp
OyByZXR1cm4gKnRoaXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgotICAgIEV4cGVj
dGVkJiBvcGVyYXRvcj0oVW5leHBlY3RlZFR5cGUmJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dh
cCgqdGhpcyk7IHJldHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCisg
ICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBleHBlY3RlZCYgZSkgeyB0eXBlKGUpLnN3YXAo
KnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGV4cGVjdGVk
JiYgZSkgeyB0eXBlKHN0ZDo6bW92ZShlKSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQor
ICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgdW5leHBlY3RlZF90eXBlJiB1KSB7IHR5cGUo
dSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFw
ZXIuCisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPSh1bmV4cGVjdGVkX3R5cGUmJiB1KSB7IHR5cGUo
c3RkOjptb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9IC8vIE5vdCBpbiB0aGUg
Y3VycmVudCBwYXBlci4KICAgICAvLyB2b2lkIGVtcGxhY2UoKTsKIAotICAgIHZvaWQgc3dhcChF
eHBlY3RlZCYgbykKKyAgICB2b2lkIHN3YXAoZXhwZWN0ZWQmIG8pCiAgICAgewogICAgICAgICB1
c2luZyBzdGQ6OnN3YXA7CiAgICAgICAgIGlmIChiYXNlOjpoYXMgJiYgby5oYXMpIHsKICAgICAg
ICAgICAgIC8vIERvIG5vdGhpbmcuCiAgICAgICAgIH0gZWxzZSBpZiAoYmFzZTo6aGFzICYmICFv
LmhhcykgewotICAgICAgICAgICAgRXJyb3JUeXBlIGUoV1RGTW92ZShvLnMuZXJyKSk7Ci0gICAg
ICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBFcnJvclR5cGUoZSk7CisgICAgICAgICAgICBl
cnJvcl90eXBlIGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsKKyAgICAgICAgICAgIDo6bmV3ICgmYmFz
ZTo6cy5lcnIpIGVycm9yX3R5cGUoZSk7CiAgICAgICAgICAgICBzd2FwKGJhc2U6Omhhcywgby5o
YXMpOwogICAgICAgICB9IGVsc2UgaWYgKCFiYXNlOjpoYXMgJiYgby5oYXMpIHsKLSAgICAgICAg
ICAgIDo6bmV3ICgmby5zLmVycikgRXJyb3JUeXBlKFdURk1vdmUoYmFzZTo6cy5lcnIpKTsKKyAg
ICAgICAgICAgIDo6bmV3ICgmby5zLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy5l
cnIpKTsKICAgICAgICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgc3dhcChiYXNlOjpzLmVyciwgby5zLmVycik7CiAgICAgfQogCiAgICAg
Y29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBiYXNlOjpo
YXM7IH0KLSAgICBjb25zdGV4cHIgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6
OmhhczsgfQotICAgIHZvaWQgdmFsdWUoKSBjb25zdCB7ICFiYXNlOjpoYXMgPyBFeHBlY3RlZERl
dGFpbDo6VGhyb3coKSA6IHZvaWQoKTsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBFJiBlcnJvcigp
IGNvbnN0ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0
YWlsOjpUaHJvdygpLCBiYXNlOjpzLmVycik7IH0KLSAgICBFJiBlcnJvcigpICYgeyByZXR1cm4g
IWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNl
OjpzLmVycik7IH0KLSAgICBSRUxBWEVEX0NPTlNURVhQUiBFJiYgZXJyb3IoKSAmJiB7IHJldHVy
biBXVEZNb3ZlKCFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhy
b3coKSwgYmFzZTo6cy5lcnIpKTsgfQotICAgIGNvbnN0ZXhwciBVbmV4cGVjdGVkVHlwZSBnZXRV
bmV4cGVjdGVkKCkgY29uc3QgeyByZXR1cm4gVW5leHBlY3RlZFR5cGUoYmFzZTo6cy5lcnIpOyB9
CisgICAgY29uc3RleHByIGJvb2wgaGFzX3ZhbHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFz
OyB9CisgICAgdm9pZCB2YWx1ZSgpIGNvbnN0IHsgIWJhc2U6OmhhcyA/IF9fRVhQRUNURURfVEhS
T1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSA6IHZvaWQoKTsgfQorICAgIGNvbnN0ZXhw
ciBjb25zdCBFJiBlcnJvcigpIGNvbnN0ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMu
ZXJyIDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFz
ZTo6cy5lcnIpOyB9CisgICAgRSYgZXJyb3IoKSAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNl
OjpzLmVyciA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSks
IGJhc2U6OnMuZXJyKTsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIEUmJiBlcnJvcigpICYmIHsg
cmV0dXJuIHN0ZDo6bW92ZSghYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9U
SFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpzLmVycikpOyB9CiB9Owog
Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4g
Ym9vbCh4KSA9PSBib29sKHkpICYmICh4ID8geC52YWx1ZSgpID09IHkudmFsdWUoKSA6IHguZXJy
b3IoKSA9PSB5LmVycm9yKCkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBFeHBlY3Rl
ZDxULCBFPiYgeSkgeyByZXR1cm4gISh4ID09IHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIEU+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIHgsIGNvbnN0
IEV4cGVjdGVkPHZvaWQsIEU+JiB5KSB7IHJldHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHgg
PyB0cnVlIDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVCwg
Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxULCBFPiYg
eCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA9PSBFeHBlY3RlZDxULCBFPih5KTsgfQotdGVtcGxh
dGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4
LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPT0g
eTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCAhPSBFeHBl
Y3RlZDxULCBFPih5KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBUJiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1
cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3Qg
ZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHgu
dmFsdWUoKSA9PSB5LnZhbHVlKCkgOiB4LmVycm9yKCkgPT0geS5lcnJvcigpKTsgfQordGVtcGxh
dGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBl
Y3RlZDxULCBFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuICEoeCA9PSB5
KTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBVbmV4cGVjdGVkPEU+JiB5KSB7IHJl
dHVybiB4ID09IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0
IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSA9PSB5OyB9Ci10
ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBVbmV4cGVjdGVkPEU+JiB5KSB7IHJldHVybiB4ICE9
IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0IEV4cGVjdGVk
PFQsIEU+JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSAhPSB5OyB9Cit0ZW1wbGF0ZTxj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPHZvaWQsIEU+
JiB4LCBjb25zdCBleHBlY3RlZDx2b2lkLCBFPiYgeSkgeyByZXR1cm4gYm9vbCh4KSA9PSBib29s
KHkpICYmICh4ID8gdHJ1ZSA6IHguZXJyb3IoKSA9PSB5LmVycm9yKCkpOyB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+IHZvaWQgc3dhcChFeHBlY3RlZDxULCBFPiYgeCwgRXhw
ZWN0ZWQ8VCwgRT4mIHkpIHsgeC5zd2FwKHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25z
dCBUJiB5KSB7IHJldHVybiB4ID09IGV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxULCBFPih4KSA9PSB5OyB9Cit0
ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ICE9IGV4cGVjdGVkPFQs
IEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBl
Y3RlZDxULCBFPih4KSAhPSB5OyB9CiAKLS8vIE5vdGU6IHRoaXMgaXNuJ3QgaW4gdGhlIGN1cnJl
bnQgcHJvcG9zYWwgYmVjYXVzZSBpdCByZWxpZXMgb24gQysrMTcgZGVkdWN0aW9uIGd1aWRlcyBp
bnN0ZWFkLgotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRSA9IHN0ZDo6bnVsbG9wdF90PiBjb25z
dGV4cHIgRXhwZWN0ZWQ8c3RkOjpkZWNheV90PFQ+LCBFPiBtYWtlRXhwZWN0ZWQoVCYmIHYpCi17
Ci0gICAgcmV0dXJuIEV4cGVjdGVkPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIEU+KHN0
ZDo6Zm9yd2FyZDxUPih2KSk7Ci19Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4
cHIgRXhwZWN0ZWQ8VCwgc3RkOjpkZWNheV90PEU+PiBtYWtlRXhwZWN0ZWRGcm9tRXJyb3IoRSYm
IGUpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIHN0ZDo6ZGVjYXlfdDxFPj4obWFrZVVuZXhwZWN0ZWQo
ZSkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFLCBjbGFzcyBVPiBjb25zdGV4cHIgRXhw
ZWN0ZWQ8VCwgRT4gbWFrZUV4cGVjdGVkRnJvbUVycm9yKFUmJiB1KSB7IHJldHVybiBFeHBlY3Rl
ZDxULCBFPihtYWtlVW5leHBlY3RlZChFIHsgc3RkOjpmb3J3YXJkPFU+KHUpIH0gKSk7IH0KLS8v
IHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEUgPSBzdGQ6Om51bGxvcHRfdD4gY29uc3RleHByIEV4
cGVjdGVkPHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPEY+Ojp0eXBlLCBFPiBtYWtlRXhwZWN0ZWRf
ZnJvbV9jYWxsKEYgZik7Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCB1bmV4cGVjdGVkPEU+
JiB5KSB7IHJldHVybiB4ID09IGV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuZXhwZWN0ZWQ8RT4m
IHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxULCBFPih4KSA9
PSB5OyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCB1bmV4cGVjdGVkPEU+JiB5KSB7IHJl
dHVybiB4ICE9IGV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxULCBFPih4KSAhPSB5OyB9CiAK
LWlubGluZSBFeHBlY3RlZDx2b2lkLCBzdGQ6Om51bGxvcHRfdD4gbWFrZUV4cGVjdGVkKCkgeyBy
ZXR1cm4gRXhwZWN0ZWQ8dm9pZCwgc3RkOjpudWxsb3B0X3Q+KCk7IH0KK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEU+IHZvaWQgc3dhcChleHBlY3RlZDxULCBFPiYgeCwgZXhwZWN0ZWQ8
VCwgRT4mIHkpIHsgeC5zd2FwKHkpOyB9CiAKLX0gLy8gbmFtZXNwYWNlIFdURgorfX19IC8vIG5h
bWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCiAKLXVzaW5nIFdURjo6
SW5QbGFjZTsKLXVzaW5nIFdURjo6VW5leHBlY3RlZDsKLXVzaW5nIFdURjo6bWFrZVVuZXhwZWN0
ZWQ7Ci11c2luZyBXVEY6OlVuZXhwZWN0OwotdXNpbmcgV1RGOjpFeHBlY3RlZDsKLXVzaW5nIFdU
Rjo6bWFrZUV4cGVjdGVkOwotdXNpbmcgV1RGOjptYWtlRXhwZWN0ZWRGcm9tRXJyb3I7CitfX0VY
UEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgc3RkOjpleHBlcmltZW50YWw6OnVuZXhw
ZWN0ZWRfdCYgdW5leHBlY3QgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6dW5leHBlY3Q7Cit0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiB1c2luZyBFeHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpl
eHBlY3RlZDxULCBFPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCBmM2RjY2I4Li44MDllODJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDksIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC01OCw3ICs1OCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2gg
eyB1c2luZyBIYXNoID0gdm9pZDsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4+IGNsYXNzIFZhcmlhbnQ7Ci10ZW1wbGF0ZTxj
bGFzcywgY2xhc3M+IGNsYXNzIEV4cGVjdGVkOwogdGVtcGxhdGU8dHlwZW5hbWUsIHNpemVfdCA9
IDAsIHR5cGVuYW1lID0gQ3Jhc2hPbk92ZXJmbG93LCBzaXplX3QgPSAxNiwgdHlwZW5hbWUgPSBG
YXN0TWFsbG9jPiBjbGFzcyBWZWN0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZT46Okhhc2gsIHR5cGVuYW1lID0gSGFzaFRy
YWl0czxWYWx1ZT4+IGNsYXNzIEhhc2hDb3VudGVkU2V0OwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8
S2V5QXJnPjo6SGFzaCwgdHlwZW5hbWUgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lID0g
SGFzaFRyYWl0czxNYXBwZWRBcmc+PiBjbGFzcyBIYXNoTWFwOwpAQCAtNjYsMTIgKzY1LDE4IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1bHRI
YXNoPFZhbHVlQXJnPjo6SGFzaCwgdHlwCiAKIH0KIAorbmFtZXNwYWNlIHN0ZCB7CituYW1lc3Bh
Y2UgZXhwZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKK3Rl
bXBsYXRlPGNsYXNzLCBjbGFzcz4gY2xhc3MgZXhwZWN0ZWQ7Cit0ZW1wbGF0ZTxjbGFzcz4gY2xh
c3MgdW5leHBlY3RlZDsKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50YWw6OmZ1bmRh
bWVudGFsc192MworCiB1c2luZyBXVEY6OkF0b21pY1N0cmluZzsKIHVzaW5nIFdURjo6QXRvbWlj
U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjsKIHVzaW5nIFdURjo6Q1N0cmluZzsKLXVzaW5nIFdURjo6RXhwZWN0ZWQ7
CiB1c2luZyBXVEY6OkZ1bmN0aW9uOwogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7CiB1
c2luZyBXVEY6Okhhc2hDb3VudGVkU2V0OwpAQCAtOTMsMyArOTgsNiBAQCB1c2luZyBXVEY6OlN0
cmluZ1ZpZXc7CiB1c2luZyBXVEY6OlRleHRQb3NpdGlvbjsKIHVzaW5nIFdURjo6VmFyaWFudDsK
IHVzaW5nIFdURjo6VmVjdG9yOworCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiB1c2luZyBF
eHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBlY3RlZDxULCBFPjsKK3RlbXBsYXRlPGNs
YXNzIEU+IHVzaW5nIFVuZXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6dW5leHBlY3RlZDxF
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25hbC5oCmluZGV4IGQwMjZlMWYuLmQ5ZTU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL09wdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaApAQCAtMjgy
LDEwICsyODIsNiBAQCBjb25zdGV4cHIgVSBjb252ZXJ0KFUgdikgeyByZXR1cm4gdjsgfQogY29u
c3RleHByIHN0cnVjdCB0cml2aWFsX2luaXRfdHt9IHRyaXZpYWxfaW5pdHt9OwogCiAKLS8vIDIw
LjUuNiwgSW4tcGxhY2UgY29uc3RydWN0aW9uCi1jb25zdGV4cHIgc3RydWN0IGluX3BsYWNlX3R7
fSBpbl9wbGFjZXt9OwotCi0KIC8vIDIwLjUuNywgRGlzZW5nYWdlZCBzdGF0ZSBpbmRpY2F0b3IK
IHN0cnVjdCBudWxsb3B0X3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4
dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggMTJlMzkzYS4uN2Zh
MWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTUyNSw2ICs1MjUsMjkgQEAgdGVtcGxhdGU8
Y2xhc3MgQjAsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MuLi4gQm4+IHN0cnVjdCB3dGZfY29u
anVuY3Rpb25faW1wbDwKIHRlbXBsYXRlPGNsYXNzLi4uIF9BcmdzPiBzdHJ1Y3QgY29uanVuY3Rp
b24gOiB3dGZfY29uanVuY3Rpb25faW1wbDxfQXJncy4uLj4geyB9OwogI2VuZGlmCiAKKyNpZiBf
X2NwbHVzcGx1cyA8IDIwMTcwM0wKKworLy8gVGhlc2UgYXJlIGlubGluZSB2YXJpYWJsZSBmb3Ig
QysrMTcgYW5kIGxhdGVyLgorI2RlZmluZSBfX0lOX1BMQUNFX0lOTElORV9WQVJJQUJMRSBzdGF0
aWMgY29uc3QKKworc3RydWN0IGluX3BsYWNlX3QgeworICAgIGV4cGxpY2l0IGluX3BsYWNlX3Qo
KSA9IGRlZmF1bHQ7Cit9OworX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgY29uc3RleHByIGlu
X3BsYWNlX3QgaW5fcGxhY2UgeyB9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGluX3Bs
YWNlX3R5cGVfdCB7CisgICAgZXhwbGljaXQgaW5fcGxhY2VfdHlwZV90KCkgPSBkZWZhdWx0Owor
fTsKK3RlbXBsYXRlIDxjbGFzcyBUPgorX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgY29uc3Rl
eHByIGluX3BsYWNlX3R5cGVfdDxUPiBpbl9wbGFjZV90eXBlIHsgfTsKKwordGVtcGxhdGUgPHNp
emVfdCBJPiBzdHJ1Y3QgaW5fcGxhY2VfaW5kZXhfdCB7CisgICAgZXhwbGljaXQgaW5fcGxhY2Vf
aW5kZXhfdCgpID0gZGVmYXVsdDsKK307Cit0ZW1wbGF0ZSA8c2l6ZV90IEk+CitfX0lOX1BMQUNF
X0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgaW5fcGxhY2VfaW5kZXhfdDxJPiBpbl9wbGFjZV9p
bmRleCB7IH07CisjZW5kaWYgLy8gX19jcGx1c3BsdXMgPCAyMDE3MDNMCisKIH0gLy8gbmFtZXNw
YWNlIHN0ZAogCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4odmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVk
LmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTY1M2IzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Vu
ZXhwZWN0ZWQuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBJbXBsZW1l
bnRhdGlvbiBvZiBMaWJyYXJ5IEZ1bmRhbWVudGFscyB2MydzIHN0ZDo6ZXhwZWN0ZWQsIGFzIGRl
c2NyaWJlZCBoZXJlOiBodHRwOi8vd2cyMS5saW5rL3AwMzIzcjQKKworI3ByYWdtYSBvbmNlCisK
Ky8qCisgICAgdW5leHBlY3RlZCBzeW5vcHNpcworCituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFj
ZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgeworICAg
IC8vID8uPy4zLCBVbmV4cGVjdGVkIG9iamVjdCB0eXBlCisgICAgdGVtcGxhdGUgPGNsYXNzIEU+
CisgICAgICBjbGFzcyB1bmV4cGVjdGVkOworCisgICAgLy8gPy4/LjQsIFVuZXhwZWN0ZWQgcmVs
YXRpb25hbCBvcGVyYXRvcnMKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgICAgY29uc3Rl
eHByIGJvb2wKKyAgICAgICAgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiwgY29uc3Qg
dW5leHBlY3RlZDxFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgICAgICBjb25zdGV4
cHIgYm9vbAorICAgICAgICBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mLCBjb25zdCB1
bmV4cGVjdGVkPEU+Jik7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICBjbGFzcyB1bmV4
cGVjdGVkIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHVuZXhwZWN0ZWQoKSA9IGRlbGV0ZTsKKyAg
ICAgICAgY29uc3RleHByIGV4cGxpY2l0IHVuZXhwZWN0ZWQoY29uc3QgRSYpOworICAgICAgICBj
b25zdGV4cHIgZXhwbGljaXQgdW5leHBlY3RlZChFJiYpOworICAgICAgICBjb25zdGV4cHIgY29u
c3QgRSYgdmFsdWUoKSBjb25zdCAmOworICAgICAgICBjb25zdGV4cHIgRSYgdmFsdWUoKSAmOwor
ICAgICAgICBjb25zdGV4cHIgRSYmIHZhbHVlKCkgJiY7CisgICAgICAgIGNvbnN0ZXhwciBFIGNv
bnN0JiYgdmFsdWUoKSBjb25zdCYmOworICAgIHByaXZhdGU6CisgICAgICAgIEUgdmFsOyAvLyBl
eHBvc2l0aW9uIG9ubHkKKyAgICB9OworCit9fX0KKworKi8KKworI2luY2x1ZGUgPGNzdGRsaWI+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25h
bWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7CitpbmxpbmUgbmFtZXNwYWNl
IGZ1bmRhbWVudGFsc192MyB7CisKK3RlbXBsYXRlPGNsYXNzIEU+CitjbGFzcyB1bmV4cGVjdGVk
IHsKK3B1YmxpYzoKKyAgICB1bmV4cGVjdGVkKCkgPSBkZWxldGU7CisgICAgY29uc3RleHByIGV4
cGxpY2l0IHVuZXhwZWN0ZWQoY29uc3QgRSYgZSkgOiB2YWwoZSkgeyB9CisgICAgY29uc3RleHBy
IGV4cGxpY2l0IHVuZXhwZWN0ZWQoRSYmIGUpIDogdmFsKHN0ZDo6Zm9yd2FyZDxFPihlKSkgeyB9
CisgICAgY29uc3RleHByIGNvbnN0IEUmIHZhbHVlKCkgY29uc3QgJiB7IHJldHVybiB2YWw7IH0K
KyAgICBSRUxBWEVEX0NPTlNURVhQUiBFJiB2YWx1ZSgpICYgeyByZXR1cm4gdmFsOyB9CisgICAg
UkVMQVhFRF9DT05TVEVYUFIgRSYmIHZhbHVlKCkgJiYgeyByZXR1cm4gV1RGTW92ZSh2YWwpOyB9
CisgICAgUkVMQVhFRF9DT05TVEVYUFIgY29uc3QgRSYmIHZhbHVlKCkgY29uc3QgJiYgeyByZXR1
cm4gV1RGTW92ZSh2YWwpOyB9CisKK3ByaXZhdGU6CisgICAgRSB2YWw7Cit9OworCit0ZW1wbGF0
ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuZXhwZWN0ZWQ8RT4m
IGxocywgY29uc3QgdW5leHBlY3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSA9PSBy
aHMudmFsdWUoKTsgfQordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCB1bmV4cGVjdGVkPEU+JiBsaHMsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHJocykgeyBy
ZXR1cm4gbGhzLnZhbHVlKCkgIT0gcmhzLnZhbHVlKCk7IH0KKworfX19IC8vIG5hbWVzcGFjZSBz
dGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCisKK3RlbXBsYXRlPGNsYXNzIEU+IHVz
aW5nIFVuZXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6dW5leHBlY3RlZDxFPjsKKworLy8g
Tm90IGluIHRoZSBzdGQ6OmV4cGVjdGVkIHNwZWMsIGJ1dCB1c2VmdWwgdG8gd29yayBhcm91bmQg
bGFjayBvZiBDKysxNyBkZWR1Y3Rpb24gZ3VpZGVzLgordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3Rl
eHByIFVuZXhwZWN0ZWQ8c3RkOjpkZWNheV90PEU+PiBtYWtlVW5leHBlY3RlZChFJiYgdikgeyBy
ZXR1cm4gVW5leHBlY3RlZDx0eXBlbmFtZSBzdGQ6OmRlY2F5PEU+Ojp0eXBlPihzdGQ6OmZvcndh
cmQ8RT4odikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE5MWM2MS4uMTEwMjE0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEwMSBAQAorMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNv
ZGluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHZhcmlvdXMgdXNlcyBvZiBFeHBlY3RlZCwgbW9zdGx5IHJlbmFtaW5nIHZhbHVl
T3IgYW5kCisgICAgICAgIGhhc1ZhbHVlIHRvIHRoZSBTVEwgbmFtaW5nIGNvbnZlbnRpb24uCisK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6
OmJhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpiYXRj
aFB1dE9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Om9wZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlw
dEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGNvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXREb21haW5MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6bG9hZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmxvYWRFbmNvZGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OnBhcnNlUnVsZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmNhY2hlZEZvbnQp
OgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmxvYWRJbWFn
ZSk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZUltcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vQ2Fs
bGJhY2tSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrUmVzdWx0PFJldHVyblR5
cGU+Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrUmVzdWx0PFJldHVy
blR5cGU+OjpyZWxlYXNlUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOgorICAgICAgICAoV2ViQ29yZTo6
RXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46Omhhc0V4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPjo6aGFzRXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWF4
TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5r
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3Mp
OgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRv
T25seUhUTUxOb25OZWdhdGl2ZSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAg
ICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9h
ZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQpOgorICAgICAgICAqIGxv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6
c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVlc3RJbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6bG9hZEZvbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6OnVwZGF0ZUV4dGVybmFsRG9jdW1lbnQpOgorICAgICAgICAqIHhtbC9YU0xJbXBvcnRSdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCk6CisKIDIw
MTctMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wcm92ZSBmaWx0ZXIgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcAppbmRleCA1ZWEyMjBiLi43OGZlMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNDIwLDEyICs0MjAsMTIgQEAgdm9pZCBET01DYWNo
ZTo6cmV0cmlldmVSZWNvcmRzKGNvbnN0IFVSTCYgdXJsLCBXVEY6OkZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDwKIAogICAgIG1fY29ubmVjdGlvbi0+cmV0cmlldmVSZWNvcmRzKG1faWRlbnRp
ZmllciwgcmV0cmlldmVVUkwsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShS
ZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0g
ICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJl
c3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKERPTUNhY2hlRW5n
aW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc1ZhbHVl
KCkpCisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAg
IHVwZGF0ZVJlY29yZHMoV1RGTW92ZShyZXN1bHQudmFsdWUoKSkpOwogICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQg
RE9NQ2FjaGU6OmJhdGNoRGVsZXRlT3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVz
dCwgQ2FjaGVRdWVyeU9wdGlvCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgIG1f
Y29ubmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24obV9pZGVudGlmaWVyLCByZXF1ZXN0Lmlu
dGVybmFsUmVxdWVzdCgpLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAg
ICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVl
KCkpCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3Io
KSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKCFyZXN1bHQu
dmFsdWUoKS5pc0VtcHR5KCkpOwpAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgRE9NQ2FjaGU6OmJh
dGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgV1RGOjpGdW5jdGlvbjx2
b2lkKEV4CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgIG1fY29ubmVjdGlvbi0+
YmF0Y2hQdXRPcGVyYXRpb24obV9pZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYg
cmVzdWx0KSB7CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlv
bihyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggNDZlNmYyYi4uODU5OTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQo
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwog
ICAgIG1fY29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2luLCBtX3VwZGF0ZUNvdW50ZXIs
IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZUluZm9zT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAg
ICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhh
c192YWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGVFbmdpbmU6OmVy
cm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6
Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNl
PEQKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgICAgICBtX2Nvbm5lY3Rp
b24tPm9wZW4ob3JpZ2luLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkK
ICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmVycm9y
VG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKQEAg
LTIyNyw3ICsyMjcsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JgogICAgICAgICBzZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVz
W3Bvc2l0aW9uXS0+aWRlbnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUo
KSkKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmVy
cm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDA2M2I3MDIuLjI2NmNkODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKIAogICAgICAg
ICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNhY2hlSWRlbnRpZmllciwgIXJl
c3VsdC5oYXNWYWx1ZSgpIHx8IHJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVJZGVudGlmaWVyLCAhcmVz
dWx0Lmhhc192YWx1ZSgpIHx8IHJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgICAgIHJlbW92ZUNvbXBsZXRl
ZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsCiAKICAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0cmll
dmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9zT3JFcnJv
ciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBDYWNoZUluZm9zT3JFcnJvciBpc29s
YXRlZFJlc3VsdDsKLSAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICBpc29sYXRlZFJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBpc29sYXRlZFJlc3VsdCA9IHJlc3VsdC52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOwpAQCAtMTkw
LDcgKzE5MCw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4g
cmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhjb25zdCBWZWN0b3I8CiAKIHN0YXRpYyBpbmxpbmUgRXhw
ZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiByZWNvcmRzRGF0YU9y
RXJyb3JGcm9tUmVjb3Jkcyhjb25zdCBSZWNvcmRzT3JFcnJvciYgcmVzdWx0KQogewotICAgIGlm
ICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7CiAKICAgICByZXR1cm4g
cmVjb3Jkc0RhdGFGcm9tUmVjb3JkcyhyZXN1bHQudmFsdWUoKSk7CkBAIC0yMDMsNyArMjAzLDcg
QEAgc3RhdGljIGlubGluZSBWZWN0b3I8UmVjb3JkPiByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFZl
Y3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGEKIAogc3RhdGljIGlubGluZSBSZWNvcmRzT3JFcnJv
ciByZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YShFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJl
YWRSZWNvcmREYXRhPiwgRXJyb3I+JiYgcmVjb3Jkc0RhdGEpCiB7Ci0gICAgaWYgKCFyZWNvcmRz
RGF0YS5oYXNWYWx1ZSgpKQorICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzX3ZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZWNvcmRzRGF0YS5lcnJvcigpKTsKICAgICByZXR1
cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZl
dGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5jcHAKaW5kZXggZWUwNjhmNi4uZDY2MjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1
ZXN0U2NyaXB0V2l0aENhY2hlKEQKICAgICBpZiAoIW1faW5pdGlhdG9yTmFtZS5pc051bGwoKSkK
ICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKIAotICAgIHJl
dHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTY3JpcHQoV1RGTW92
ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29y
KG51bGxwdHIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAppbmRleCA1NmRmZjZh
Li5lZjYzNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0
YXRpYyB2b2lkIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMs
IFVuaXZlcnNhbEFjdGlvblNldCYmCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENv
bnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNP
TikKIHsKICAgICBhdXRvIHJ1bGVMaXN0ID0gcGFyc2VSdWxlTGlzdChXVEZNb3ZlKHJ1bGVKU09O
KSk7Ci0gICAgaWYgKCFydWxlTGlzdC5oYXNWYWx1ZSgpKQorICAgIGlmICghcnVsZUxpc3QuaGFz
X3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBydWxlTGlzdC5lcnJvcigpOwogICAgIFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2VkUnVsZUxpc3QgPSBXVEZNb3ZlKHJ1bGVMaXN0LnZh
bHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDE2NjE0YzUuLmNjZGIyNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxW
ZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXRTdHJpbmdMaXN0KEV4ZWNTdGF0ZSYg
ZXhlYywKIHN0YXRpYyBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBn
ZXREb21haW5MaXN0KEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPYmplY3QqIGFycmF5T2JqZWN0
KQogewogICAgIGF1dG8gc3RyaW5ncyA9IGdldFN0cmluZ0xpc3QoZXhlYywgYXJyYXlPYmplY3Qp
OwotICAgIGlmICghc3RyaW5ncy5oYXNWYWx1ZSgpKQorICAgIGlmICghc3RyaW5ncy5oYXNfdmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIHN0cmluZ3M7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBz
dHJpbmdzLnZhbHVlKCkpIHsKICAgICAgICAgLy8gRG9tYWlucyBzaG91bGQgYmUgcHVueWNvZGUg
ZW5jb2RlZCBsb3dlciBjYXNlLgpAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyBFeHBlY3RlZDxU
cmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29u
c3QgSlNPCiAgICAgY29uc3QgSlNWYWx1ZSBpZkRvbWFpblZhbHVlID0gdHJpZ2dlck9iamVjdC5n
ZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJpZi1kb21haW4iKSk7CiAg
ICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSAmJiBpZkRvbWFpblZhbHVlLmlzT2JqZWN0KCkpIHsK
ICAgICAgICAgYXV0byBpZkRvbWFpbiA9IGdldERvbWFpbkxpc3QoZXhlYywgYXNPYmplY3QoaWZE
b21haW5WYWx1ZSkpOwotICAgICAgICBpZiAoIWlmRG9tYWluLmhhc1ZhbHVlKCkpCisgICAgICAg
IGlmICghaWZEb21haW4uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoaWZEb21haW4uZXJyb3IoKSk7CiAgICAgICAgIHRyaWdnZXIuY29uZGl0aW9ucyA9IFdU
Rk1vdmUoaWZEb21haW4udmFsdWUoKSk7CiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMu
aXNFbXB0eSgpKQpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBz
dGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPCiAg
ICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvblR5cGUgIT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlw
ZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5z
aW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOwogICAgICAgICBhdXRvIHVubGVzc0Rv
bWFpbiA9IGdldERvbWFpbkxpc3QoZXhlYywgYXNPYmplY3QodW5sZXNzRG9tYWluVmFsdWUpKTsK
LSAgICAgICAgaWYgKCF1bmxlc3NEb21haW4uaGFzVmFsdWUoKSkKKyAgICAgICAgaWYgKCF1bmxl
c3NEb21haW4uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
dW5sZXNzRG9tYWluLmVycm9yKCkpOwogICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZN
b3ZlKHVubGVzc0RvbWFpbi52YWx1ZSgpKTsKICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9u
cy5pc0VtcHR5KCkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIEV4cGVjdGVkPFRyaWdnZXIs
IHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU08K
ICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9uVHlwZSAhPSBUcmlnZ2VyOjpDb25kaXRpb25U
eXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRl
bnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9ucyk7CiAgICAgICAgIGF1dG8gaWZUb3BV
UkwgPSBnZXRTdHJpbmdMaXN0KGV4ZWMsIGFzT2JqZWN0KGlmVG9wVVJMVmFsdWUpKTsKLSAgICAg
ICAgaWYgKCFpZlRvcFVSTC5oYXNWYWx1ZSgpKQorICAgICAgICBpZiAoIWlmVG9wVVJMLmhhc192
YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlmVG9wVVJMLmVycm9y
KCkpOwogICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3ZlKGlmVG9wVVJMLnZhbHVl
KCkpOwogICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTIxOCw3
ICsyMTgsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2Fk
VHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTTwogICAgICAgICBpZiAodHJpZ2dlci5j
b25kaXRpb25UeXBlICE9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpCiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlw
bGVDb25kaXRpb25zKTsKICAgICAgICAgYXV0byB1bmxlc3NUb3BVUkwgPSBnZXRTdHJpbmdMaXN0
KGV4ZWMsIGFzT2JqZWN0KHVubGVzc1RvcFVSTFZhbHVlKSk7Ci0gICAgICAgIGlmICghdW5sZXNz
VG9wVVJMLmhhc1ZhbHVlKCkpCisgICAgICAgIGlmICghdW5sZXNzVG9wVVJMLmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHVubGVzc1RvcFVSTC5lcnJvcigp
KTsKICAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZSh1bmxlc3NUb3BVUkwudmFs
dWUoKSk7CiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjg4
LDExICsyODgsMTEgQEAgc3RhdGljIEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8QWN0aW9uPiwgc3Rk
OjplcnJvcl9jb2RlPiBsb2FkQWN0aW9uKEV4ZWNTdGF0ZSYgZXgKIHN0YXRpYyBFeHBlY3RlZDxz
dGQ6Om9wdGlvbmFsPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBsb2Fk
UnVsZShFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTT2JqZWN0JiBydWxlT2JqZWN0KQogewogICAg
IGF1dG8gdHJpZ2dlciA9IGxvYWRUcmlnZ2VyKGV4ZWMsIHJ1bGVPYmplY3QpOwotICAgIGlmICgh
dHJpZ2dlci5oYXNWYWx1ZSgpKQorICAgIGlmICghdHJpZ2dlci5oYXNfdmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHRyaWdnZXIuZXJyb3IoKSk7CiAKICAgICBhdXRvIGFj
dGlvbiA9IGxvYWRBY3Rpb24oZXhlYywgcnVsZU9iamVjdCk7Ci0gICAgaWYgKCFhY3Rpb24uaGFz
VmFsdWUoKSkKKyAgICBpZiAoIWFjdGlvbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGFjdGlvbi5lcnJvcigpKTsKIAogICAgIGlmIChhY3Rpb24udmFsdWUoKSkK
QEAgLTM0MCw3ICszNDAsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNp
b25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkRW5jb2RlZFJ1bGVzKAogICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRS
dWxlKTsKIAogICAgICAgICBhdXRvIHJ1bGUgPSBsb2FkUnVsZShleGVjLCAqcnVsZU9iamVjdCk7
Ci0gICAgICAgIGlmICghcnVsZS5oYXNWYWx1ZSgpKQorICAgICAgICBpZiAoIXJ1bGUuaGFzX3Zh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocnVsZS5lcnJvcigpKTsK
ICAgICAgICAgaWYgKHJ1bGUudmFsdWUoKSkKICAgICAgICAgICAgIHJ1bGVMaXN0LmFwcGVuZCgq
cnVsZS52YWx1ZSgpKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBFeHBlY3RlZDxWZWN0b3I8Q29udGVu
dEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlUnVsZUxpc3QoU3RyaW5nJiYg
cgogCiAgICAgdm0gPSBudWxscHRyOwogCi0gICAgaWYgKCFydWxlTGlzdC5oYXNWYWx1ZSgpKQor
ICAgIGlmICghcnVsZUxpc3QuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChydWxlTGlzdC5lcnJvcigpKTsKIAogICAgIGlmIChydWxlTGlzdC0+aXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDhhY2Q5YWYu
LjgxZDhhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTAxLDcgKzEwMSw3IEBAIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNh
Y2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzU1ZHLCBib29sCiAKICAgICBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKG1fcmVzb3VyY2UpKSwgb3B0aW9ucyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3Io
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7Ci0gICAgbV9jYWNoZWRGb250
ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEZvbnQoV1RGTW92ZShy
ZXF1ZXN0KSwgaXNTVkcpLnZhbHVlT3IobnVsbHB0cik7CisgICAgbV9jYWNoZWRGb250ID0gZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0
KSwgaXNTVkcpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAppbmRleCBhNjgx
YjhiLi5hOTdkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6OnBhaXI8Q2FjaGVkSW1hZ2UqLCBmbG9hdD4gQ1NTSW1h
Z2VTZXRWYWx1ZTo6bG9hZEJlc3RGaXRJbWFnZShDYWNoZWRSZXNvdXJjZQogICAgICAgICBpZiAo
b3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykKICAgICAgICAgICAgIHJl
cXVlc3QudXBkYXRlRm9yQWNjZXNzQ29udHJvbCgqZG9jdW1lbnQpOwogCi0gICAgICAgIG1fY2Fj
aGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CisgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdU
Rk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgICAgICBtX2Jlc3RGaXRJbWFn
ZVNjYWxlRmFjdG9yID0gaW1hZ2Uuc2NhbGVGYWN0b3I7CiAgICAgfQogICAgIHJldHVybiB7IG1f
Y2FjaGVkSW1hZ2UuZ2V0KCksIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0b3IgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCAzNzM2M2QwLi5jMTkxZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5
LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTcyLDcgKzcyLDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0lt
YWdlVmFsdWU6OmxvYWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBS
ZXNvdXIKICAgICAgICAgICAgIEFTU0VSVChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAg
ICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgpKTsKICAg
ICAgICAgfQotICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZN
b3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2NhY2hlZEltYWdlID0g
bG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IGMwMGZmMmUuLjA0OThhYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIChDKSAx
OTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAyLTIwMDMgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBTdHls
ZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNoZWV0KCkKICAgICAgICAgcmVxdWVzdC5zZXRPcHRp
b25zKFJlc291cmNlTG9hZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVu
dCwgQnVmZmVyRGF0YSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3Jl
ZGVudGlhbHM6OkluY2x1ZGUsIFNraXBTZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6
Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93
RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKSk7CiAgICAgICAgIG1f
Y2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VXNl
ckNTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1f
Y2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NT
U3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBt
X2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENT
U1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYg
KG1fY2FjaGVkU2hlZXQpIHsKICAgICAgICAgLy8gaWYgdGhlIGltcG9ydCBydWxlIGlzIGlzc3Vl
ZCBkeW5hbWljYWxseSwgdGhlIHNoZWV0IG1heSBiZQogICAgICAgICAvLyByZW1vdmVkIGZyb20g
dGhlIHBlbmRpbmcgc2hlZXQgY291bnQsIHNvIGxldCB0aGUgZG9jIGtub3cKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxsYmFja1Jlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NhbGxiYWNrUmVzdWx0LmgKaW5kZXggM2JlYmZlMS4uODc4ZmU0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NhbGxiYWNrUmVzdWx0LmgKQEAgLTcxLDEyICs3MSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZXR1cm5UeXBlPiBpbmxpbmUgQ2FsbGJhY2tSZXN1bHQ8UmV0dXJuVHlwZT46OkNhbGxiYWNrUmVz
dWx0KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgQ2FsbGJhY2tSZXN1
bHRUeXBlIENhbGxiYWNrUmVzdWx0PFJldHVyblR5cGU+Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV92YWx1ZS5oYXNWYWx1ZSgpID8gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzIDog
bV92YWx1ZS5lcnJvcigpOworICAgIHJldHVybiBtX3ZhbHVlLmhhc192YWx1ZSgpID8gQ2FsbGJh
Y2tSZXN1bHRUeXBlOjpTdWNjZXNzIDogbV92YWx1ZS5lcnJvcigpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgYXV0byBDYWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBl
Pjo6cmVsZWFzZVJldHVyblZhbHVlKCkgLT4gUmV0dXJuVHlwZSYmCiB7Ci0gICAgQVNTRVJUKG1f
dmFsdWUuaGFzVmFsdWUoKSk7CisgICAgQVNTRVJUKG1fdmFsdWUuaGFzX3ZhbHVlKCkpOwogICAg
IHJldHVybiBXVEZNb3ZlKG1fdmFsdWUudmFsdWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCA4Mjk0MmJiLi40MmNiMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDQx
LDcgKzMwNDEsNyBAQCBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAogaW50IEVsZW1lbnQ6OmdldEludGVncmFsQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1
ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0SW50ZWdyYWxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVlKQpAQCAt
MzA1MSw3ICszMDUxLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUKIAogdW5zaWduZWQgRWxl
bWVudDo6Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVy
biBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
KS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRVbnNpZ25lZEludGVncmFsQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHVuc2lnbmVkIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAppbmRleCBmZjk1NTIyLi43M2M4ZDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAKLUNvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05NSw3ICs5NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IHRlbXBs
YXRlPHR5cGVuYW1lIE90aGVyVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9yPFJlCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+
OjpoYXNFeGNlcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV92YWx1ZS5oYXNWYWx1ZSgp
OworICAgIHJldHVybiAhbV92YWx1ZS5oYXNfdmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgUmV0dXJuVHlwZT4gaW5saW5lIGNvbnN0IEV4Y2VwdGlvbiYgRXhjZXB0aW9uT3I8UmV0dXJu
VHlwZT46OmV4Y2VwdGlvbigpIGNvbnN0CkBAIC0xNjAsNyArMTYwLDcgQEAgaW5saW5lIEV4Y2Vw
dGlvbk9yPHZvaWQ+OjpFeGNlcHRpb25PcihFeGNlcHRpb24mJiBleGNlcHRpb24pCiAKIGlubGlu
ZSBib29sIEV4Y2VwdGlvbk9yPHZvaWQ+OjpoYXNFeGNlcHRpb24oKSBjb25zdAogewotICAgIHJl
dHVybiAhbV92YWx1ZS5oYXNWYWx1ZSgpOworICAgIHJldHVybiAhbV92YWx1ZS5oYXNfdmFsdWUo
KTsKIH0KIAogaW5saW5lIGNvbnN0IEV4Y2VwdGlvbiYgRXhjZXB0aW9uT3I8dm9pZD46OmV4Y2Vw
dGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCmluZGV4IDE1YTJiMTUuLjk1Y2U3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xNTgsMTQgKzE1OCwxNCBAQCB2b2lkIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAgICAgIGlmIChtX2lzWFNM
KSB7CiAgICAgICAgICAgICAgICAgYXV0byBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICAgICAgICAgICAgICBvcHRpb25z
Lm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47Ci0gICAgICAgICAgICAgICAg
bV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
WFNMU3R5bGVTaGVldCh7UmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJl
ZikpLCBvcHRpb25zfSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHls
ZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9w
dGlvbnN9KS52YWx1ZV9vcihudWxscHRyKTsKICAgICAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVz
LT5nZXQoImNoYXJzZXQiKTsKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBzdGQ6Om51bGxvcHQsIGNoYXJzZXQu
aXNFbXB0eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKIAot
ICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkp
LnZhbHVlX29yKG51bGxwdHIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1fY2Fj
aGVkU2hlZXQpCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGU1YjkyYjQu
LjNkODZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAt
MTgwMiw3ICsxODAyLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUoKSBj
b25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgdW5zaWduZWQgb2xkRWZmZWN0aXZl
TWF4TGVuZ3RoID0gZWZmZWN0aXZlTWF4TGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5n
dGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7Cisg
ICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1Zh
bHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChvbGRFZmZlY3RpdmVNYXhMZW5ndGggIT0gZWZm
ZWN0aXZlTWF4TGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApAQCAt
MTgxNCw3ICsxODE0LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKICAgICBpbnQgb2xkTWluTGVuZ3RoID0gbWluTGVuZ3RoKCk7Ci0gICAgaW50ZXJu
YWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1
ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChvbGRNaW5MZW5ndGggIT0g
bWluTGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDlkM2RjZTMuLjE1ODQwMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIHJlcXVlc3Quc2V0QXNQb3Rl
bnRpYWxseUNyb3NzT3JpZ2luKGNyb3NzT3JpZ2luKCksIGRvY3VtZW50KCkpOwogCiAgICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2NhY2hlZFNoZWV0KTsKLSAgICAg
ICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAg
ICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJl
cXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwog
CiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+
YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCmluZGV4IDYwZjcwMTYuLmQ3M2Y5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMjAyLDEzICsyMDIsMTMgQEAgdm9pZCBIVE1MVGV4
dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWMKIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxT
ZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9y
KC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAK
IHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGlu
dGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSku
dmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDEwZWJiMGIuLjZj
ODYxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIwOSw3ICsyMDksNyBAQCBFeHBlY3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJz
aW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaQogewogICAgIGF1
dG8gb3B0aW9uYWxTaWduZWRSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAgICBp
ZiAoIW9wdGlvbmFsU2lnbmVkUmVzdWx0KQotICAgICAgICByZXR1cm4gb3B0aW9uYWxTaWduZWRS
ZXN1bHQuZ2V0VW5leHBlY3RlZCgpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RG
TW92ZShvcHRpb25hbFNpZ25lZFJlc3VsdC5lcnJvcigpKSk7CiAKICAgICBpZiAob3B0aW9uYWxT
aWduZWRSZXN1bHQudmFsdWUoKSA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChI
VE1MSW50ZWdlclBhcnNpbmdFcnJvcjo6TmVnYXRpdmVPdmVyZmxvdyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggMjY5Y2M2Mi4uZGNjY2My
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NTgsNyArMTU4LDcgQEAgaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZl
KHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUKIGlubGluZSB1bnNpZ25lZCBs
aW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25l
ZCBkZWZhdWx0VmFsdWUgPSAwKQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcik7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICB1
bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSku
dmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKICAgICBBU1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcik7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAxMjJm
MGQ5Li45MWFjMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyOjpzdGFydFByZWZsaWdodCgpCiAgICAgICAgIHByZWZsaWdo
dFJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fbG9hZGVyLm9wdGlvbnMoKS5pbml0aWF0b3IpOwogCiAg
ICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKLSAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHBy
ZWZsaWdodFJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1fcmVzb3VyY2UgPSBtX2xv
YWRlci5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNl
KFdURk1vdmUocHJlZmxpZ2h0UmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmICht
X3Jlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYWM4ODU5MC4uYzg5NDRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNTMxLDcg
KzE1MzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgbWFpblJlc291cmNlUmVxdWVzdC5zZXROYXZpZ2F0aW9u
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEobV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSk7CiAjZW5kaWYKIAotICAgIG1fbWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+cmVxdWVzdE1haW5SZXNvdXJjZShXVEZNb3ZlKG1haW5SZXNvdXJjZVJlcXVlc3QpKS52
YWx1ZU9yKG51bGxwdHIpOworICAgIG1fbWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+cmVxdWVzdE1haW5SZXNvdXJjZShXVEZNb3ZlKG1haW5SZXNvdXJjZVJlcXVlc3QpKS52
YWx1ZV9vcihudWxscHRyKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAg
aWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYg
bV9mcmFtZS0+cGFnZSgpICYmIG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuZG9tYWlu
KCkgPT0gQ29udGVudEV4dGVuc2lvbnM6OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGJmMWZiNDQuLjk5MDNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gY2FjaGVkUmVzb3Vy
Y2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNl
KFdURk1vdmUobmV3UmVxdWVzdCkpOwotICAgICAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3Vy
Y2UudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNl
LnZhbHVlX29yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IGJiZDQ2NGMuLjYyNzI3MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSW1hZ2VM
b2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIGRvY3VtZW50LmNhY2hlZFJl
c291cmNlTG9hZGVyKCkubV9kb2N1bWVudFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgpLCBu
ZXdJbWFnZS5nZXQoKSk7CiAgICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLnNldEF1dG9Mb2FkSW1hZ2VzKGF1dG9Mb2FkT3RoZXJJbWFnZXMpOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAg
ICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAKICAgICAgICAgLy8g
SWYgd2UgZG8gbm90IGhhdmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhhdCBhIGNyb3NzLXNp
dGUKICAgICAgICAgLy8gdmlvbGF0aW9uIG9jY3VycmVkLCBvciB0aGF0IHRoZSBpbWFnZSB3YXMg
YmxvY2tlZCB2aWEgQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4
IGY3Y2M1NzkuLjIwNzlmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjMxLDcgKzIzMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50
PiBMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGluCiAgICAgbGlua1JlcXVlc3Qu
c2V0SXNMaW5rUHJlbG9hZCgpOwogCiAgICAgbGlua1JlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNy
b3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9kZSwgZG9jdW1lbnQpOwotICAgIGF1dG8gY2FjaGVkTGlu
a1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUu
dmFsdWUoKSwgV1RGTW92ZShsaW5rUmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgYXV0
byBjYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnBy
ZWxvYWQodHlwZS52YWx1ZSgpLCBXVEZNb3ZlKGxpbmtSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0
cik7CiAKICAgICBpZiAoY2FjaGVkTGlua1Jlc291cmNlICYmIGxvYWRlcikKICAgICAgICAgcmV0
dXJuIGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQoKmNhY2hlZExpbmtSZXNvdXJjZSwg
KmxvYWRlciwgdHlwZS52YWx1ZSgpKTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBib29sIExpbmtMb2Fk
ZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3Qg
VVJMJiBocmVmLAogICAgICAgICB9CiAgICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRp
b25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMo
KTsKICAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gQ29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrOwotICAgICAgICBt
X2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVx
dWVzdExpbmtSZXNvdXJjZSh0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9ucywgcHJpb3JpdHkpKS52YWx1
ZU9yKG51bGxwdHIpOworICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNh
Y2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdExpbmtSZXNvdXJjZSh0eXBlLCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpKSwg
b3B0aW9ucywgcHJpb3JpdHkpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICAgICAgaWYgKG1fY2Fj
aGVkTGlua1Jlc291cmNlKQogICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UtPmFkZENs
aWVudCgqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDg0MWQ4ZjEuLjQ2NzQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTgxLDcgKzgxLDcgQEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVk
aWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWUKICAgICBpZiAo
bV9tZWRpYUVsZW1lbnQpCiAgICAgICAgIGNhY2hlUmVxdWVzdC5zZXRJbml0aWF0b3IoKm1fbWVk
aWFFbGVtZW50LmdldCgpKTsKIAotICAgIGF1dG8gcmVzb3VyY2UgPSBtX2RvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RNZWRpYShXVEZNb3ZlKGNhY2hlUmVxdWVzdCkpLnZh
bHVlT3IobnVsbHB0cik7CisgICAgYXV0byByZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdE1lZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0KSkudmFsdWVf
b3IobnVsbHB0cik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggODA0MGI3
OC4uZmYxNDM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
QEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGJvb2wgaQogICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxl
dGVVUkwodXJsKSksIG9wdGlvbnMpOwogICAgIGN1ZVJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNy
b3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9kZSwgKmRvY3VtZW50KTsKIAotICAgIG1fcmVzb3VyY2Ug
PSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1v
dmUoY3VlUmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgbV9yZXNvdXJjZSA9IGRvY3Vt
ZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RUZXh0VHJhY2soV1RGTW92ZShjdWVS
ZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKCFtX3Jlc291cmNlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCmluZGV4IDJlMDhlZTIuLjEyZTYw
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIENhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNv
bnN0IFJlc291cgogICAgIGZldGNoT3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpT
YW1lT3JpZ2luOwogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVx
dWVzdChsb2FkZXIuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSwgZmV0Y2hPcHRpb25z
KTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkuY3NzKTsKLSAgICBtX2RvY3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChX
VEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1fZG9jdW1lbnQgPSBsb2Fk
ZXIucmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIp
OwogICAgIGlmIChtX2RvY3VtZW50KQogICAgICAgICBtX2RvY3VtZW50LT5hZGRDbGllbnQoKnRo
aXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDE1
ZDQ0ZjUuLmQ4MmQzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAg
cmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmlj
b24pOwogCiAgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJY29uKFdURk1vdmUocmVxdWVzdCkpOwotICAgIG1f
cmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1fcmVzb3Vy
Y2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAppbmRleCA2NzI4NjEyLi42YjRjYTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMxNCwxMSArMjMxNCwxMSBAQCBFeHBl
Y3RlZDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzLCBVUkxQYXJzZXI6OklQdjRQYXJzaW5nRXJyb3I+
IFVSTFBhcnNlcjo6cGFyc2VJUAogICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXRlbXMu
c2l6ZSgpIHx8IGl0ZW1zLnNpemUoKSA+IDQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0g
OiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzVmFsdWUoKSAmJiBpdGVtLmVycm9yKCkg
PT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICBpZiAoIWl0ZW0uaGFz
X3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpO
b3RJUHY0KTsKICAgICB9CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAg
ICAgICAgaWYgKCFpdGVtLmhhc1ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6T3ZlcmZsb3cpCisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBp
dGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKICAg
ICB9CiAgICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBkOTUxODgyLi41MmViNzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFy
dExvYWRpbmcoKQogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFdURk1vdmUocmVz
b3VyY2VSZXF1ZXN0KSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90
U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RV
c2UsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxz
LCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNo
T3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQ
b2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5n
KSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gbV9wYXJlbnQtPnBsYXll
cigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIG1fcmVzb3VyY2UgPSBsb2FkZXIgPyBs
b2FkZXItPnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxw
dHIpIDogbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0
UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cikgOiBudWxscHRy
OwogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRo
aXMpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDg0N2E0ZjkuLjk3MWM4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICAv
LyBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ5OD4uCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMo
U2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpEb05vdFVzZSwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERv
U2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNl
cnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lD
aGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9s
aWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsKICAgICBpZiAoYXV0byogbG9hZGVyID0gbV9wYXJlbnQt
PnBsYXllcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICBtX3Jlc291cmNlID0g
bG9hZGVyLT5yZXF1ZXN0TWVkaWEoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsK
KyAgICAgICAgbV9yZXNvdXJjZSA9IGxvYWRlci0+cmVxdWVzdE1lZGlhKFdURk1vdmUocmVxdWVz
dCkpLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1f
cmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAppbmRleCBjNGM5ZDA1Li4zYzcwYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxl
bWVudDo6cmVxdWVzdEltYWdlUmVzb3VyY2UoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKSks
IG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICBtX2NhY2hl
ZEltYWdlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShX
VEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1fY2FjaGVkSW1hZ2UgPSBk
b2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVx
dWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAg
ICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDlkNzYxMDUuLjYwYTk5ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgU1ZHRm9u
dEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCgpCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVy
JiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zKTsKICAgICAgICAgcmVxdWVz
dC5zZXRJbml0aWF0b3IoKnRoaXMpOwotICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRSZXNv
dXJjZUxvYWRlci5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJnZXQo
KnRoaXMpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRS
ZXNvdXJjZUxvYWRlci5yZXF1ZXN0Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJn
ZXQoKnRoaXMpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICAgICAgaWYgKG1fY2FjaGVkRm9udCkg
ewogICAgICAgICAgICAgbV9jYWNoZWRGb250LT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAg
ICAgbV9jYWNoZWRGb250LT5iZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggZWVkZjg2Ni4uMDU4ODEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNSw3ICs1LDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAxMSBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQK
ICAqIENvcHlyaWdodCAoQykgMjAxMiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVu
dDo6dXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpCiAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNo
T3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QgeyBSZXNvdXJjZVJlcXVlc3QgeyBleHRlcm5hbERvY3VtZW50VVJMIH0sIG9wdGlv
bnMgfTsKICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoKnRoaXMpOwotICAgICAgICBtX2V4
dGVybmFsRG9jdW1lbnQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVz
dFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAg
IG1fZXh0ZXJuYWxEb2N1bWVudCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAg
ICAgICAgIGlmIChtX2V4dGVybmFsRG9jdW1lbnQpCiAgICAgICAgICAgICBtX2V4dGVybmFsRG9j
dW1lbnQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1
bGUuY3BwCmluZGV4IDdhZDM5OTQuLjg0Y2E0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0
UnVsZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFhTTCBpbXBsZW1lbnRhdGlvbi4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQo
KQogCiAgICAgYXV0byBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6OlNhbWVPcmlnaW47Ci0gICAgbV9jYWNoZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVy
LT5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7UmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9h
ZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhYnNIcmVmKSksIG9wdGlvbnN9KS52YWx1ZU9y
KG51bGxwdHIpOworICAgIG1fY2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVx
dWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlci0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYWJzSHJlZikpLCBvcHRpb25zfSkudmFsdWVfb3IobnVs
bHB0cik7CiAKICAgICBpZiAobV9jYWNoZWRTaGVldCkgewogICAgICAgICBtX2NhY2hlZFNoZWV0
LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1Mzc4MjFjLi4xZmViMGJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFw
cGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysg
Y29kaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODAyNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgdmFyaW91cyB1c2VzIG9mIEV4cGVjdGVkLCBtb3N0bHkgcmVuYW1pbmcgdmFs
dWVPciBhbmQKKyAgICAgICAgaGFzVmFsdWUgdG8gdGhlIFNUTCBuYW1pbmcgY29udmVudGlvbi4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OlJlYWRSZWNvcmRUYXNrQ291
bnRlcjo6YXBwZW5kUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZTo6dXBkYXRlUmVjb3JkVG9EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaDoKKwogMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgQXV0b21hdGlvbjogY29tcHV0ZUVsZW1lbnRMYXlvdXQgZG9lcyBub3Qg
Y29ycmVjdGx5IHRyYW5zbGF0ZSBpZnJhbWUgY2xpZW50IGNvb3JkaW5hdGVzIHRvIG1haW4gZnJh
bWUgY29vcmRpbmF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA2Nzk0OTM1Li5hZGE0MTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgRW5naW5lOjpFbmdpbmUoU3Ry
aW5nJiYgcm9vdFBhdGgpCiB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhY2hlTmFtZSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIGNhY2hlc09yRXJyb3IpIG11
dGFibGUgewotICAgICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzVmFsdWUoKSkgeworICAgICAg
ICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
KG1ha2VVbmV4cGVjdGVkKGNhY2hlc09yRXJyb3IuZXJyb3IoKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZSh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2sKIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWlu
dDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW3VwZGF0ZUNvdW50ZXIsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiBjYWNoZXNPckVycm9yKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCFjYWNoZXNPckVycm9yLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYg
KCFjYWNoZXNPckVycm9yLmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtl
VW5leHBlY3RlZChjYWNoZXNPckVycm9yLmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hl
cyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJCiB2
b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICByZWFk
Q2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdXJsID0gV1RGTW92ZSh1cmwpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1
ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3Io
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNzIsNyArMTcyLDcgQEAg
dm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlVSTCYmIHVybCwgUmVjb3IKIHZvaWQgRW5naW5lOjpwdXRSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmll
ciwgW3JlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAg
ICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBFbmdpbmU6
OnB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJl
Y29yZHMsIFJlY28KIHZvaWQgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbcmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhh
c192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQu
ZXJyb3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENvbXB1dGVTaXplLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKIAogICAgICAgICAgICAgYXV0byBjYWNoZU9y
aWdpbiA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPnJlYWRDYWNoZXNGcm9tRGlzayhjYWNoZU9yaWdpbiwgW29yaWdpbiA9
IFdURk1vdmUob3JpZ2luLnZhbHVlKCkpLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50
ZXIpXSAoQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHRh
c2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4pLCByZXN1bHQudmFsdWUoKS5nZXQo
KS5zdG9yYWdlU2l6ZSgpKTsKIApAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgRW5naW5lOjpjbGVh
ckNhY2hlc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FsbGJhY2tBZ2dyZWdhdG9y
JiB0YXNrCiB2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmlnaW4sIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7Ci0gICAgICAgIGlm
ICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCBhNjljM2Fh
Li43YjNhYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtMjU2LDcgKzI1Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFJlY29yZChFeHBlY3RlZDxSZWNvcmQsIEVycm9y
PiYmIHJlc3VsdCwgdWludDY0X3QgcmVjb3JkSWRlbnRpZmllciwgdWludDY0X3QgdXBkYXRlQ291
bnRlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKICAgICAgICAgICAgIG1fZmFpbGVkUmVjb3Jkcy5hcHBlbmQocmVjb3JkSWRlbnRpZmll
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ5Miw3ICs0OTIsNyBAQCB2
b2lkIENhY2hlOjp1cGRhdGVSZWNvcmRUb0Rpc2soUmVjb3JkSW5mb3JtYXRpb24mIGV4aXN0aW5n
UmVjb3JkLCBSZWNvcmQmJiByZWNvcgogewogICAgICsrZXhpc3RpbmdSZWNvcmQudXBkYXRlUmVz
cG9uc2VDb3VudGVyOwogICAgIHJlYWRSZWNvcmRGcm9tRGlzayhleGlzdGluZ1JlY29yZCwgW2Nh
Y2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCByZWNv
cmRJZGVudGlmaWVyID0gZXhpc3RpbmdSZWNvcmQuaWRlbnRpZmllciwgcmVjb3JkID0gV1RGTW92
ZShyZWNvcmQpLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShFeHBlY3RlZDxS
ZWNvcmQsIEVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0Lmhh
c1ZhbHVlKCkpCisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8qIGNhY2hlID0gY2FjaGVzLT5maW5kKGlkZW50aWZpZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDNjNGU3NzcuLjQ2ODk4NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIENh
Y2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxi
YWNrJiYgY2FsbGJhY2spCiAgICAgICAgIHJlYWRDYWNoZXNGcm9tRGlzayhbdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1ha2VEaXJ0eSgpOwogCi0gICAgICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKIAog
ICAgICAgICAgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5n
SW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgQ2FjaGVz
OjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxD
YWNoZT4sIEVycm9yCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZUNh
Y2hlc05hbWVzKGRhdGEsIGVycm9yKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkg
eworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYjZlYWRjZC4uYTUyMDQwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJv
dmlkZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm4KIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7CiAgICAgYXV0byByZXNvbHZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0o
TmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtS
VENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRB
ZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggODM1N2VhYi4uODM4
NDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDgyLDEwICs0ODIsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBI
YXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBBcmd1bWUKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEVycm9yVHlwZT4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V1RGOjpFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpFeHBlY3Rl
ZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4mIGV4cGVjdGVkKQordGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWVUeXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPEV4cGVjdGVk
PFZhbHVlVHlwZSwgRXJyb3JUeXBlPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4mIGV4cGVjdGVk
KQogICAgIHsKLSAgICAgICAgaWYgKCFleHBlY3RlZC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlm
ICghZXhwZWN0ZWQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7
CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGV4cGVjdGVkLmVycm9yKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC00OTQsNyArNDk0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0
eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6RXhwZWMKICAgICAg
ICAgZW5jb2RlciA8PCBleHBlY3RlZC52YWx1ZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdURjo6RXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+PiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFeHBlY3RlZDxWYWx1ZVR5
cGUsIEVycm9yVHlwZT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAg
c3RkOjpvcHRpb25hbDxib29sPiBoYXNWYWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNWYWx1
ZTsKQEAgLTUwNyw3ICs1MDcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIEVycm9yVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpFeHBlYwogICAgICAgICAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBXVEY6OkV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBl
PiBleHBlY3RlZChXVEZNb3ZlKCp2YWx1ZSkpOworICAgICAgICAgICAgRXhwZWN0ZWQ8VmFsdWVU
eXBlLCBFcnJvclR5cGU+IGV4cGVjdGVkKFdURk1vdmUoKnZhbHVlKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShleHBlY3RlZCk7CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpvcHRpb25h
bDxFcnJvclR5cGU+IGVycm9yOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGUwMTE1YWUuLjk2ZTc5ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0xMi0wMSAg
SkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHN0ZDo6
ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNvZGluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIGFjY29yZGluZyB0byBu
YW1lIGNoYW5nZXMgYXMgd2VsbCBhcyByZW1vdmFsIG9mCisgICAgICAgIG5vdy1nb25lIEFQSXMu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHA6CisgICAg
ICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KTog
RGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MSW50ZWdl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKToKKwogMjAxNy0xMS0zMCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5j
b20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDYW5ub3QgYnVpbGQgd2l0aG91dCBJbnRlcm5ldCBj
b25uZWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBl
Y3RlZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKaW5k
ZXggYWM4MDE2Yi4uM2JkNDhkMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4
cGVjdGVkLmNwcApAQCAtMzEsMTYgKzMxLDIwIEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5j
bHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1VuZXhwZWN0ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi1uYW1lc3Bh
Y2UgV1RGIHsKK25hbWVzcGFjZSBzdGQgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5h
bWUgVDE+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBz
dGQ6OnBhaXI8VDAsIFQxPiYgcCkKIHsKICAgICByZXR1cm4gb3MgPDwgJygnIDw8IHAuZmlyc3Qg
PDwgIiwgIiA8PCBwLnNlY29uZCA8PCAnKSc7CiB9CiAKK25hbWVzcGFjZSBleHBlcmltZW50YWwg
eworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgeworCiB0ZW1wbGF0ZTxjbGFzcyBF
PiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgVW5leHBl
Y3RlZDxFPiYgdSkKIHsKICAgICByZXR1cm4gb3MgPDwgdS52YWx1ZSgpOwpAQCAtNDgsMTkgKzUy
LDIwIEBAIHRlbXBsYXRlPGNsYXNzIEU+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0mIG9zLCBjb25zdCBVbmV4cGVjdGVkPEU+CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IEU+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBFeHBl
Y3RlZDxULCBFPiYgZSkKIHsKLSAgICBpZiAoZS5oYXNWYWx1ZSgpKQorICAgIGlmIChlLmhhc192
YWx1ZSgpKQogICAgICAgICByZXR1cm4gb3MgPDwgZS52YWx1ZSgpOwogICAgIHJldHVybiBvcyA8
PCBlLmVycm9yKCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEU+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBFeHBlY3RlZDx2b2lkLCBFPiYgZSkKIHsKLSAg
ICBpZiAoZS5oYXNWYWx1ZSgpKQorICAgIGlmIChlLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gb3MgPDwgIiI7CiAgICAgcmV0dXJuIG9zIDw8IGUuZXJyb3IoKTsKIH0KIAotfQorfX19IC8v
IG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCisKIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC0xMTEsNzkgKzExNiw2MiBAQCBURVNUKFdURl9FeHBl
Y3RlZCwgZXhwZWN0ZWQpCiAgICAgdHlwZWRlZiBFeHBlY3RlZDxmb28sIHN0ZDo6c3RyaW5nPiBG
b29TdHJpbmc7CiAgICAgewogICAgICAgICBhdXRvIGUgPSBFKCk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKGUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUuaGFzX3ZhbHVlKCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZSgpLCAwKTsKLSAgICAgICAgRVhQRUNUX0VRKGUudmFs
dWVPcigzLjE0KSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShlLnZhbHVlX29yKDMuMTQpLCAwKTsK
ICAgICB9CiAgICAgewogICAgICAgICBjb25zdGV4cHIgRSBlOwotICAgICAgICBFWFBFQ1RfVFJV
RShlLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKGUudmFsdWUoKSwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShlLnZhbHVl
T3IoMy4xNCksIDApOworICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZV9vcigzLjE0KSwgMCk7CiAg
ICAgfQogICAgIHsKICAgICAgICAgYXV0byBlID0gRSg0Mik7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUuaGFzX3ZhbHVlKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoZS52YWx1ZSgpLCA0Mik7Ci0gICAgICAgIEVYUEVDVF9FUShlLnZhbHVl
T3IoMy4xNCksIDQyKTsKKyAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVfb3IoMy4xNCksIDQyKTsK
ICAgICAgICAgY29uc3QgYXV0byBlMihlKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZTIuaGFzVmFs
dWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKGUyLnZhbHVlKCksIDQyKTsKLSAgICAgICAgRVhQRUNUX0VRKGUyLnZhbHVlT3IoMy4x
NCksIDQyKTsKKyAgICAgICAgRVhQRUNUX0VRKGUyLnZhbHVlX29yKDMuMTQpLCA0Mik7CiAgICAg
ICAgIEUgZTM7CiAgICAgICAgIGUzID0gZTI7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUzLmhhc1Zh
bHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVY
UEVDVF9FUShlMy52YWx1ZSgpLCA0Mik7Ci0gICAgICAgIEVYUEVDVF9FUShlMy52YWx1ZU9yKDMu
MTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShlMy52YWx1ZV9vcigzLjE0KSwgNDIpOwogICAg
ICAgICBjb25zdCBFIGU0ID0gZTI7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGU0Lmhhc1ZhbHVlKCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShlNC5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9F
UShlNC52YWx1ZSgpLCA0Mik7Ci0gICAgICAgIEVYUEVDVF9FUShlNC52YWx1ZU9yKDMuMTQpLCA0
Mik7CisgICAgICAgIEVYUEVDVF9FUShlNC52YWx1ZV9vcigzLjE0KSwgNDIpOwogICAgIH0KICAg
ICB7CiAgICAgICAgIGNvbnN0ZXhwciBFIGMoNDIpOwotICAgICAgICBFWFBFQ1RfVFJVRShjLmhh
c1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShjLmhhc192YWx1ZSgpKTsKICAgICAgICAg
RVhQRUNUX0VRKGMudmFsdWUoKSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoYy52YWx1ZU9yKDMu
MTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShjLnZhbHVlX29yKDMuMTQpLCA0Mik7CiAgICAg
ICAgIGNvbnN0ZXhwciBjb25zdCBhdXRvIGMyKGMpOwotICAgICAgICBFWFBFQ1RfVFJVRShjMi5o
YXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYzIuaGFzX3ZhbHVlKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoYzIudmFsdWUoKSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoYzIudmFsdWVP
cigzLjE0KSwgNDIpOworICAgICAgICBFWFBFQ1RfRVEoYzIudmFsdWVfb3IoMy4xNCksIDQyKTsK
ICAgICB9CiAgICAgewogICAgICAgICBhdXRvIHUgPSBFKG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RSh1Lmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKHUuZXJyb3IoKSwgb29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9FUSh1LmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAg
ICAgRVhQRUNUX0VRKHUudmFsdWVPcigzLjE0KSwgMyk7CisgICAgICAgIEVYUEVDVF9FUSh1LnZh
bHVlX29yKDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAgICAgICBhdXRvIHV2ID0gRVYobWFr
ZVVuZXhwZWN0ZWQob29wcykpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXYuaGFzVmFsdWUoKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRSh1di5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9F
USh1di5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKHV2LmdldFVuZXhwZWN0ZWQo
KS52YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKHV2LnZhbHVlT3IoMy4xNCksIDMp
OworICAgICAgICBFWFBFQ1RfRVEodXYudmFsdWVfb3IoMy4xNCksIDMpOwogICAgIH0KICAgICB7
CiAgICAgICAgIEUgZSA9IG1ha2VVbmV4cGVjdGVkKG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFM
U0UoZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMyk7Ci0gICAgfQotICAgIHsKLSAgICAgICAg
YXV0byBlID0gbWFrZUV4cGVjdGVkRnJvbUVycm9yPGludCwgY29uc3QgY2hhcio+KG9vcHMpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KGUuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwotICAgICAg
ICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCAzKTsKLSAgICB9Ci0gICAgewotICAgICAgICBh
dXRvIGUgPSBtYWtlRXhwZWN0ZWRGcm9tRXJyb3I8aW50LCBjb25zdCB2b2lkKj4ob29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc1ZhbHVlKCkpOwotICAgICAgICBFWFBFQ1RfRVEoZS5l
cnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZhbHVl
KCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCAzKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGUudmFsdWVfb3IoMy4xNCksIDMpOwogICAgIH0KICAgICB7CiAgICAgICAg
IGF1dG8gZSA9IEZvb0NoYXIoNDIpOwpAQCAtMjM2LDUxICsyMjQsMzYgQEAgVEVTVChXVEZfRXhw
ZWN0ZWQsIHZvaWQpCiAgICAgdHlwZWRlZiBFeHBlY3RlZDx2b2lkLCBzdGQ6OnN0cmluZz4gU3Ry
aW5nOwogICAgIHsKICAgICAgICAgYXV0byBlID0gRSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShl
Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsKICAgICAg
ICAgY29uc3QgYXV0byBlMihlKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZTIuaGFzVmFsdWUoKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VR
KGUsIGUyKTsKICAgICAgICAgRSBlMzsKICAgICAgICAgZTMgPSBlMjsKLSAgICAgICAgRVhQRUNU
X1RSVUUoZTMuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGUzLmhhc192YWx1ZSgp
KTsKICAgICAgICAgRVhQRUNUX0VRKGUsIGUzKTsKICAgICB9CiAgICAgewogICAgICAgICBjb25z
dGV4cHIgRSBjOwotICAgICAgICBFWFBFQ1RfVFJVRShjLmhhc1ZhbHVlKCkpOworICAgICAgICBF
WFBFQ1RfVFJVRShjLmhhc192YWx1ZSgpKTsKICAgICAgICAgY29uc3RleHByIGNvbnN0IGF1dG8g
YzIoYyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGMyLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShjMi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShjLCBjMik7CiAgICAg
fQogICAgIHsKICAgICAgICAgYXV0byB1ID0gRShtYWtlVW5leHBlY3RlZChvb3BzKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRSh1Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodS5o
YXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSh1LmVycm9yKCksIG9vcHMpOwotICAgICAg
ICBFWFBFQ1RfRVEodS5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7CiAgICAgfQogICAg
IHsKICAgICAgICAgYXV0byB1diA9IEVWKG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKHV2Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXYuaGFz
X3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEodXYuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAg
IEVYUEVDVF9FUSh1di5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7CiAgICAgfQogICAg
IHsKICAgICAgICAgRSBlID0gbWFrZVVuZXhwZWN0ZWQob29wcyk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShlLmhhc1ZhbHVlKCkpOwotICAgICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsK
LSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwotICAg
IH0KLSAgICB7Ci0gICAgICAgIGF1dG8gZSA9IG1ha2VFeHBlY3RlZEZyb21FcnJvcjx2b2lkLCBj
b25zdCBjaGFyKj4ob29wcyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc1ZhbHVlKCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUu
Z2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIGF1
dG8gZSA9IG1ha2VFeHBlY3RlZEZyb21FcnJvcjx2b2lkLCBjb25zdCB2b2lkKj4ob29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLmVycm9yKCksIG9vcHMpOwotICAg
ICAgICBFWFBFQ1RfRVEoZS5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgYXV0byBlMCA9IEUoKTsKQEAgLTMxMiw3ICsyODUsNyBAQCBURVNUKFdU
Rl9FeHBlY3RlZCwgdm9pZCkKICAgICB9CiAgICAgewogICAgICAgICB0eXBlZGVmIEV4cGVjdGVk
PHN0ZDo6cGFpcjxpbnQsIGludD4sIHN0ZDo6c3RyaW5nPiBFdDsKLSAgICAgICAgRVhQRUNUX0VR
KEV0KFdURjo6SW5QbGFjZSwgMSwgMiksIEV0KFdURjo6SW5QbGFjZSwgMSwgMikpOworICAgICAg
ICBFWFBFQ1RfRVEoRXQoc3RkOjppbl9wbGFjZSwgMSwgMiksIEV0KHN0ZDo6aW5fcGxhY2UsIDEs
IDIpKTsKICAgICB9CiB9CiAKQEAgLTQ2NSw3ICs0MzgsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwg
UmVmKQogICAgIHsKICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICAgICAgRXhwZWN0ZWQ8
UmVmPFJlZkxvZ2dlcj4sIGludD4gZXhwZWN0ZWQgPSBSZWY8UmVmTG9nZ2VyPihhKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBleHBlY3RlZC52
YWx1ZSgpLnB0cigpKTsKICAgICB9CiAKQEAgLTQ3Myw4ICs0NDYsOCBAQCBURVNUKFdURl9FeHBl
Y3RlZCwgUmVmKQogCiAgICAgewogICAgICAgICBSZWZMb2dnZXIgYSgiYSIpOwotICAgICAgICBF
eHBlY3RlZDxSZWY8UmVmTG9nZ2VyPiwgaW50PiBleHBlY3RlZCA9IG1ha2VFeHBlY3RlZDxSZWY8
UmVmTG9nZ2VyPiwgaW50PihSZWY8UmVmTG9nZ2VyPihhKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGV4cGVjdGVkLmhhc1ZhbHVlKCkpOworICAgICAgICBFeHBlY3RlZDxSZWY8UmVmTG9nZ2VyPiwg
aW50PiBleHBlY3RlZCA9IEV4cGVjdGVkPFJlZjxSZWZMb2dnZXI+LCBpbnQ+KFJlZjxSZWZMb2dn
ZXI+KGEpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQuaGFzX3ZhbHVlKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIGV4cGVjdGVkLnZhbHVlKCkucHRyKCkpOwogICAgIH0KIApAQCAt
NDgzLDcgKzQ1Niw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCBSZWYpCiAgICAgewogICAgICAgICBS
ZWZMb2dnZXIgYSgiYSIpOwogICAgICAgICBFeHBlY3RlZDxpbnQsIFJlZjxSZWZMb2dnZXI+PiBl
eHBlY3RlZCA9IG1ha2VVbmV4cGVjdGVkKFJlZjxSZWZMb2dnZXI+KGEpKTsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKGV4cGVjdGVkLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZXhw
ZWN0ZWQuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIGV4cGVjdGVkLmVycm9y
KCkucHRyKCkpOwogICAgIH0KIApAQCAtNDkyLDcgKzQ2NSw3IEBAIFRFU1QoV1RGX0V4cGVjdGVk
LCBSZWYpCiAgICAgewogICAgICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAgICAgICBFeHBlY3Rl
ZDx2b2lkLCBSZWY8UmVmTG9nZ2VyPj4gZXhwZWN0ZWQgPSBtYWtlVW5leHBlY3RlZChSZWY8UmVm
TG9nZ2VyPihhKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShleHBlY3RlZC5oYXNWYWx1ZSgpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBleHBlY3RlZC5lcnJvcigpLnB0cigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcApp
bmRleCAwZjFjMDJkLi40MTg2MDdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGlj
IGludCB0ZXN0UGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIGF1
dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAgICBFWFBFQ1Rf
VFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVP
cigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3IoMCk7CiB9CiAKIHN0YXRp
YyBib29sIHBhcnNlSFRNTEludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0KQpAQCAtMTAx
LDcgKzEwMSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFJlc3VsdCA9IHBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRp
b25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAg
cmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0KQotLSAKMi45
LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328173</attachid>
            <date>2017-12-01 15:52:07 -0800</date>
            <delta_ts>2017-12-04 15:02:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Update-std-expected-to-match-libc-coding-style.patch</filename>
            <type>text/plain</type>
            <size>136214</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBjNjBmNzE0ZTUzYjJkZmYxMTI3M2NkMDc5MzU1MWNmMGYzNmVmMzRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDEgRGVjIDIwMTcgMTI6MzQ6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUg
c3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCgotLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCAgICAgICAgICAgIHwgICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCAgICB8ICAxMCAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oICAgICAgICAgICAgfCAg
IDggKy0KIC4uLi93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weSAgICAg
IHwgIDE4ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcCB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDkyICsrKwogU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCA2NTIgKysrKysrKysrKysrKy0tLS0tLS0tCiBTb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogU291cmNl
L1dURi93dGYvT3B0aW9uYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKwog
U291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTcg
KysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA5OCArKysrCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCAgICAg
ICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3Jh
Z2UuY3BwICAgfCAgIDYgKy0KIC4uLi9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcCB8ICAgMiArLQogLi4uL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgfCAgIDQgKy0KIC4uLi9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogU291cmNl
L1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmggICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCAgICAgICAgICAgICAgICAgICB8ICAg
NiArLQogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgICAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAg
ICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgICAg
ICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcCAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgICAgICB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgICAgICAgICAgfCAgIDIgKy0K
IC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCAgICAgICAgICB8
ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCAgICAgICAgICAg
ICAgfCAgIDYgKy0KIC4uLi9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAgIHwgICA0ICstCiAuLi4vYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsKIC4uLi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICAgIHwgIDE0ICstCiAuLi4vY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAgIHwgICAyICstCiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oICAgICAgICB8ICAxMiAr
LQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTggKwogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwICAgICAgICAg
fCAxMTcgKystLQogLi4uL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAgICAgICAg
ICAgICAgfCAgIDYgKy0KIDU4IGZpbGVzIGNoYW5nZWQsIDk1MCBpbnNlcnRpb25zKCspLCA0NTIg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dURi93dGYvVW5leHBlY3Rl
ZC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmY5NGYxZS4uYWQ4M2ZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMTItMDEgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVk
IHRvIG1hdGNoIGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB2YXJpb3VzIHVzZXMgb2YgRXhwZWN0ZWQuCisK
KyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlSW1wb3J0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeUhlbHBlcik6CisgICAgICAgICog
d2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlu
bGluZXNIZWFkZXIucHk6CisgICAgICAgIChsb2FkTWFjcm8pOgorICAgICAgICAoc3RvcmVNYWNy
byk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yik6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMjUzNjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggYTZh
ZTI5Zi4uZmEzNmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApA
QCAtNDUsNyArNDUsNyBAQCB1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQzMl90OwogCiBjbGFz
cyBNb2R1bGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlPiB7CiBwdWJsaWM6
Ci0gICAgdXNpbmcgVmFsaWRhdGlvblJlc3VsdCA9IFdURjo6RXhwZWN0ZWQ8UmVmUHRyPE1vZHVs
ZT4sIFN0cmluZz47CisgICAgdXNpbmcgVmFsaWRhdGlvblJlc3VsdCA9IEV4cGVjdGVkPFJlZlB0
cjxNb2R1bGU+LCBTdHJpbmc+OwogICAgIHR5cGVkZWYgdm9pZCBDYWxsYmFja1R5cGUoVmFsaWRh
dGlvblJlc3VsdCYmKTsKICAgICB1c2luZyBBc3luY1ZhbGlkYXRpb25DYWxsYmFjayA9IFJlZlB0
cjxTaGFyZWRUYXNrPENhbGxiYWNrVHlwZT4+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDBjNzNkM2YuLmEwOTg3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCkBAIC0x
NzksMTQgKzE3OSwxNCBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0gdHJ1ZTsKICAgICAgICAgICAg
IFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5nZXRVbmV4cGVjdGVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpNZW1vcnk6IHsKICAgICAgICAgICAgIGJv
b2wgaXNJbXBvcnQgPSB0cnVlOwogICAgICAgICAgICAgUGFydGlhbFJlc3VsdCByZXN1bHQgPSBw
YXJzZU1lbW9yeUhlbHBlcihpc0ltcG9ydCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJl
c3VsdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXRVbmV4cGVjdGVkKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9y
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRXh0ZXJu
YWxLaW5kOjpHbG9iYWw6IHsKQEAgLTI2Myw3ICsyNjMsNyBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6
cGFyc2VUYWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKICAgICBQYXJ0aWFsUmVzdWx0IGxpbWl0cyA9
IHBhcnNlUmVzaXphYmxlTGltaXRzKGluaXRpYWwsIG1heGltdW0pOwogICAgIGlmIChVTkxJS0VM
WSghbGltaXRzKSkKLSAgICAgICAgcmV0dXJuIGxpbWl0cy5nZXRVbmV4cGVjdGVkKCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGxpbWl0cy5lcnJvcigpKSk7CiAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihpbml0aWFsID4gbWF4VGFibGVFbnRyaWVzLCAiVGFibGUncyBp
bml0aWFsIHBhZ2UgY291bnQgb2YgIiwgaW5pdGlhbCwgIiBpcyB0b28gYmlnLCBtYXhpbXVtICIs
IG1heFRhYmxlRW50cmllcyk7CiAKICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGltdW0gPj0g
aW5pdGlhbCk7CkBAIC0yODUsNyArMjg1LDcgQEAgYXV0byBNb2R1bGVQYXJzZXI6OnBhcnNlVGFi
bGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYm9vbCBpc0ltcG9ydCA9IGZhbHNlOwogICAgIFBh
cnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CiAgICAgaWYg
KFVOTElLRUxZKCFyZXN1bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0LmdldFVuZXhwZWN0ZWQo
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkp
KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zMDMsNyArMzAzLDcgQEAgYXV0byBNb2R1bGVQ
YXJzZXI6OnBhcnNlTWVtb3J5SGVscGVyKGJvb2wgaXNJbXBvcnQpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKICAgICAgICAgUGFydGlh
bFJlc3VsdCBsaW1pdHMgPSBwYXJzZVJlc2l6YWJsZUxpbWl0cyhpbml0aWFsLCBtYXhpbXVtKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFsaW1pdHMpKQotICAgICAgICAgICAgcmV0dXJuIGxpbWl0
cy5nZXRVbmV4cGVjdGVkKCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RG
TW92ZShsaW1pdHMuZXJyb3IoKSkpOwogICAgICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGlt
dW0gPj0gaW5pdGlhbCk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIVBhZ2VDb3VudDo6
aXNWYWxpZChpbml0aWFsKSwgIk1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiAiLCBpbml0
aWFsLCAiIGlzIGludmFsaWQiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNl
ci5oCmluZGV4IDk1ZjRkYjUuLjNjNzI4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFyc2VyLmgKQEAgLTk3LDEwICs5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVy
biBmYWlsKF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAK
LSNkZWZpbmUgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhoZWxwZXIpIGRvIHsgICBcCi0gICAg
ICAgIGF1dG8gaGVscGVyUmVzdWx0ID0gaGVscGVyOyAgICAgICAgICAgICAgXAotICAgICAgICBp
ZiAoVU5MSUtFTFkoIWhlbHBlclJlc3VsdCkpICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJl
dHVybiBoZWxwZXJSZXN1bHQuZ2V0VW5leHBlY3RlZCgpOyBcCisjZGVmaW5lIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMoaGVscGVyKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgYXV0byBoZWxwZXJSZXN1bHQgPSBoZWxwZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoIWhlbHBlclJlc3VsdCkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
V1RGTW92ZShoZWxwZXJSZXN1bHQuZXJyb3IoKSkpOyAgIFwKICAgICB9IHdoaWxlICgwKQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVX
YXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
Z2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5CmluZGV4IDE4MDUzZDMuLmJjNTRh
MjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZh
bGlkYXRlSW5saW5lc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFkZXIucHkKQEAgLTEsNiArMSw2IEBACiAjIS91
c3IvYmluL2VudiBweXRob24KIAotIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDcg
KzYzLDcgQEAgZGVmIHVuYXJ5TWFjcm8obmFtZSk6CiB0ZW1wbGF0ZTw+IGF1dG8gVmFsaWRhdGU6
OmFkZE9wPE9wVHlwZTo6IiIiICsgdG9DcHAobmFtZSkgKyAiIiI+KEV4cHJlc3Npb25UeXBlIHZh
bHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKICAgICBpZiAoVU5MSUtF
TFkodmFsdWUgIT0gIiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVyIl1bMF0pICsgIiIiKSkKLSAg
ICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZh
aWxlZDogIiIiICsgbmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJl
dHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAi
IiIgKyBuYW1lICsgIiIiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgIHJlc3VsdCA9ICIi
IiArIGNwcFR5cGUob3BbInJldHVybiJdWzBdKSArICIiIjsKICAgICByZXR1cm4geyB9OwpAQCAt
NzcsMTAgKzc3LDEwIEBAIGRlZiBiaW5hcnlNYWNybyhuYW1lKToKIHRlbXBsYXRlPD4gYXV0byBW
YWxpZGF0ZTo6YWRkT3A8T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIj4oRXhwcmVzc2lv
blR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFJlc3VsdAogewogICAgIGlmIChVTkxJS0VMWShsZWZ0ICE9ICIiIiArIGNwcFR5cGUob3Bb
InBhcmFtZXRlciJdWzBdKSArICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3Vs
dDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgbGVmdCB2
YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6
ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIGxlZnQgdmFs
dWUgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgaWYgKFVOTElLRUxZKHJpZ2h0ICE9ICIiIiArIGNw
cFR5cGUob3BbInBhcmFtZXRlciJdWzFdKSArICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVj
dGVkPFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAi
IiIgcmlnaHQgdmFsdWUgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICByZXR1cm4gVW5leHBlY3Rl
ZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIi
IiByaWdodCB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CiAKICAgICByZXN1bHQgPSAiIiIgKyBjcHBU
eXBlKG9wWyJyZXR1cm4iXVswXSkgKyAiIiI7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTkyLDcgKzky
LDcgQEAgZGVmIGxvYWRNYWNybyhuYW1lKToKICAgICByZXR1cm4gIiIiCiAgICAgY2FzZSBMb2Fk
T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIjogewogICAgICAgICBpZiAoVU5MSUtFTFko
cG9pbnRlciAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAg
ICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9u
IGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAg
ICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24g
ZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAg
ICAgIHJlc3VsdCA9ICIiIiArIGNwcFR5cGUob3BbInJldHVybiJdWzBdKSArICIiIjsKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTEwNCwxMCArMTA0LDEwIEBAIGRlZiBzdG9yZU1hY3JvKG5hbWUp
OgogICAgIHJldHVybiAiIiIKICAgICBjYXNlIFN0b3JlT3BUeXBlOjoiIiIgKyB0b0NwcChuYW1l
KSArICIiIjogewogICAgICAgICBpZiAoVU5MSUtFTFkocG9pbnRlciAhPSAiIiIgKyBjcHBUeXBl
KG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0
ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIi
IiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVk
PFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIi
IHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZSAh
PSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVsxXSkgKyAiIiIpKQotICAgICAgICAgICAg
cmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDog
IiIiICsgbmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgICAgICByZXR1
cm4gVW5leHBlY3RlZDxSZXN1bHQ6OmVycm9yX3R5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIi
ICsgbmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CiAKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9IiIiCkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIGF1dG8gVmFsaWRhdGU6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5
cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3QpIC0+IFJlc3VsdAog
ewogICAgIGlmIChVTkxJS0VMWSghaGFzTWVtb3J5KCkpKQotICAgICAgICByZXR1cm4gVW5leHBl
Y3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiBsb2FkIGluc3RydWN0
aW9uIHdpdGhvdXQgbWVtb3J5Iik7CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6
ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiBsb2FkIGluc3RydWN0aW9uIHdpdGhvdXQg
bWVtb3J5Iik7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAiIiIgKyBsb2FkQ2FzZXMgKyAiIiIKQEAg
LTE1MCw3ICsxNTAsNyBAQCBhdXRvIFZhbGlkYXRlOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJl
c3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bAogYXV0byBWYWxpZGF0ZTo6
c3RvcmUoU3RvcmVPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25U
eXBlIHZhbHVlLCB1aW50MzJfdCkgLT4gUmVzdWx0CiB7CiAgICAgaWYgKFVOTElLRUxZKCFoYXNN
ZW1vcnkoKSkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6RXJyb3JUeXBlPigi
dmFsaWRhdGlvbiBmYWlsZWQ6IHN0b3JlIGluc3RydWN0aW9uIHdpdGhvdXQgbWVtb3J5Iik7Cisg
ICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24g
ZmFpbGVkOiBzdG9yZSBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIpOwogCiAgICAgc3dpdGNo
IChvcCkgewogIiIiICsgc3RvcmVDYXNlcyArICIiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAppbmRleCA0MGMxMDA2Li4y
M2ZlZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNX
ZWJBc3NlbWJseU1vZHVsZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlIiwgJkJhc2U6
OnNfaQogSlNXZWJBc3NlbWJseU1vZHVsZSogSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1
YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206Ok1v
ZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAg
IGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCks
IHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApp
bmRleCAwMWI1ZDA3Li44ZmVjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3JlYXRlU3R1YihWTSYsIEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIFdURjo6RXhwZWN0ZWQ8UmVmUHRyPFdhc206Ok1vZHVsZT4sIFN0cmluZz4mJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGNyZWF0ZVN0
dWIoVk0mLCBFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFeHBlY3RlZDxSZWZQdHI8V2FzbTo6TW9k
dWxlPiwgU3RyaW5nPiYmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgY29uc3QgV2FzbTo6TW9kdWxl
SW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjNGU1NWUuLjgy
NDc1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNo
IGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFzIG9mIGh0dHBzOi8vd2cyMS5saW5rL3AwMzIzcjQgc3RkOjpleHBlY3Rl
ZCBpcyBvbiBpdHMgd2F5IHRvIHRoZQorICAgICAgICBMaWJyYXJ5IEZ1bmRhbWVudGFscyB2MyBU
UyAoTEVXRyBhbmQgRVdHIHZvdGVkIGZvciB0aGlzLCBidXQgTFdHCisgICAgICAgIGhhc24ndCBk
b25lIHdvcmRpbmcgcmV2aWV3IHlldCwgaGVuY2UgIm9uIGl0cyB3YXkiKS4gVGhlIEFQSSBpcwor
ICAgICAgICB0aGVyZWZvcmUgcHJldHR5IGNsb3NlIHRvIHdoYXQgd2lsbCBiZSBpbiB0aGUgVFMs
IGFuZCBJJ3ZlIGdvdHRlbgorICAgICAgICByZXF1ZXN0cyBmb3IgYW4gZWFzaWx5IHVzYWJsZSBp
bXBsZW1lbnRhdGlvbiBvZiBzdGQ6OmV4cGVjdGVkLiBJCisgICAgICAgIHRhbGtlZCB0byBvdXIg
Y2xhbmcgdGVhbSBhbmQgdGhleSdsbCBoZWxwIG1lIG1pZ3JhdGUgb3VyCisgICAgICAgIGltcGxl
bWVudGF0aW9uIHRvIGxpYmMrKywgYnV0IG91ciBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gbG9vayBt
b3JlCisgICAgICAgIGxpa2UgbGliYysrIHRoYW4gaXQgZG9lcyBub3cuIE9uY2UgaW4gbGliYysr
IEknbGwgbWFpbnRhaW4gY2hhbmdlcworICAgICAgICBvbiBib3RoIHNpZGVzIHRvIG1ha2Ugc3Vy
ZSBuZWl0aGVyIGlzIG91dC1vZi1kYXRlIGZvciB0b28gbG9uZy4KKworICAgICAgICAtIEZvcmsg
c3RkOjp1bmV4cGVjdGVkIGludG8gaXRzIG93biBoZWFkZXIuCisgICAgICAgIC0gQWRkIG1pbGQg
c3VwcG9ydCBmb3IgYW4gZXhjZXB0aW9uLWJhc2VkIGltcGxlbWVudGF0aW9uLCBidXQKKyAgICAg
ICAgICBkb24ndCBkbyBub2V4Y2VwdCB5ZXQuCisgICAgICAgIC0gUmVuYW1lIGV2ZXJ5dGhpbmcg
dG8gZm9sbG93IFNUTCBzdHlsZSwgYW5kIGtlZXAgYSBnbG9iYWwgdXNpbmcKKyAgICAgICAgICBv
ciB2YXJpYWJsZSBhbGlhcyB3aGVyZSBwb3NzaWJsZSB0byByZWR1Y2UgV2ViS2l0IGNvZGUgY2h1
cm4uCisgICAgICAgIC0gTWlub3IgQVBJIHVwZGF0ZXMgdG8gcmVtb3ZlIHRoaW5ncyB0aGF0IGFy
ZW4ndCBpbiB0aGUgcHJvcG9zYWwKKyAgICAgICAgICBhbnltb3JlLgorCisgICAgICAgICogd3Rm
L0V4cGVjdGVkLmg6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3Yz
OjpiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+OjpiYWRfZXhwZWN0ZWRfYWNjZXNzKToKKyAgICAg
ICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmJhZF9leHBlY3RlZF9hY2Nl
c3M6OmJhZF9leHBlY3RlZF9hY2Nlc3MpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192Mzo6YmFkX2V4cGVjdGVkX2FjY2Vzczo6ZXJyb3IpOgorICAgICAgICAoc3Rk
OjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6YmFkX2V4cGVjdGVkX2FjY2Vzczo6ZXJy
b3IgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6
X19leHBlY3RlZF9kZXRhaWw6OmNvbnN0ZXhwcl9iYXNlOjpjb25zdGV4cHJfYmFzZSk6CisgICAg
ICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpfX2V4cGVjdGVkX2RldGFp
bDo6YmFzZTo6YmFzZSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxz
X3YzOjpfX2V4cGVjdGVkX2RldGFpbDo6YmFzZTo6fmJhc2UpOgorICAgICAgICAoc3RkOjpleHBl
cmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6OmV4cGVjdGVkKToKKyAgICAgICAg
KHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvcj0p
OgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6
OnN3YXApOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhw
ZWN0ZWQ6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJhdG9yLT4pOgorICAgICAgICAoc3RkOjpleHBl
cmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJhdG9yKiBjb25zdCk6Cisg
ICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4
cGVjdGVkOjpoYXNfdmFsdWUgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhw
ZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjp2YWx1ZSk6CisgICAgICAgIChz
dGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6ZXJyb3IgY29uc3Qp
OgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6
OmVycm9yKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4
cGVjdGVkOjp2YWx1ZV9vciBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVu
ZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6dmFsdWVfb3IpOgorICAgICAgICAoc3RkOjpleHBlcmlt
ZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChzdGQ6OmV4cGVy
aW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpvcGVyYXRvciE9KToKKyAgICAgICAgKHN0ZDo6ZXhw
ZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OnN3YXApOgorICAgICAgICAoV1RGOjpVbmV4cGVj
dGVkOjpVbmV4cGVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VW5leHBlY3RlZDo6dmFs
dWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVbmV4cGVjdGVkOjp2YWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6bWFrZVVuZXhwZWN0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6VGhyb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6ZGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OkV4cGVjdGVkRGV0YWlsOjpzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRhaWw6OkNvbnN0ZXhw
ckJhc2U6OkNvbnN0ZXhwckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERl
dGFpbDo6QmFzZTo6QmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkRGV0YWls
OjpCYXNlOjp+QmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpFeHBlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvcj0pOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OkV4cGVjdGVkOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhw
ZWN0ZWQ6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3Bl
cmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJhdG9y
Kik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Omhhc1ZhbHVlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6RXhwZWN0ZWQ6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhw
ZWN0ZWQ6OmVycm9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OmVy
cm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OmdldFVuZXhwZWN0ZWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6dmFsdWVPciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjp2YWx1ZU9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1ha2VFeHBlY3RlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6Om1ha2VFeHBlY3RlZEZyb21FcnJvcik6IERlbGV0ZWQuCisg
ICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAg
ICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgICogd3RmL1VuZXhwZWN0ZWQuaDogQWRk
ZWQuCisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjp1bmV4cGVj
dGVkOjp1bmV4cGVjdGVkKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRh
bHNfdjM6OnVuZXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVu
dGFsOjpmdW5kYW1lbnRhbHNfdjM6OnVuZXhwZWN0ZWQ6OnZhbHVlKToKKyAgICAgICAgKHN0ZDo6
ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Om9wZXJhdG9yPT0pOgorICAgICAgICAoc3Rk
OjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3IhPSk6CisgICAgICAgICht
YWtlVW5leHBlY3RlZCk6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjUzNjIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oIGIvU291cmNlL1dURi93dGYv
RXhwZWN0ZWQuaAppbmRleCA3MjhiNDEzLi43MGEyMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9FeHBlY3RlZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKQEAgLTIzLDE3
MSArMjMsMzMxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
Ly8gV1RGOjpFeHBlY3RlZCBpcyBiYXNlZCBvbiBzdGQ6OmV4cGVjdGVkLCBhcyBkZXNjcmliZWQg
aGVyZTogaHR0cDovL3dnMjEubGluay9wMDMyM3IxCi0vLyBUaGUgc3BlY2lmaWNhdGlvbiBleHBl
Y3RzIHRvIHRocm93LiBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBleGNlcHRp
b25zLCB1c2VzIFJFTEVBU0VfQVNTRVJUIGluc3RlYWQuCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBM
aWJyYXJ5IEZ1bmRhbWVudGFscyB2MydzIHN0ZDo6ZXhwZWN0ZWQsIGFzIGRlc2NyaWJlZCBoZXJl
OiBodHRwOi8vd2cyMS5saW5rL3AwMzIzcjQKIAogI3ByYWdtYSBvbmNlCiAKKy8qCisgICAgZXhw
ZWN0ZWQgc3lub3BzaXMKKworbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhwZXJpbWVudGFs
IHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKKyAgICAvLyA/Lj8uNCwgRXhw
ZWN0ZWQgZm9yIG9iamVjdCB0eXBlcworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgor
ICAgICAgICBjbGFzcyBleHBlY3RlZDsKKworICAgIC8vID8uPy41LCBFeHBlY3RlZCBzcGVjaWFs
aXphdGlvbiBmb3Igdm9pZAorICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgICAgICBjbGFzcyBl
eHBlY3RlZDx2b2lkLEU+OworCisgICAgLy8gPy4/LjYsIHVuZXhwZWN0IHRhZworICAgIHN0cnVj
dCB1bmV4cGVjdF90IHsKKyAgICAgICB1bmV4cGVjdF90KCkgPSBkZWZhdWx0OworICAgIH07Cisg
ICAgaW5saW5lIGNvbnN0ZXhwciB1bmV4cGVjdF90IHVuZXhwZWN0e307CisKKyAgICAvLyA/Lj8u
NywgY2xhc3MgYmFkX2V4cGVjdGVkX2FjY2VzcworICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAg
ICAgIGNsYXNzIGJhZF9leHBlY3RlZF9hY2Nlc3M7CisKKyAgICAvLyA/Lj8uOCwgU3BlY2lhbGl6
YXRpb24gZm9yIHZvaWQuCisgICAgdGVtcGxhdGUgPD4KKyAgICAgICBjbGFzcyBiYWRfZXhwZWN0
ZWRfYWNjZXNzPHZvaWQ+OworCisgICAgLy8gPy4/LjksIEV4cGVjdGVkIHJlbGF0aW9uYWwgb3Bl
cmF0b3JzCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCBleHBlY3RlZDxU
LCBFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiwgY29uc3QgZXhwZWN0ZWQ8
VCwgRT4mKTsKKworICAgIC8vID8uPy4xMCwgQ29tcGFyaXNvbiB3aXRoIFQKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNs
YXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmLCBjb25zdCBl
eHBlY3RlZDxULCBFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IFQm
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgVCYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7CisKKyAgICAvLyA/
Lj8uMTAsIENvbXBhcmlzb24gd2l0aCB1bmV4cGVjdGVkPEU+CisgICAgdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiwgY29uc3QgdW5leHBlY3RlZDxFPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
LCBjbGFzcyBFPgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVj
dGVkPEU+JiwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwg
Y2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8
VCwgRT4mLCBjb25zdCB1bmV4cGVjdGVkPEU+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNs
YXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8
RT4mLCBjb25zdCBleHBlY3RlZDxULCBFPiYpOworCisgICAgLy8gPy4/LjExLCBTcGVjaWFsaXpl
ZCBhbGdvcml0aG1zCisgICAgdm9pZCBzd2FwKGV4cGVjdGVkPFQsIEU+JiwgZXhwZWN0ZWQ8VCwg
RT4mKSBub2V4Y2VwdChzZWUgYmVsb3cpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IEU+CisgICAgY2xhc3MgZXhwZWN0ZWQKKyAgICB7CisgICAgcHVibGljOgorICAgICAgICB0eXBl
ZGVmIFQgdmFsdWVfdHlwZTsKKyAgICAgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAgICAg
IHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CisgICAgCisgICAgICAgIHRl
bXBsYXRlIDxjbGFzcyBVPgorICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7CisgICAgICAgICAg
ICB1c2luZyB0eXBlID0gZXhwZWN0ZWQ8VSwgZXJyb3JfdHlwZT47CisgICAgICAgICAgfTsKKyAg
ICAKKyAgICAgICAgLy8gPy4/LjQuMSwgY29uc3RydWN0b3JzCisgICAgICAgIGNvbnN0ZXhwciBl
eHBlY3RlZCgpOworICAgICAgICBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3QgZXhwZWN0ZWQmKTsK
KyAgICAgICAgY29uc3RleHByIGV4cGVjdGVkKGV4cGVjdGVkJiYpIG5vZXhjZXB0KHNlZSBiZWxv
dyk7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBHPgorICAgICAgICAgICAgRVhQ
TElDSVQgY29uc3RleHByIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkPFUsIEc+Jik7CisgICAgICAg
IHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBHPgorICAgICAgICAgICAgRVhQTElDSVQgY29uc3Rl
eHByIGV4cGVjdGVkKGV4cGVjdGVkPFUsIEc+JiYpOworICAgIAorICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVSA9IFQ+CisgICAgICAgICAgICBFWFBMSUNJVCBjb25zdGV4cHIgZXhwZWN0ZWQoVSYm
IHYpOworICAgIAorICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZChpbl9wbGFjZV90LCBBcmdzJiYuLi4pOworICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4KKyAgICAgICAgICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBleHBlY3RlZChpbl9wbGFjZV90LCBpbml0aWFsaXplcl9saXN0PFU+LCBB
cmdzJiYuLi4pOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBj
b25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZDxHPiBjb25zdCYpOworICAgICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3Rl
ZDxHPiAmJik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAg
Y29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKHVuZXhwZWN0X3QsIEFyZ3MmJi4uLik7CisgICAg
ICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAgY29uc3Rl
eHByIGV4cGxpY2l0IGV4cGVjdGVkKHVuZXhwZWN0X3QsIGluaXRpYWxpemVyX2xpc3Q8VT4sIEFy
Z3MmJi4uLik7CisgICAgCisgICAgICAgIC8vID8uPy40LjIsIGRlc3RydWN0b3IKKyAgICAgICAg
fmV4cGVjdGVkKCk7CisgICAgCisgICAgICAgIC8vID8uPy40LjMsIGFzc2lnbm1lbnQKKyAgICAg
ICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBleHBlY3RlZCYpOworICAgICAgICBleHBlY3Rl
ZCYgb3BlcmF0b3I9KGV4cGVjdGVkJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7CisgICAgICAgIHRl
bXBsYXRlIDxjbGFzcyBVID0gVD4gZXhwZWN0ZWQmIG9wZXJhdG9yPShVJiYpOworICAgICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRyA9IEU+CisgICAgICAgICAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNv
bnN0IHVuZXhwZWN0ZWQ8Rz4mKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEcgPSBFPgorICAg
ICAgICAgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPSh1bmV4cGVjdGVkPEc+JiYpIG5vZXhjZXB0KHNl
ZSBiZWxvdyk7CisgICAgCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgICAg
ICAgICAgdm9pZCBlbXBsYWNlKEFyZ3MmJi4uLik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBV
LCBjbGFzcy4uLiBBcmdzPgorICAgICAgICAgICAgdm9pZCBlbXBsYWNlKGluaXRpYWxpemVyX2xp
c3Q8VT4sIEFyZ3MmJi4uLik7CisgICAgCisgICAgICAgIC8vID8uPy40LjQsIHN3YXAKKyAgICAg
ICAgdm9pZCBzd2FwKGV4cGVjdGVkJikgbm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICAKKyAgICAg
ICAgLy8gPy4/LjQuNSwgb2JzZXJ2ZXJzCisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUKiBvcGVy
YXRvciAtPigpIGNvbnN0OworICAgICAgICBjb25zdGV4cHIgVCogb3BlcmF0b3IgLT4oKTsKKyAg
ICAgICAgY29uc3RleHByIGNvbnN0IFQmIG9wZXJhdG9yICooKSBjb25zdCY7CisgICAgICAgIGNv
bnN0ZXhwciBUJiBvcGVyYXRvciAqKCkgJjsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IFQmJiBv
cGVyYXRvciAqKCkgY29uc3QgJiY7CisgICAgICAgIGNvbnN0ZXhwciBUJiYgb3BlcmF0b3IgKigp
ICYmOworICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5v
ZXhjZXB0OworICAgICAgICBjb25zdGV4cHIgYm9vbCBoYXNfdmFsdWUoKSBjb25zdCBub2V4Y2Vw
dDsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QmOworICAgICAgICBj
b25zdGV4cHIgVCYgdmFsdWUoKSAmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgVCYmIHZhbHVl
KCkgY29uc3QgJiY7CisgICAgICAgIGNvbnN0ZXhwciBUJiYgdmFsdWUoKSAmJjsKKyAgICAgICAg
Y29uc3RleHByIGNvbnN0IEUmIGVycm9yKCkgY29uc3QmOworICAgICAgICBjb25zdGV4cHIgRSYg
ZXJyb3IoKSAmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgRSYmIGVycm9yKCkgY29uc3QgJiY7
CisgICAgICAgIGNvbnN0ZXhwciBFJiYgZXJyb3IoKSAmJjsKKyAgICAgICAgdGVtcGxhdGUgPGNs
YXNzIFU+CisgICAgICAgICAgICBjb25zdGV4cHIgVCB2YWx1ZV9vcihVJiYpIGNvbnN0JjsKKyAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+CisgICAgICAgICAgICBUIHZhbHVlX29yKFUmJikgJiY7
CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBoYXNfdmFsOyAvLyBleHBvc2l0aW9u
IG9ubHkKKyAgICAgICAgdW5pb24KKyAgICAgICAgeworICAgICAgICAgICAgdmFsdWVfdHlwZSB2
YWw7IC8vIGV4cG9zaXRpb24gb25seQorICAgICAgICAgICAgdW5leHBlY3RlZF90eXBlIHVuZXhw
ZWN0OyAvLyBleHBvc2l0aW9uIG9ubHkKKyAgICAgICAgfTsKKyAgICB9OworCit9fX0KKworKi8K
KwogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmV4
cGVjdGVkLmg+CiAKLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTxjbGFzcyBFPgotY2xhc3Mg
VW5leHBlY3RlZCB7Ci1wdWJsaWM6Ci0gICAgVW5leHBlY3RlZCgpID0gZGVsZXRlOwotICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBVbmV4cGVjdGVkKGNvbnN0IEUmIGUpIDogdmFsKGUpIHsgfQotICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBVbmV4cGVjdGVkKEUmJiBlKSA6IHZhbChzdGQ6OmZvcndhcmQ8
RT4oZSkpIHsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBFJiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1
cm4gdmFsOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVYUFIgRSYgdmFsdWUoKSAmIHsgcmV0dXJuIHZh
bDsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIEUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1v
dmUodmFsKTsgfQorbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKK2lu
bGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKIAotcHJpdmF0ZToKLSAgICBFIHZhbDsK
K3N0cnVjdCB1bmV4cGVjdGVkX3QgeworICAgIHVuZXhwZWN0ZWRfdCgpID0gZGVmYXVsdDsKIH07
CisjaWYgX19jcGx1c3BsdXMgPCAyMDE3MDNMCisjZGVmaW5lIF9fRVhQRUNURURfSU5MSU5FX1ZB
UklBQkxFIHN0YXRpYyBjb25zdAorI2Vsc2UKKyNkZWZpbmUgX19FWFBFQ1RFRF9JTkxJTkVfVkFS
SUFCTEUgaW5saW5lCisjZW5kaWYKIAotdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVbmV4cGVjdGVkPEU+JiBsaHMsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4m
IHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7IH0KLXRlbXBsYXRlPGNs
YXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5leHBlY3RlZDxFPiYgbGhz
LCBjb25zdCBVbmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0dXJuIGxocy52YWx1ZSgpICE9IHJocy52
YWx1ZSgpOyB9CitfX0VYUEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgdW5leHBlY3Rl
ZF90IHVuZXhwZWN0IHsgfTsKIAotdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIFVuZXhwZWN0
ZWQ8c3RkOjpkZWNheV90PEU+PiBtYWtlVW5leHBlY3RlZChFJiYgdikgeyByZXR1cm4gVW5leHBl
Y3RlZDx0eXBlbmFtZSBzdGQ6OmRlY2F5PEU+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8RT4odikpOyB9
Cit0ZW1wbGF0ZTxjbGFzcyBFPiBjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzOwogCi1zdHJ1Y3Qg
VW5leHBlY3RUYWcgewotICAgIFVuZXhwZWN0VGFnKCkgPSBkZWZhdWx0OwordGVtcGxhdGU8Pgor
Y2xhc3MgYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPiA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgYmFkX2V4cGVjdGVkX2FjY2VzcygpIHsgfQogfTsKLWNv
bnN0ZXhwciBVbmV4cGVjdFRhZyBVbmV4cGVjdCB7IH07IC8vIEZJWE1FIFRoaXMgaXMgYW4gaW5s
aW5lIHZhcmlhYmxlIGZvciBDKysxNyBhbmQgbGF0ZXIuCiAKLS8vIEZJWE1FIHRoaXMgc2hvdWxk
IGp1c3QgYmUgc3RkOjppbl9wbGFjZV90IHdoaWNoIHdlIGFsc28gZGVmaW5lIGluIG9wdGlvbmFs
IGFuZCB2YXJpYW50Lgotc3RydWN0IEluUGxhY2VUYWcgewotICAgIEluUGxhY2VUYWcoKSA9IGRl
ZmF1bHQ7Cit0ZW1wbGF0ZTxjbGFzcyBFPgorY2xhc3MgYmFkX2V4cGVjdGVkX2FjY2VzcyA6IHB1
YmxpYyBiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBi
YWRfZXhwZWN0ZWRfYWNjZXNzKEUgdmFsKSA6IHZhbCh2YWwpIHsgfQorICAgIHZpcnR1YWwgY29u
c3QgY2hhciogd2hhdCgpIGNvbnN0IG5vZXhjZXB0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6ZXhj
ZXB0aW9uOjp3aGF0KCk7IH0KKyAgICBFJiBlcnJvcigpICYgeyByZXR1cm4gdmFsOyB9CisgICAg
Y29uc3QgRSYgZXJyb3IoKSBjb25zdCYgeyByZXR1cm4gdmFsOyB9CisgICAgRSYmIGVycm9yKCkg
JiYgeyByZXR1cm4gc3RkOjptb3ZlKHZhbCk7IH0KKyAgICBjb25zdCBFJiYgIGVycm9yKCkgY29u
c3QmJiB7IHJldHVybiBzdGQ6Om1vdmUodmFsKTsgfQorCitwcml2YXRlOgorICAgIEUgdmFsOwog
fTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OwogCi1uYW1lc3BhY2UgRXhwZWN0
ZWREZXRhaWwgeworbmFtZXNwYWNlIF9fZXhwZWN0ZWRfZGV0YWlsIHsKIAotLy8gSW52b2tlZCB3
aGVyZSBzdGQ6OkV4cGVjdGVkIHdvdWxkIGluc3RlYWQgdGhyb3cuCi1pbmxpbmUgTk9fUkVUVVJO
X0RVRV9UT19DUkFTSCB2b2lkIFRocm93KCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRVhDRVBUSU9OUykKKyNkZWZpbmUgX19FWFBFQ1RF
RF9USFJPVyhfX2V4Y2VwdGlvbikgKHRocm93IF9fZXhjZXB0aW9uKQorI2Vsc2UKK2lubGluZSBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgX19leHBlY3RlZF90ZXJtaW5hdGUoKSB7IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyNkZWZpbmUgX19FWFBFQ1RFRF9USFJPVyguLi4p
IF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0ZSgpCisjZW5kaWYKIAotc3Rh
dGljIGNvbnN0ZXhwciBlbnVtIGNsYXNzIFZhbHVlVGFnVHlwZSB7IH0gVmFsdWVUYWcgeyB9Owot
c3RhdGljIGNvbnN0ZXhwciBlbnVtIGNsYXNzIEVycm9yVGFnVHlwZSB7IH0gRXJyb3JUYWcgeyB9
OworX19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFCTEUgY29uc3RleHByIGVudW0gY2xhc3MgdmFsdWVf
dGFnX3QgeyB9IHZhbHVlX3RhZyB7IH07CitfX0VYUEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25z
dGV4cHIgZW51bSBjbGFzcyBlcnJvcl90YWdfdCB7IH0gZXJyb3JfdGFnIHsgfTsKIAogdGVtcGxh
dGU8Y2xhc3MgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8VD46OnZhbHVlPiogPSBudWxscHRyPiB2b2lkIGRlc3Ryb3koVCYpIHsgfQogdGVtcGxhdGU8
Y2xhc3MgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZSAmJiAoc3RkOjppc19jbGFzczxUPjo6dmFsdWUgfHwgc3RkOjppc191bmlvbjxU
Pjo6dmFsdWUpPiogPSBudWxscHRyPiB2b2lkIGRlc3Ryb3koVCYgdCkgeyB0Ln5UKCk7IH0KIAog
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXVuaW9uIENvbnN0ZXhwclN0b3JhZ2UgewotICAg
IHR5cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBl
ZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFn
ZSB7CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7
CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAgICBjaGFyIGR1
bW15OwotICAgIFZhbHVlVHlwZSB2YWw7Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25zdGV4
cHIgQ29uc3RleHByU3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3Rl
eHByU3RvcmFnZShWYWx1ZVRhZ1R5cGUpIDogdmFsKCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0
ZXhwclN0b3JhZ2UoRXJyb3JUYWdUeXBlKSA6IGVycigpIHsgfQotICAgIGNvbnN0ZXhwciBDb25z
dGV4cHJTdG9yYWdlKFZhbHVlVGFnVHlwZSwgY29uc3QgVmFsdWVUeXBlJiB2KSA6IHZhbCh2KSB7
IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByU3RvcmFnZShFcnJvclRhZ1R5cGUsIGNvbnN0IEVy
cm9yVHlwZSYgZSkgOiBlcnIoZSkgeyB9Ci0gICAgfkNvbnN0ZXhwclN0b3JhZ2UoKSA9IGRlZmF1
bHQ7CisgICAgdmFsdWVfdHlwZSB2YWw7CisgICAgZXJyb3JfdHlwZSBlcnI7CisgICAgY29uc3Rl
eHByIGNvbnN0ZXhwcl9zdG9yYWdlKCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0ZXhwciBjb25z
dGV4cHJfc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiB2YWwoKSB7IH0KKyAgICBjb25zdGV4cHIgY29u
c3RleHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QpIDogZXJyKCkgeyB9CisgICAgY29uc3RleHByIGNv
bnN0ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190LCBjb25zdCB2YWx1ZV90eXBlJiB2KSA6IHZhbCh2
KSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0
IGVycm9yX3R5cGUmIGUpIDogZXJyKGUpIHsgfQorICAgIH5jb25zdGV4cHJfc3RvcmFnZSgpID0g
ZGVmYXVsdDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci11bmlvbiBTdG9yYWdl
IHsKLSAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0g
ICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwordW5pb24gc3RvcmFnZSB7
CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7Cisg
ICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAgICBjaGFyIGR1bW15
OwotICAgIFZhbHVlVHlwZSB2YWw7Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25zdGV4cHIg
U3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShWYWx1ZVRhZ1R5
cGUpIDogdmFsKCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlKSA6IGVy
cigpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKFZhbHVlVGFnVHlwZSwgY29uc3QgVmFsdWVU
eXBlJiB2YWwpIDogdmFsKHZhbCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoVmFsdWVUYWdU
eXBlLCBWYWx1ZVR5cGUmJiB2YWwpIDogdmFsKHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbCkp
IHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSwgY29uc3QgRXJyb3JUeXBl
JiBlcnIpIDogZXJyKGVycikgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBl
LCBFcnJvclR5cGUmJiBlcnIpIDogZXJyKHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+KGVycikpIHsg
fQotICAgIH5TdG9yYWdlKCkgeyB9CisgICAgdmFsdWVfdHlwZSB2YWw7CisgICAgZXJyb3JfdHlw
ZSBlcnI7CisgICAgY29uc3RleHByIHN0b3JhZ2UoKSA6IGR1bW15KCkgeyB9CisgICAgY29uc3Rl
eHByIHN0b3JhZ2UodmFsdWVfdGFnX3QpIDogdmFsKCkgeyB9CisgICAgY29uc3RleHByIHN0b3Jh
Z2UoZXJyb3JfdGFnX3QpIDogZXJyKCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UodmFsdWVf
dGFnX3QsIGNvbnN0IHZhbHVlX3R5cGUmIHZhbCkgOiB2YWwodmFsKSB7IH0KKyAgICBjb25zdGV4
cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCwgdmFsdWVfdHlwZSYmIHZhbCkgOiB2YWwoc3RkOjpmb3J3
YXJkPHZhbHVlX3R5cGU+KHZhbCkpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKGVycm9yX3Rh
Z190LCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogZXJyKGVycikgeyB9CisgICAgY29uc3RleHBy
IHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGVycm9yX3R5cGUmJiBlcnIpIDogZXJyKHN0ZDo6Zm9yd2Fy
ZDxlcnJvcl90eXBlPihlcnIpKSB7IH0KKyAgICB+c3RvcmFnZSgpIHsgfQogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRT4KLXVuaW9uIENvbnN0ZXhwclN0b3JhZ2U8dm9pZCwgRT4gewotICAgIHR5cGVk
ZWYgdm9pZCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVm
IFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFnZTx2
b2lkLCBFPiB7CisgICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVy
cm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKICAg
ICBjaGFyIGR1bW15OwotICAgIEVycm9yVHlwZSBlcnI7Ci0gICAgY29uc3RleHByIENvbnN0ZXhw
clN0b3JhZ2UoKSA6IGR1bW15KCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0b3JhZ2Uo
VmFsdWVUYWdUeXBlKSA6IGR1bW15KCkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwclN0b3Jh
Z2UoRXJyb3JUYWdUeXBlKSA6IGVycigpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9y
YWdlKEVycm9yVGFnVHlwZSwgY29uc3QgRXJyb3JUeXBlJiBlKSA6IGVycihlKSB7IH0KLSAgICB+
Q29uc3RleHByU3RvcmFnZSgpID0gZGVmYXVsdDsKKyAgICBlcnJvcl90eXBlIGVycjsKKyAgICBj
b25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoKSA6IGR1bW15KCkgeyB9CisgICAgY29uc3RleHBy
IGNvbnN0ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190KSA6IGR1bW15KCkgeyB9CisgICAgY29uc3Rl
eHByIGNvbnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQorICAgIGNvbnN0
ZXhwciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZSkg
OiBlcnIoZSkgeyB9CisgICAgfmNvbnN0ZXhwcl9zdG9yYWdlKCkgPSBkZWZhdWx0OwogfTsKIAog
dGVtcGxhdGU8Y2xhc3MgRT4KLXVuaW9uIFN0b3JhZ2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYg
dm9pZCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVu
ZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1bmlvbiBzdG9yYWdlPHZvaWQsIEU+IHsKKyAg
ICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAg
ICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOwogICAgIGNoYXIgZHVtbXk7
Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25zdGV4cHIgU3RvcmFnZSgpIDogZHVtbXkoKSB7
IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShWYWx1ZVRhZ1R5cGUpIDogZHVtbXkoKSB7IH0KLSAg
ICBjb25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAgY29uc3Rl
eHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBjb25zdCBFcnJvclR5cGUmIGVycikgOiBlcnIoZXJy
KSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUsIEVycm9yVHlwZSYmIGVy
cikgOiBlcnIoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyKSkgeyB9Ci0gICAgflN0b3JhZ2Uo
KSB7IH0KKyAgICBlcnJvcl90eXBlIGVycjsKKyAgICBjb25zdGV4cHIgc3RvcmFnZSgpIDogZHVt
bXkoKSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiBkdW1teSgpIHsg
fQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQorICAgIGNv
bnN0ZXhwciBzdG9yYWdlKGVycm9yX3RhZ190LCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogZXJy
KGVycikgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGVycm9yX3R5cGUm
JiBlcnIpIDogZXJyKHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBlPihlcnIpKSB7IH0KKyAgICB+c3Rv
cmFnZSgpIHsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXN0cnVjdCBDb25z
dGV4cHJCYXNlIHsKLSAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJv
clR5cGU7Ci0gICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwotICAgIENv
bnN0ZXhwclN0b3JhZ2U8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHM7CitzdHJ1Y3QgY29uc3RleHBy
X2Jhc2UgeworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBlcnJvcl90
eXBlOworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CisgICAgY29u
c3RleHByX3N0b3JhZ2U8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gczsKICAgICBib29sIGhhczsK
LSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9Ci0gICAg
Y29uc3RleHByIENvbnN0ZXhwckJhc2UoVmFsdWVUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyh0
cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6
IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShWYWx1
ZVRhZ1R5cGUgdGFnLCBjb25zdCBWYWx1ZVR5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRy
dWUpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcsIGNv
bnN0IEVycm9yVHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQotICAgIH5D
b25zdGV4cHJCYXNlKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSgp
IDogcygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKHZhbHVl
X3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3Rl
eHByX2Jhc2UoZXJyb3JfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBj
b25zdGV4cHIgY29uc3RleHByX2Jhc2UodmFsdWVfdGFnX3QgdGFnLCBjb25zdCB2YWx1ZV90eXBl
JiB2YWwpIDogcyh0YWcsIHZhbCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3Rl
eHByX2Jhc2UoZXJyb3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogcyh0YWcs
IGVyciksIGhhcyhmYWxzZSkgeyB9CisgICAgfmNvbnN0ZXhwcl9iYXNlKCkgPSBkZWZhdWx0Owog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXN0cnVjdCBCYXNlIHsKLSAgICB0eXBl
ZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7Ci0gICAgdHlwZWRlZiBV
bmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwotICAgIFN0b3JhZ2U8VmFsdWVUeXBlLCBFcnJv
clR5cGU+IHM7CitzdHJ1Y3QgYmFzZSB7CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAg
dHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0
ZWRfdHlwZTsKKyAgICBzdG9yYWdlPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9v
bCBoYXM7Ci0gICAgY29uc3RleHByIEJhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAgIGNv
bnN0ZXhwciBCYXNlKFZhbHVlVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9Ci0g
ICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkg
eyB9Ci0gICAgY29uc3RleHByIEJhc2UoVmFsdWVUYWdUeXBlIHRhZywgY29uc3QgVmFsdWVUeXBl
JiB2YWwpIDogcyh0YWcsIHZhbCksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShW
YWx1ZVRhZ1R5cGUgdGFnLCBWYWx1ZVR5cGUmJiB2YWwpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxW
YWx1ZVR5cGU+KHZhbCkpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JU
YWdUeXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhmYWxz
ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdUeXBlIHRhZywgRXJyb3JUeXBlJiYg
ZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSwgaGFzKGZhbHNlKSB7
IH0KLSAgICBCYXNlKGNvbnN0IEJhc2UmIG8pCisgICAgY29uc3RleHByIGJhc2UoKSA6IHMoKSwg
aGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZykgOiBzKHRh
ZyksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcpIDog
cyh0YWcpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRh
ZywgY29uc3QgdmFsdWVfdHlwZSYgdmFsKSA6IHModGFnLCB2YWwpLCBoYXModHJ1ZSkgeyB9Cisg
ICAgY29uc3RleHByIGJhc2UodmFsdWVfdGFnX3QgdGFnLCB2YWx1ZV90eXBlJiYgdmFsKSA6IHMo
dGFnLCBzdGQ6OmZvcndhcmQ8dmFsdWVfdHlwZT4odmFsKSksIGhhcyh0cnVlKSB7IH0KKyAgICBj
b25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcsIGNvbnN0IGVycm9yX3R5cGUmIGVycikgOiBz
KHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdf
dCB0YWcsIGVycm9yX3R5cGUmJiBlcnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBl
PihlcnIpKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBiYXNlKGNvbnN0IGJhc2UmIG8pCiAgICAgICAg
IDogaGFzKG8uaGFzKQogICAgIHsKICAgICAgICAgaWYgKGhhcykKLSAgICAgICAgICAgIDo6bmV3
ICgmcy52YWwpIFZhbHVlVHlwZShvLnMudmFsKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy52YWwp
IHZhbHVlX3R5cGUoby5zLnZhbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIDo6bmV3ICgm
cy5lcnIpIEVycm9yVHlwZShvLnMuZXJyKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIpIGVy
cm9yX3R5cGUoby5zLmVycik7CiAgICAgfQotICAgIEJhc2UoQmFzZSYmIG8pCisgICAgYmFzZShi
YXNlJiYgbykKICAgICAgICAgOiBoYXMoby5oYXMpCiAgICAgewogICAgICAgICBpZiAoaGFzKQot
ICAgICAgICAgICAgOjpuZXcgKCZzLnZhbCkgVmFsdWVUeXBlKFdURk1vdmUoby5zLnZhbCkpOwor
ICAgICAgICAgICAgOjpuZXcgKCZzLnZhbCkgdmFsdWVfdHlwZShzdGQ6Om1vdmUoby5zLnZhbCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBFcnJvclR5cGUoV1RG
TW92ZShvLnMuZXJyKSk7CisgICAgICAgICAgICA6Om5ldyAoJnMuZXJyKSBlcnJvcl90eXBlKHN0
ZDo6bW92ZShvLnMuZXJyKSk7CiAgICAgfQotICAgIH5CYXNlKCkKKyAgICB+YmFzZSgpCiAgICAg
ewogICAgICAgICBpZiAoaGFzKQogICAgICAgICAgICAgZGVzdHJveShzLnZhbCk7CkBAIC0xOTcs
NDUgKzM1Nyw0NSBAQCBzdHJ1Y3QgQmFzZSB7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotc3Ry
dWN0IENvbnN0ZXhwckJhc2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgdm9pZCBWYWx1ZVR5cGU7
Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5l
eHBlY3RlZFR5cGU7Ci0gICAgQ29uc3RleHByU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4g
czsKK3N0cnVjdCBjb25zdGV4cHJfYmFzZTx2b2lkLCBFPiB7CisgICAgdHlwZWRlZiB2b2lkIHZh
bHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVj
dGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKKyAgICBjb25zdGV4cHJfc3RvcmFnZTx2YWx1ZV90eXBl
LCBlcnJvcl90eXBlPiBzOwogICAgIGJvb2wgaGFzOwotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJC
YXNlKCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShW
YWx1ZVRhZ1R5cGUgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBD
b25zdGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQot
ICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcsIGNvbnN0IEVycm9y
VHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQotICAgIGNvbnN0ZXhwciBD
b25zdGV4cHJCYXNlKEVycm9yVGFnVHlwZSB0YWcsIEVycm9yVHlwZSYmIGVycikgOiBzKHRhZywg
c3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyKSksIGhhcyhmYWxzZSkgeyB9Ci0gICAgfkNvbnN0
ZXhwckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKCkgOiBz
KCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2UodmFsdWVfdGFn
X3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJf
YmFzZShlcnJvcl90YWdfdCB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0
ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcsIGNvbnN0IGVycm9yX3R5cGUmIGVy
cikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHBy
X2Jhc2UoZXJyb3JfdGFnX3QgdGFnLCBlcnJvcl90eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZv
cndhcmQ8ZXJyb3JfdHlwZT4oZXJyKSksIGhhcyhmYWxzZSkgeyB9CisgICAgfmNvbnN0ZXhwcl9i
YXNlKCkgPSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRT4KLXN0cnVjdCBCYXNlPHZv
aWQsIEU+IHsKLSAgICB0eXBlZGVmIHZvaWQgVmFsdWVUeXBlOwotICAgIHR5cGVkZWYgRSBFcnJv
clR5cGU7Ci0gICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwotICAgIFN0
b3JhZ2U8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHM7CitzdHJ1Y3QgYmFzZTx2b2lkLCBFPiB7Cisg
ICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7Cisg
ICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKKyAgICBzdG9yYWdlPHZh
bHVlX3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9vbCBoYXM7Ci0gICAgY29uc3RleHByIEJh
c2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBCYXNlKFZhbHVlVGFnVHlw
ZSB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JU
YWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2Uo
RXJyb3JUYWdUeXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhh
cyhmYWxzZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoRXJyb3JUYWdUeXBlIHRhZywgRXJyb3JU
eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSwgaGFzKGZh
bHNlKSB7IH0KLSAgICBCYXNlKGNvbnN0IEJhc2UmIG8pCisgICAgY29uc3RleHByIGJhc2UoKSA6
IHMoKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZykg
OiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0
YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3Rh
Z190IHRhZywgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2Up
IHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVy
cikgOiBzKHRhZywgc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsg
fQorICAgIGJhc2UoY29uc3QgYmFzZSYgbykKICAgICAgICAgOiBoYXMoby5oYXMpCiAgICAgewog
ICAgICAgICBpZiAoIWhhcykKLSAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIpIEVycm9yVHlwZShv
LnMuZXJyKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIpIGVycm9yX3R5cGUoby5zLmVycik7
CiAgICAgfQotICAgIEJhc2UoQmFzZSYmIG8pCisgICAgYmFzZShiYXNlJiYgbykKICAgICAgICAg
OiBoYXMoby5oYXMpCiAgICAgewogICAgICAgICBpZiAoIWhhcykKLSAgICAgICAgICAgIDo6bmV3
ICgmcy5lcnIpIEVycm9yVHlwZShXVEZNb3ZlKG8ucy5lcnIpKTsKKyAgICAgICAgICAgIDo6bmV3
ICgmcy5lcnIpIGVycm9yX3R5cGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsKICAgICB9Ci0gICAgfkJh
c2UoKQorICAgIH5iYXNlKCkKICAgICB7CiAgICAgICAgIGlmICghaGFzKQogICAgICAgICAgICAg
ZGVzdHJveShzLmVycik7CkBAIC0yNDMsMTkzICs0MDMsMTc1IEBAIHN0cnVjdCBCYXNlPHZvaWQs
IEU+IHsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+Ci11c2luZyBCYXNlU2VsZWN0
ID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKK3VzaW5nIGJhc2Vfc2VsZWN0ID0gdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDwKICAgICAoKHN0ZDo6aXNfdm9pZDxUPjo6dmFsdWUgfHwgc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKICAgICAgICAgJiYgc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEU+Ojp2YWx1ZSksCi0gICAgQ29uc3RleHByQmFzZTx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y29uc3Q8RT46OnR5cGU+LAotICAgIEJhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46
OnR5cGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PEU+Ojp0eXBlPgorICAgIGNvbnN0ZXhw
cl9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jb25zdDxFPjo6dHlwZT4sCisgICAgYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxUPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8RT46OnR5cGU+CiA+Ojp0
eXBlOwogCi19IC8vIG5hbWVzcGFjZSBFeHBlY3RlZERldGFpbAorfSAvLyBuYW1lc3BhY2UgX19l
eHBlY3RlZF9kZXRhaWwKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLWNsYXNzIEV4cGVj
dGVkIDogcHJpdmF0ZSBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDxULCBFPiB7Ci0gICAgdHlw
ZWRlZiBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDxULCBFPiBiYXNlOworY2xhc3MgZXhwZWN0
ZWQgOiBwcml2YXRlIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlX3NlbGVjdDxULCBFPiB7CisgICAg
dHlwZWRlZiBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9zZWxlY3Q8VCwgRT4gYmFzZTsKIAogcHVi
bGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6VmFsdWVUeXBlIFZhbHVlVHlwZTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OkVycm9yVHlwZSBFcnJvclR5cGU7Ci0gICAgdHlwZWRl
ZiB0eXBlbmFtZSBiYXNlOjpVbmV4cGVjdGVkVHlwZSBVbmV4cGVjdGVkVHlwZTsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIGJhc2U6OmVycm9yX3R5cGUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1l
IGJhc2U6OnVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVjdGVkX3R5cGU7CiAKIHByaXZhdGU6Ci0gICAg
dHlwZWRlZiBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gdHlwZTsKKyAgICB0eXBlZGVm
IGV4cGVjdGVkPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHR5cGU7CiAKIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgdXNpbmcgdHlwZSA9IEV4
cGVjdGVkPFUsIEVycm9yVHlwZT47CisgICAgICAgIHVzaW5nIHR5cGUgPSBleHBlY3RlZDxVLCBl
cnJvcl90eXBlPjsKICAgICB9OwogCi0gICAgY29uc3RleHByIEV4cGVjdGVkKCkgOiBiYXNlKEV4
cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZykgeyB9Ci0gICAgRXhwZWN0ZWQoY29uc3QgRXhwZWN0ZWQm
KSA9IGRlZmF1bHQ7Ci0gICAgRXhwZWN0ZWQoRXhwZWN0ZWQmJikgPSBkZWZhdWx0OwotCi0gICAg
Y29uc3RleHByIEV4cGVjdGVkKGNvbnN0IFZhbHVlVHlwZSYgZSkgOiBiYXNlKEV4cGVjdGVkRGV0
YWlsOjpWYWx1ZVRhZywgZSkgeyB9Ci0gICAgY29uc3RleHByIEV4cGVjdGVkKFZhbHVlVHlwZSYm
IGUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6VmFsdWVUYWcsIHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5
cGU+KGUpKSB7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGlj
aXQgRXhwZWN0ZWQoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpIDogYmFzZShFeHBlY3RlZERl
dGFpbDo6VmFsdWVUYWcsIFZhbHVlVHlwZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7
IH0KLSAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhw
bGljaXQgRXhwZWN0ZWQoaW5fcGxhY2VfdCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdz
JiYuLi4pOwotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChjb25zdCBVbmV4cGVjdGVkVHlwZSYgdSkg
OiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KLSAgICBjb25z
dGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZFR5cGUmJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6
OkVycm9yVGFnLCBzdGQ6OmZvcndhcmQ8VW5leHBlY3RlZFR5cGU+KHUpLnZhbHVlKCkpIHsgfQot
ICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIEV4cGVjdGVkKGNvbnN0IFVuZXhwZWN0
ZWQ8RXJyPiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7
IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVk
PEVycj4mJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCBzdGQ6OmZvcndhcmQ8
RXJyPih1LnZhbHVlKCkpKSB7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4
cHIgZXhwbGljaXQgRXhwZWN0ZWQoVW5leHBlY3RUYWcsIEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2Uo
RXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnLCBVbmV4cGVjdGVkVHlwZShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKSB7IH0KLSAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdz
PiBjb25zdGV4cHIgZXhwbGljaXQgRXhwZWN0ZWQoVW5leHBlY3RUYWcsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKLQotICAgIH5FeHBlY3RlZCgpID0gZGVmYXVsdDsKLQot
ICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgRXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2Fw
KCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShFeHBlY3Rl
ZCYmIGUpIHsgdHlwZShXVEZNb3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgVT4gRXhwZWN0ZWQmIG9wZXJhdG9yPShVJiYgdSkgeyB0eXBlKFdU
Rk1vdmUodSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBFeHBlY3RlZCYgb3Bl
cmF0b3I9KGNvbnN0IFVuZXhwZWN0ZWRUeXBlJiB1KSB7IHR5cGUodSkuc3dhcCgqdGhpcyk7IHJl
dHVybiAqdGhpczsgfQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oVW5leHBlY3RlZFR5cGUmJiB1
KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGNv
bnN0ZXhwciBleHBlY3RlZCgpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFsdWVfdGFnKSB7
IH0KKyAgICBleHBlY3RlZChjb25zdCBleHBlY3RlZCYpID0gZGVmYXVsdDsKKyAgICBleHBlY3Rl
ZChleHBlY3RlZCYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3Qg
dmFsdWVfdHlwZSYgZSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIGUpIHsg
fQorICAgIGNvbnN0ZXhwciBleHBlY3RlZCh2YWx1ZV90eXBlJiYgZSkgOiBiYXNlKF9fZXhwZWN0
ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIHN0ZDo6Zm9yd2FyZDx2YWx1ZV90eXBlPihlKSkgeyB9Cisg
ICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKHN0
ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6
dmFsdWVfdGFnLCB2YWx1ZV90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQor
ICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNp
dCBleHBlY3RlZChpbl9wbGFjZV90LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4u
Lik7CisgICAgY29uc3RleHByIGV4cGVjdGVkKGNvbnN0IHVuZXhwZWN0ZWRfdHlwZSYgdSkgOiBi
YXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHUudmFsdWUoKSkgeyB9CisgICAgY29u
c3RleHByIGV4cGVjdGVkKHVuZXhwZWN0ZWRfdHlwZSYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2Rl
dGFpbDo6ZXJyb3JfdGFnLCBzdGQ6OmZvcndhcmQ8dW5leHBlY3RlZF90eXBlPih1KS52YWx1ZSgp
KSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBleHBlY3RlZChjb25zdCB1
bmV4cGVjdGVkPEVycj4mIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1
LnZhbHVlKCkpIHsgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIGV4cGVjdGVk
KHVuZXhwZWN0ZWQ8RXJyPiYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFn
LCBzdGQ6OmZvcndhcmQ8RXJyPih1LnZhbHVlKCkpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcy4u
LiBBcmdzPiBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBlY3RlZF90LCBBcmdzJiYu
Li4gYXJncykgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIHVuZXhwZWN0ZWRf
dHlwZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKyAgICAvLyB0ZW1wbGF0ZTxj
bGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBl
Y3RlZF90LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7CisKKyAgICB+ZXhw
ZWN0ZWQoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IGV4cGVj
dGVkJiBlKSB7IHR5cGUoZSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGV4cGVj
dGVkJiBvcGVyYXRvcj0oZXhwZWN0ZWQmJiBlKSB7IHR5cGUoc3RkOjptb3ZlKGUpKS5zd2FwKCp0
aGlzKTsgcmV0dXJuICp0aGlzOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZXhwZWN0ZWQmIG9w
ZXJhdG9yPShVJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAq
dGhpczsgfQorICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgdW5leHBlY3RlZF90eXBlJiB1
KSB7IHR5cGUodSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGV4cGVjdGVkJiBv
cGVyYXRvcj0odW5leHBlY3RlZF90eXBlJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgq
dGhpcyk7IHJldHVybiAqdGhpczsgfQogICAgIC8vIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+IHZv
aWQgZW1wbGFjZShBcmdzJiYuLi4pOwogICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4u
IEFyZ3M+IHZvaWQgZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7
CiAKLSAgICB2b2lkIHN3YXAoRXhwZWN0ZWQmIG8pCisgICAgdm9pZCBzd2FwKGV4cGVjdGVkJiBv
KQogICAgIHsKICAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwogICAgICAgICBpZiAoYmFzZTo6aGFz
ICYmIG8uaGFzKQogICAgICAgICAgICAgc3dhcChiYXNlOjpzLnZhbCwgby5zLnZhbCk7CiAgICAg
ICAgIGVsc2UgaWYgKGJhc2U6OmhhcyAmJiAhby5oYXMpIHsKLSAgICAgICAgICAgIEVycm9yVHlw
ZSBlKFdURk1vdmUoby5zLmVycikpOwotICAgICAgICAgICAgRXhwZWN0ZWREZXRhaWw6OmRlc3Ry
b3koby5zLmVycik7Ci0gICAgICAgICAgICA6Om5ldyAoJm8ucy52YWwpIFZhbHVlVHlwZShXVEZN
b3ZlKGJhc2U6OnMudmFsKSk7Ci0gICAgICAgICAgICBFeHBlY3RlZERldGFpbDo6ZGVzdHJveShi
YXNlOjpzLnZhbCk7Ci0gICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBFcnJvclR5cGUo
V1RGTW92ZShlKSk7CisgICAgICAgICAgICBlcnJvcl90eXBlIGUoc3RkOjptb3ZlKG8ucy5lcnIp
KTsKKyAgICAgICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KG8ucy5lcnIpOworICAg
ICAgICAgICAgOjpuZXcgKCZvLnMudmFsKSB2YWx1ZV90eXBlKHN0ZDo6bW92ZShiYXNlOjpzLnZh
bCkpOworICAgICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRlc3Ryb3koYmFzZTo6cy52YWwp
OworICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUo
ZSkpOwogICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAgICAgICAgfSBlbHNl
IGlmICghYmFzZTo6aGFzICYmIG8uaGFzKSB7Ci0gICAgICAgICAgICBWYWx1ZVR5cGUgdihXVEZN
b3ZlKG8ucy52YWwpKTsKLSAgICAgICAgICAgIEV4cGVjdGVkRGV0YWlsOjpkZXN0cm95KG8ucy52
YWwpOwotICAgICAgICAgICAgOjpuZXcgKCZvLnMuZXJyKSBFcnJvclR5cGUoV1RGTW92ZShiYXNl
OjpzLmVycikpOwotICAgICAgICAgICAgRXhwZWN0ZWREZXRhaWw6OmRlc3Ryb3koYmFzZTo6cy5l
cnIpOwotICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLnZhbCkgVmFsdWVUeXBlKFdURk1vdmUo
dikpOworICAgICAgICAgICAgdmFsdWVfdHlwZSB2KHN0ZDo6bW92ZShvLnMudmFsKSk7CisgICAg
ICAgICAgICBfX2V4cGVjdGVkX2RldGFpbDo6ZGVzdHJveShvLnMudmFsKTsKKyAgICAgICAgICAg
IDo6bmV3ICgmby5zLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy5lcnIpKTsKKyAg
ICAgICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KGJhc2U6OnMuZXJyKTsKKyAgICAg
ICAgICAgIDo6bmV3ICgmYmFzZTo6cy52YWwpIHZhbHVlX3R5cGUoc3RkOjptb3ZlKHYpKTsKICAg
ICAgICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgc3dhcChiYXNlOjpzLmVyciwgby5zLmVycik7CiAgICAgfQogCi0gICAgY29uc3RleHBy
IGNvbnN0IFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZiYXNlOjpzLnZh
bDsgfQotICAgIFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZiYXNlOjpzLnZhbDsg
fQotICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0ICYgeyBy
ZXR1cm4gYmFzZTo6cy52YWw7IH0KLSAgICBWYWx1ZVR5cGUmIG9wZXJhdG9yKigpICYgeyByZXR1
cm4gYmFzZTo6cy52YWw7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgVmFsdWVUeXBlJiYgb3BlcmF0
b3IqKCkgY29uc3QgJiYgeyByZXR1cm4gV1RGTW92ZShiYXNlOjpzLnZhbCk7IH0KLSAgICBSRUxB
WEVEX0NPTlNURVhQUiBWYWx1ZVR5cGUmJiBvcGVyYXRvciooKSAmJiB7IHJldHVybiBXVEZNb3Zl
KGJhc2U6OnMudmFsKTsgfQorICAgIGNvbnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gJmJhc2U6OnMudmFsOyB9CisgICAgdmFsdWVfdHlwZSogb3Bl
cmF0b3ItPigpIHsgcmV0dXJuICZiYXNlOjpzLnZhbDsgfQorICAgIGNvbnN0ZXhwciBjb25zdCB2
YWx1ZV90eXBlJiBvcGVyYXRvciooKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OnMudmFsOyB9Cisg
ICAgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQorICAg
IGNvbnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlJiYgb3BlcmF0b3IqKCkgY29uc3QgJiYgeyByZXR1
cm4gc3RkOjptb3ZlKGJhc2U6OnMudmFsKTsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIHZhbHVl
X3R5cGUmJiBvcGVyYXRvciooKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6cy52YWwpOyB9
CiAgICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBi
YXNlOjpoYXM7IH0KLSAgICBjb25zdGV4cHIgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IGJhc2U6OmhhczsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKCkgY29u
c3QgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChFeHBlY3RlZERldGFpbDo6
VGhyb3coKSwgYmFzZTo6cy52YWwpOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVYUFIgVmFsdWVUeXBl
JiB2YWx1ZSgpICYgeyByZXR1cm4gYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoRXhwZWN0ZWRE
ZXRhaWw6OlRocm93KCksIGJhc2U6OnMudmFsKTsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1
ZVR5cGUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIFdURk1vdmUoYmFzZTo6aGFzID8gYmFz
ZTo6cy52YWwgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMudmFsKSk7IH0KLSAg
ICBSRUxBWEVEX0NPTlNURVhQUiBWYWx1ZVR5cGUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1v
dmUoYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJh
c2U6OnMudmFsKSk7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgRXJyb3JUeXBlJiBlcnJvcigpIGNv
bnN0ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWls
OjpUaHJvdygpLCBiYXNlOjpzLmVycik7IH0KLSAgICBFcnJvclR5cGUmIGVycm9yKCkgJiB7IHJl
dHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCks
IGJhc2U6OnMuZXJyKTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIEVycm9yVHlwZSYmIGVycm9y
KCkgJiYgeyByZXR1cm4gV1RGTW92ZSghYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0
ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKSk7IH0KLSAgICBjb25zdGV4cHIgY29uc3Qg
RXJyb3JUeXBlJiYgZXJyb3IoKSBjb25zdCAmJiB7IHJldHVybiBXVEZNb3ZlKCFiYXNlOjpoYXMg
PyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpKTsg
fQotICAgIGNvbnN0ZXhwciBVbmV4cGVjdGVkVHlwZSBnZXRVbmV4cGVjdGVkKCkgY29uc3QgeyBy
ZXR1cm4gVW5leHBlY3RlZFR5cGUoYmFzZTo6cy5lcnIpOyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
VT4gY29uc3RleHByIFZhbHVlVHlwZSB2YWx1ZU9yKFUmJiB1KSBjb25zdCAmIHsgcmV0dXJuIGJh
c2U6OmhhcyA/ICoqdGhpcyA6IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oc3RkOjpmb3J3YXJkPFU+
KHUpKTsgfQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFZhbHVlVHlwZSB2YWx1ZU9yKFUmJiB1KSAm
JiB7IHJldHVybiBiYXNlOjpoYXMgPyBXVEZNb3ZlKCoqdGhpcykgOiBzdGF0aWNfY2FzdDxWYWx1
ZVR5cGU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBoYXNfdmFs
dWUoKSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgdmFs
dWVfdHlwZSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFs
IDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2VzczxlcnJvcl90eXBlPihiYXNl
OjpzLmVycikpLCBiYXNlOjpzLnZhbCk7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiB2YWx1ZV90
eXBlJiB2YWx1ZSgpICYgeyByZXR1cm4gYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAoX19FWFBF
Q1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVycm9yX3R5cGU+KGJhc2U6OnMuZXJyKSks
IGJhc2U6OnMudmFsKTsgfQorICAgIGNvbnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlJiYgdmFsdWUo
KSBjb25zdCAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6aGFzID8gYmFzZTo6cy52YWwgOiAo
X19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVycm9yX3R5cGU+KGJhc2U6OnMu
ZXJyKSksIGJhc2U6OnMudmFsKSk7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiB2YWx1ZV90eXBl
JiYgdmFsdWUoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6aGFzID8gYmFzZTo6cy52YWwg
OiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVycm9yX3R5cGU+KGJhc2U6
OnMuZXJyKSksIGJhc2U6OnMudmFsKSk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgZXJyb3JfdHlw
ZSYgZXJyb3IoKSBjb25zdCAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChf
X0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJy
KTsgfQorICAgIGVycm9yX3R5cGUmIGVycm9yKCkgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFz
ZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkp
LCBiYXNlOjpzLmVycik7IH0KKyAgICBSRUxBWEVEX0NPTlNURVhQUiBlcnJvcl90eXBlJiYgZXJy
b3IoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9f
RVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFzZTo6cy5lcnIp
KTsgfQorICAgIGNvbnN0ZXhwciBjb25zdCBlcnJvcl90eXBlJiYgZXJyb3IoKSBjb25zdCAmJiB7
IHJldHVybiBzdGQ6Om1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQRUNURURf
VEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFzZTo6cy5lcnIpKTsgfQorICAg
IHRlbXBsYXRlPGNsYXNzIFU+IGNvbnN0ZXhwciB2YWx1ZV90eXBlIHZhbHVlX29yKFUmJiB1KSBj
b25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/ICoqdGhpcyA6IHN0YXRpY19jYXN0PHZhbHVlX3R5
cGU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiB2YWx1ZV90
eXBlIHZhbHVlX29yKFUmJiB1KSAmJiB7IHJldHVybiBiYXNlOjpoYXMgPyBzdGQ6Om1vdmUoKip0
aGlzKSA6IHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KIH07
CiAKIHRlbXBsYXRlPGNsYXNzIEU+Ci1jbGFzcyBFeHBlY3RlZDx2b2lkLCBFPiA6IHByaXZhdGUg
RXhwZWN0ZWREZXRhaWw6OkJhc2VTZWxlY3Q8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgRXhwZWN0
ZWREZXRhaWw6OkJhc2VTZWxlY3Q8dm9pZCwgRT4gYmFzZTsKK2NsYXNzIGV4cGVjdGVkPHZvaWQs
IEU+IDogcHJpdmF0ZSBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9zZWxlY3Q8dm9pZCwgRT4gewor
ICAgIHR5cGVkZWYgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2VsZWN0PHZvaWQsIEU+IGJhc2U7
CiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlZhbHVlVHlwZSBWYWx1ZVR5
cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpFcnJvclR5cGUgRXJyb3JUeXBlOwotICAg
IHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6VW5leHBlY3RlZFR5cGUgVW5leHBlY3RlZFR5cGU7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBiYXNlOjplcnJvcl90eXBlIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBiYXNlOjp1bmV4cGVjdGVkX3R5cGUgdW5leHBlY3RlZF90eXBlOwogCiBwcml2YXRl
OgotICAgIHR5cGVkZWYgRXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+IHR5cGU7CisgICAg
dHlwZWRlZiBleHBlY3RlZDx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiB0eXBlOwogCiBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RydWN0IHJlYmluZCB7Ci0gICAgICAgIHVzaW5nIHR5
cGUgPSBFeHBlY3RlZDxVLCBFcnJvclR5cGU+OworICAgICAgICB1c2luZyB0eXBlID0gZXhwZWN0
ZWQ8VSwgZXJyb3JfdHlwZT47CiAgICAgfTsKIAotICAgIGNvbnN0ZXhwciBFeHBlY3RlZCgpIDog
YmFzZShFeHBlY3RlZERldGFpbDo6VmFsdWVUYWcpIHsgfQotICAgIEV4cGVjdGVkKGNvbnN0IEV4
cGVjdGVkJikgPSBkZWZhdWx0OwotICAgIEV4cGVjdGVkKEV4cGVjdGVkJiYpID0gZGVmYXVsdDsK
LSAgICAvLyBjb25zdGV4cHIgZXhwbGljaXQgRXhwZWN0ZWQoaW5fcGxhY2VfdCk7Ci0gICAgY29u
c3RleHByIEV4cGVjdGVkKFVuZXhwZWN0ZWRUeXBlIGNvbnN0JiB1KSA6IGJhc2UoRXhwZWN0ZWRE
ZXRhaWw6OkVycm9yVGFnLCB1LnZhbHVlKCkpIHsgfQotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChV
bmV4cGVjdGVkVHlwZSYmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHN0ZDo6
Zm9yd2FyZDxVbmV4cGVjdGVkVHlwZT4odSkudmFsdWUoKSkgeyB9Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRXJyPiBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZDxFcnI+IGNvbnN0JiB1KSA6IGJh
c2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCB1LnZhbHVlKCkpIHsgfQorICAgIGNvbnN0ZXhw
ciBleHBlY3RlZCgpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6dmFsdWVfdGFnKSB7IH0KKyAg
ICBleHBlY3RlZChjb25zdCBleHBlY3RlZCYpID0gZGVmYXVsdDsKKyAgICBleHBlY3RlZChleHBl
Y3RlZCYmKSA9IGRlZmF1bHQ7CisgICAgLy8gY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKGlu
X3BsYWNlX3QpOworICAgIGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkX3R5cGUgY29uc3Qm
IHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1LnZhbHVlKCkpIHsgfQor
ICAgIGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkX3R5cGUmJiB1KSA6IGJhc2UoX19leHBl
Y3RlZF9kZXRhaWw6OmVycm9yX3RhZywgc3RkOjpmb3J3YXJkPHVuZXhwZWN0ZWRfdHlwZT4odSku
dmFsdWUoKSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25zdGV4cHIgZXhwZWN0ZWQo
dW5leHBlY3RlZDxFcnI+IGNvbnN0JiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9y
X3RhZywgdS52YWx1ZSgpKSB7IH0KIAotICAgIH5FeHBlY3RlZCgpID0gZGVmYXVsdDsKKyAgICB+
ZXhwZWN0ZWQoKSA9IGRlZmF1bHQ7CiAKLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IEV4
cGVjdGVkJiBlKSB7IHR5cGUoZSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQotICAgIEV4
cGVjdGVkJiBvcGVyYXRvcj0oRXhwZWN0ZWQmJiBlKSB7IHR5cGUoV1RGTW92ZShlKSkuc3dhcCgq
dGhpcyk7IHJldHVybiAqdGhpczsgfQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgVW5l
eHBlY3RlZFR5cGUmIHUpIHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9IC8v
IE5vdCBpbiB0aGUgY3VycmVudCBwYXBlci4KLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KFVuZXhw
ZWN0ZWRUeXBlJiYgdSkgeyB0eXBlKFdURk1vdmUodSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRo
aXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgorICAgIGV4cGVjdGVkJiBvcGVyYXRv
cj0oY29uc3QgZXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlz
OyB9CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShleHBlY3RlZCYmIGUpIHsgdHlwZShzdGQ6Om1v
dmUoZSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBleHBlY3RlZCYgb3BlcmF0
b3I9KGNvbnN0IHVuZXhwZWN0ZWRfdHlwZSYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1
cm4gKnRoaXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgorICAgIGV4cGVjdGVkJiBv
cGVyYXRvcj0odW5leHBlY3RlZF90eXBlJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgq
dGhpcyk7IHJldHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCiAgICAg
Ly8gdm9pZCBlbXBsYWNlKCk7CiAKLSAgICB2b2lkIHN3YXAoRXhwZWN0ZWQmIG8pCisgICAgdm9p
ZCBzd2FwKGV4cGVjdGVkJiBvKQogICAgIHsKICAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwogICAg
ICAgICBpZiAoYmFzZTo6aGFzICYmIG8uaGFzKSB7CiAgICAgICAgICAgICAvLyBEbyBub3RoaW5n
LgogICAgICAgICB9IGVsc2UgaWYgKGJhc2U6OmhhcyAmJiAhby5oYXMpIHsKLSAgICAgICAgICAg
IEVycm9yVHlwZSBlKFdURk1vdmUoby5zLmVycikpOwotICAgICAgICAgICAgOjpuZXcgKCZiYXNl
OjpzLmVycikgRXJyb3JUeXBlKGUpOworICAgICAgICAgICAgZXJyb3JfdHlwZSBlKHN0ZDo6bW92
ZShvLnMuZXJyKSk7CisgICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBlcnJvcl90eXBl
KGUpOwogICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAgICAgICAgfSBlbHNl
IGlmICghYmFzZTo6aGFzICYmIG8uaGFzKSB7Ci0gICAgICAgICAgICA6Om5ldyAoJm8ucy5lcnIp
IEVycm9yVHlwZShXVEZNb3ZlKGJhc2U6OnMuZXJyKSk7CisgICAgICAgICAgICA6Om5ldyAoJm8u
cy5lcnIpIGVycm9yX3R5cGUoc3RkOjptb3ZlKGJhc2U6OnMuZXJyKSk7CiAgICAgICAgICAgICBz
d2FwKGJhc2U6Omhhcywgby5oYXMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN3YXAo
YmFzZTo6cy5lcnIsIG8ucy5lcnIpOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9Ci0gICAgY29uc3RleHBy
IGJvb2wgaGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0KLSAgICB2b2lkIHZh
bHVlKCkgY29uc3QgeyAhYmFzZTo6aGFzID8gRXhwZWN0ZWREZXRhaWw6OlRocm93KCkgOiB2b2lk
KCk7IH0KLSAgICBjb25zdGV4cHIgY29uc3QgRSYgZXJyb3IoKSBjb25zdCAmIHsgcmV0dXJuICFi
YXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6
cy5lcnIpOyB9Ci0gICAgRSYgZXJyb3IoKSAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpz
LmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpOyB9Ci0gICAgUkVM
QVhFRF9DT05TVEVYUFIgRSYmIGVycm9yKCkgJiYgeyByZXR1cm4gV1RGTW92ZSghYmFzZTo6aGFz
ID8gYmFzZTo6cy5lcnIgOiAoRXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKSk7
IH0KLSAgICBjb25zdGV4cHIgVW5leHBlY3RlZFR5cGUgZ2V0VW5leHBlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIFVuZXhwZWN0ZWRUeXBlKGJhc2U6OnMuZXJyKTsgfQorICAgIGNvbnN0ZXhwciBib29s
IGhhc192YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQorICAgIHZvaWQgdmFsdWUo
KSBjb25zdCB7ICFiYXNlOjpoYXMgPyBfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nl
c3M8dm9pZD4oKSkgOiB2b2lkKCk7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgRSYgZXJyb3IoKSBj
b25zdCAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVEX1RI
Uk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKTsgfQorICAgIEUm
IGVycm9yKCkgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RF
RF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpzLmVycik7IH0KKyAg
ICBSRUxBWEVEX0NPTlNURVhQUiBFJiYgZXJyb3IoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoIWJh
c2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2Fj
Y2Vzczx2b2lkPigpKSwgYmFzZTo6cy5lcnIpKTsgfQogfTsKIAotdGVtcGxhdGU8Y2xhc3MgVCwg
Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxULCBFPiYg
eCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAm
JiAoeCA/IHgudmFsdWUoKSA9PSB5LnZhbHVlKCkgOiB4LmVycm9yKCkgPT0geS5lcnJvcigpKTsg
fQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJu
ICEoeCA9PSB5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV4cGVjdGVkPHZvaWQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDx2b2lkLCBFPiYg
eSkgeyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYmICh4ID8gdHJ1ZSA6IHguZXJyb3IoKSA9
PSB5LmVycm9yKCkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFQmIHkpIHsgcmV0
dXJuIHggPT0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwg
RT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KLXRlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRXhwZWN0ZWQ8VCwg
RT4mIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuIHggIT0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
VCYgeCwgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgp
ICE9IHk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7
IHJldHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB4LnZhbHVlKCkgPT0geS52YWx1ZSgp
IDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiAhKHggPT0geSk7IH0KIAotdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxU
LCBFPiYgeCwgY29uc3QgVW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA9PSBFeHBlY3RlZDxU
LCBFPih5KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBVbmV4cGVjdGVkPEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkg
eyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xh
c3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwg
Y29uc3QgVW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCAhPSBFeHBlY3RlZDxULCBFPih5KTsg
fQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBVbmV4cGVjdGVkPEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4g
RXhwZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDx2b2lkLCBFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8
dm9pZCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHRydWUgOiB4
LmVycm9yKCkgPT0geS5lcnJvcigpKTsgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBFPiB2b2lkIHN3YXAoRXhwZWN0ZWQ8VCwgRT4mIHgsIEV4cGVjdGVkPFQsIEU+JiB5KSB7IHgu
c3dhcCh5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA9
PSBleHBlY3RlZDxULCBFPih5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkg
eyByZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xh
c3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwg
Y29uc3QgVCYgeSkgeyByZXR1cm4geCAhPSBleHBlY3RlZDxULCBFPih5KTsgfQordGVtcGxhdGU8
Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB4LCBj
b25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgIT0geTsg
fQogCi0vLyBOb3RlOiB0aGlzIGlzbid0IGluIHRoZSBjdXJyZW50IHByb3Bvc2FsIGJlY2F1c2Ug
aXQgcmVsaWVzIG9uIEMrKzE3IGRlZHVjdGlvbiBndWlkZXMgaW5zdGVhZC4KLXRlbXBsYXRlPGNs
YXNzIFQsIGNsYXNzIEUgPSBzdGQ6Om51bGxvcHRfdD4gY29uc3RleHByIEV4cGVjdGVkPHN0ZDo6
ZGVjYXlfdDxUPiwgRT4gbWFrZUV4cGVjdGVkKFQmJiB2KQotewotICAgIHJldHVybiBFeHBlY3Rl
ZDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBFPihzdGQ6OmZvcndhcmQ8VD4odikpOwot
fQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIEV4cGVjdGVkPFQsIHN0ZDo6
ZGVjYXlfdDxFPj4gbWFrZUV4cGVjdGVkRnJvbUVycm9yKEUmJiBlKSB7IHJldHVybiBFeHBlY3Rl
ZDxULCBzdGQ6OmRlY2F5X3Q8RT4+KG1ha2VVbmV4cGVjdGVkKGUpKTsgfQotdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRSwgY2xhc3MgVT4gY29uc3RleHByIEV4cGVjdGVkPFQsIEU+IG1ha2VFeHBl
Y3RlZEZyb21FcnJvcihVJiYgdSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4obWFrZVVuZXhwZWN0
ZWQoRSB7IHN0ZDo6Zm9yd2FyZDxVPih1KSB9ICkpOyB9Ci0vLyB0ZW1wbGF0ZTxjbGFzcyBGLCBj
bGFzcyBFID0gc3RkOjpudWxsb3B0X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDx0eXBlbmFtZSBzdGQ6
OnJlc3VsdF9vZjxGPjo6dHlwZSwgRT4gbWFrZUV4cGVjdGVkX2Zyb21fY2FsbChGIGYpOwordGVt
cGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBl
eHBlY3RlZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA9PSBl
eHBlY3RlZDxULCBFPih5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBlY3RlZDxU
LCBFPiYgeSkgeyByZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQordGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxU
LCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCAhPSBleHBlY3RlZDxU
LCBFPih5KTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkg
eyByZXR1cm4gZXhwZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQogCi1pbmxpbmUgRXhwZWN0ZWQ8dm9p
ZCwgc3RkOjpudWxsb3B0X3Q+IG1ha2VFeHBlY3RlZCgpIHsgcmV0dXJuIEV4cGVjdGVkPHZvaWQs
IHN0ZDo6bnVsbG9wdF90PigpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPiB2
b2lkIHN3YXAoZXhwZWN0ZWQ8VCwgRT4mIHgsIGV4cGVjdGVkPFQsIEU+JiB5KSB7IHguc3dhcCh5
KTsgfQogCi19IC8vIG5hbWVzcGFjZSBXVEYKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmlt
ZW50YWw6OmZ1bmRhbWVudGFsc192MwogCi11c2luZyBXVEY6OkluUGxhY2U7Ci11c2luZyBXVEY6
OlVuZXhwZWN0ZWQ7Ci11c2luZyBXVEY6Om1ha2VVbmV4cGVjdGVkOwotdXNpbmcgV1RGOjpVbmV4
cGVjdDsKLXVzaW5nIFdURjo6RXhwZWN0ZWQ7Ci11c2luZyBXVEY6Om1ha2VFeHBlY3RlZDsKLXVz
aW5nIFdURjo6bWFrZUV4cGVjdGVkRnJvbUVycm9yOworX19FWFBFQ1RFRF9JTkxJTkVfVkFSSUFC
TEUgY29uc3RleHByIHN0ZDo6ZXhwZXJpbWVudGFsOjp1bmV4cGVjdGVkX3QmIHVuZXhwZWN0ID0g
c3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0OwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4g
dXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJk
LmgKaW5kZXggZjNkY2NiOC4uODA5ZTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9y
d2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTgsNyArNTgsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoIHsgdXNpbmcgSGFzaCA9IHZvaWQ7
IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhhc2hUcmFpdHM7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lLi4uPiBjbGFzcyBWYXJpYW50OwotdGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBF
eHBlY3RlZDsKIHRlbXBsYXRlPHR5cGVuYW1lLCBzaXplX3QgPSAwLCB0eXBlbmFtZSA9IENyYXNo
T25PdmVyZmxvdywgc2l6ZV90ID0gMTYsIHR5cGVuYW1lID0gRmFzdE1hbGxvYz4gY2xhc3MgVmVj
dG9yOwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVs
dEhhc2g8VmFsdWU+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8VmFsdWU+PiBjbGFzcyBI
YXNoQ291bnRlZFNldDsKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVk
QXJnLCB0eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsIHR5cGVu
YW1lID0gSGFzaFRyYWl0czxLZXlBcmc+LCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8TWFwcGVkQXJn
Pj4gY2xhc3MgSGFzaE1hcDsKQEAgLTY2LDEyICs2NSwxOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZUFyZywgdHlwZW5hbWUgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gs
IHR5cAogCiB9CiAKK25hbWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7Citp
bmxpbmUgbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MyB7Cit0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+
IGNsYXNzIGV4cGVjdGVkOwordGVtcGxhdGU8Y2xhc3M+IGNsYXNzIHVuZXhwZWN0ZWQ7Cit9fX0g
Ly8gbmFtZXNwYWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjMKKwogdXNpbmcg
V1RGOjpBdG9taWNTdHJpbmc7CiB1c2luZyBXVEY6OkF0b21pY1N0cmluZ0ltcGw7CiB1c2luZyBX
VEY6OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2lu
ZyBXVEY6OkNTdHJpbmc7Ci11c2luZyBXVEY6OkV4cGVjdGVkOwogdXNpbmcgV1RGOjpGdW5jdGlv
bjsKIHVzaW5nIFdURjo6RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpIYXNoQ291bnRl
ZFNldDsKQEAgLTkzLDMgKzk4LDYgQEAgdXNpbmcgV1RGOjpTdHJpbmdWaWV3OwogdXNpbmcgV1RG
OjpUZXh0UG9zaXRpb247CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2luZyBXVEY6OlZlY3RvcjsK
KwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVy
aW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47Cit0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVj
dGVkID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCBk
MDI2ZTFmLi5kOWU1OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTI4MiwxMCArMjgyLDYgQEAgY29uc3Rl
eHByIFUgY29udmVydChVIHYpIHsgcmV0dXJuIHY7IH0KIGNvbnN0ZXhwciBzdHJ1Y3QgdHJpdmlh
bF9pbml0X3R7fSB0cml2aWFsX2luaXR7fTsKIAogCi0vLyAyMC41LjYsIEluLXBsYWNlIGNvbnN0
cnVjdGlvbgotY29uc3RleHByIHN0cnVjdCBpbl9wbGFjZV90e30gaW5fcGxhY2V7fTsKLQotCiAv
LyAyMC41LjcsIERpc2VuZ2FnZWQgc3RhdGUgaW5kaWNhdG9yCiBzdHJ1Y3QgbnVsbG9wdF90CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IDEyZTM5M2EuLjdmYTFmMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4
dHJhcy5oCkBAIC01MjUsNiArNTI1LDI5IEBAIHRlbXBsYXRlPGNsYXNzIEIwLCBjbGFzcyBCMSwg
Y2xhc3MgQjIsIGNsYXNzLi4uIEJuPiBzdHJ1Y3Qgd3RmX2Nvbmp1bmN0aW9uX2ltcGw8CiB0ZW1w
bGF0ZTxjbGFzcy4uLiBfQXJncz4gc3RydWN0IGNvbmp1bmN0aW9uIDogd3RmX2Nvbmp1bmN0aW9u
X2ltcGw8X0FyZ3MuLi4+IHsgfTsKICNlbmRpZgogCisjaWYgX19jcGx1c3BsdXMgPCAyMDE3MDNM
CisKKy8vIFRoZXNlIGFyZSBpbmxpbmUgdmFyaWFibGUgZm9yIEMrKzE3IGFuZCBsYXRlci4KKyNk
ZWZpbmUgX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgc3RhdGljIGNvbnN0CisKK3N0cnVjdCBp
bl9wbGFjZV90IHsKKyAgICBleHBsaWNpdCBpbl9wbGFjZV90KCkgPSBkZWZhdWx0OworfTsKK19f
SU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBpbl9wbGFjZV90IGluX3BsYWNlIHsg
fTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpbl9wbGFjZV90eXBlX3QgeworICAgIGV4
cGxpY2l0IGluX3BsYWNlX3R5cGVfdCgpID0gZGVmYXVsdDsKK307Cit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK19fSU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBpbl9wbGFjZV90eXBlX3Q8
VD4gaW5fcGxhY2VfdHlwZSB7IH07CisKK3RlbXBsYXRlIDxzaXplX3QgST4gc3RydWN0IGluX3Bs
YWNlX2luZGV4X3QgeworICAgIGV4cGxpY2l0IGluX3BsYWNlX2luZGV4X3QoKSA9IGRlZmF1bHQ7
Cit9OwordGVtcGxhdGUgPHNpemVfdCBJPgorX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgY29u
c3RleHByIGluX3BsYWNlX2luZGV4X3Q8ST4gaW5fcGxhY2VfaW5kZXggeyB9OworI2VuZGlmIC8v
IF9fY3BsdXNwbHVzIDwgMjAxNzAzTAorCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogI2RlZmluZSBX
VEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oIGIvU291cmNlL1dURi93dGYv
VW5leHBlY3RlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NTNiM2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVkLmgKQEAgLTAsMCAr
MSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gSW1wbGVtZW50YXRpb24gb2YgTGlicmFyeSBG
dW5kYW1lbnRhbHMgdjMncyBzdGQ6OmV4cGVjdGVkLCBhcyBkZXNjcmliZWQgaGVyZTogaHR0cDov
L3dnMjEubGluay9wMDMyM3I0CisKKyNwcmFnbWEgb25jZQorCisvKgorICAgIHVuZXhwZWN0ZWQg
c3lub3BzaXMKKworbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKK2lu
bGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKKyAgICAvLyA/Lj8uMywgVW5leHBlY3Rl
ZCBvYmplY3QgdHlwZQorICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAgICAgY2xhc3MgdW5leHBl
Y3RlZDsKKworICAgIC8vID8uPy40LCBVbmV4cGVjdGVkIHJlbGF0aW9uYWwgb3BlcmF0b3JzCisg
ICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhwciBib29sCisgICAgICAgIG9w
ZXJhdG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mKTsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgICAgY29uc3RleHByIGJvb2wKKyAgICAgICAgb3Bl
cmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiwgY29uc3QgdW5leHBlY3RlZDxFPiYpOworCisg
ICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgY2xhc3MgdW5leHBlY3RlZCB7CisgICAgcHVibGlj
OgorICAgICAgICB1bmV4cGVjdGVkKCkgPSBkZWxldGU7CisgICAgICAgIGNvbnN0ZXhwciBleHBs
aWNpdCB1bmV4cGVjdGVkKGNvbnN0IEUmKTsKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IHVu
ZXhwZWN0ZWQoRSYmKTsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IEUmIHZhbHVlKCkgY29uc3Qg
JjsKKyAgICAgICAgY29uc3RleHByIEUmIHZhbHVlKCkgJjsKKyAgICAgICAgY29uc3RleHByIEUm
JiB2YWx1ZSgpICYmOworICAgICAgICBjb25zdGV4cHIgRSBjb25zdCYmIHZhbHVlKCkgY29uc3Qm
JjsKKyAgICBwcml2YXRlOgorICAgICAgICBFIHZhbDsgLy8gZXhwb3NpdGlvbiBvbmx5CisgICAg
fTsKKworfX19CisKKyovCisKKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHV0aWxpdHk+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ugc3RkIHsKK25hbWVz
cGFjZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgewor
Cit0ZW1wbGF0ZTxjbGFzcyBFPgorY2xhc3MgdW5leHBlY3RlZCB7CitwdWJsaWM6CisgICAgdW5l
eHBlY3RlZCgpID0gZGVsZXRlOworICAgIGNvbnN0ZXhwciBleHBsaWNpdCB1bmV4cGVjdGVkKGNv
bnN0IEUmIGUpIDogdmFsKGUpIHsgfQorICAgIGNvbnN0ZXhwciBleHBsaWNpdCB1bmV4cGVjdGVk
KEUmJiBlKSA6IHZhbChzdGQ6OmZvcndhcmQ8RT4oZSkpIHsgfQorICAgIGNvbnN0ZXhwciBjb25z
dCBFJiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1cm4gdmFsOyB9CisgICAgUkVMQVhFRF9DT05TVEVY
UFIgRSYgdmFsdWUoKSAmIHsgcmV0dXJuIHZhbDsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIEUm
JiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUodmFsKTsgfQorICAgIFJFTEFYRURfQ09OU1RF
WFBSIGNvbnN0IEUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIFdURk1vdmUodmFsKTsgfQor
Citwcml2YXRlOgorICAgIEUgdmFsOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiBsaHMsIGNvbnN0IHVuZXhwZWN0
ZWQ8RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7IH0KK3RlbXBs
YXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5leHBlY3RlZDxF
PiYgbGhzLCBjb25zdCB1bmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0dXJuIGxocy52YWx1ZSgpICE9
IHJocy52YWx1ZSgpOyB9CisKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50YWw6OmZ1
bmRhbWVudGFsc192MworCit0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVkID0gc3Rk
OjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CisKKy8vIE5vdCBpbiB0aGUgc3RkOjpleHBl
Y3RlZCBzcGVjLCBidXQgdXNlZnVsIHRvIHdvcmsgYXJvdW5kIGxhY2sgb2YgQysrMTcgZGVkdWN0
aW9uIGd1aWRlcy4KK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBVbmV4cGVjdGVkPHN0ZDo6
ZGVjYXlfdDxFPj4gbWFrZVVuZXhwZWN0ZWQoRSYmIHYpIHsgcmV0dXJuIFVuZXhwZWN0ZWQ8dHlw
ZW5hbWUgc3RkOjpkZWNheTxFPjo6dHlwZT4oc3RkOjpmb3J3YXJkPEU+KHYpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDgxOTFjNjEuLjExMDIxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIw
MTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB2YXJpb3VzIHVz
ZXMgb2YgRXhwZWN0ZWQsIG1vc3RseSByZW5hbWluZyB2YWx1ZU9yIGFuZAorICAgICAgICBoYXNW
YWx1ZSB0byB0aGUgU1RMIG5hbWluZyBjb252ZW50aW9uLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cmV0cmlldmVS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpiYXRjaERlbGV0ZU9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ2FjaGVTdG9yYWdlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFn
ZTo6cmVtb3ZlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9SZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0
YU9yRXJyb3JGcm9tUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzT3JFcnJvckZy
b21SZWNvcmRzRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2Ny
aXB0V2l0aENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6Z2V0RG9tYWluTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
bG9hZFRyaWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkRW5jb2RlZFJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVMaXN0
KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjps
b2FkQmVzdEZpdEltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOgorICAgICAgICAqIGNzcy9T
dHlsZVJ1bGVJbXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1wb3J0Ojpy
ZXF1ZXN0U3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL0NhbGxiYWNrUmVzdWx0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBlPjo6dHlwZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBlPjo6cmVsZWFzZVJldHVy
blZhbHVlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uT3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFJldHVyblR5
cGU+OjpoYXNFeGNlcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uT3I8
dm9pZD46Omhhc0V4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNo
ZWNrU3R5bGVTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5oOgorICAgICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUp
OgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpzdGFydFByZWZsaWdo
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9h
ZGVyOjpsb2FkTGluayk6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNl
cjo6cGFyc2VJUHY0SG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9h
ZGluZyk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAg
ICogc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
b250RmFjZVVyaUVsZW1lbnQ6OmxvYWRGb250KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERv
Y3VtZW50KToKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQpOgorCiAyMDE3LTExLTMwICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgZmlsdGVyIGxv
Z2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNWVh
MjIwYi4uNzhmZTAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKQEAgLTQyMCwxMiArNDIwLDEyIEBAIHZvaWQgRE9NQ2FjaGU6OnJldHJpZXZlUmVjb3Jkcyhj
b25zdCBVUkwmIHVybCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8CiAKICAgICBt
X2Nvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIHJldHJpZXZlVVJMLCBb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3Jkc09yRXJyb3ImJiByZXN1
bHQpIHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsK
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlv
bihyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRzKFdURk1v
dmUocmVzdWx0LnZhbHVlKCkpKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIH0KQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIERPTUNhY2hlOjpiYXRjaERlbGV0
ZU9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpbwog
ICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoRGVs
ZXRlT3BlcmF0aW9uKG1faWRlbnRpZmllciwgcmVxdWVzdC5pbnRlcm5hbFJlcXVlc3QoKSwgV1RG
TW92ZShvcHRpb25zKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29y
ZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIW1faXNTdG9wcGVk
KSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGVF
bmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBjYWxsYmFjayghcmVzdWx0LnZhbHVlKCkuaXNFbXB0eSgpKTsK
QEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIERPTUNhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbihWZWN0
b3I8UmVjb3JkPiYmIHJlY29yZHMsIFdURjo6RnVuY3Rpb248dm9pZChFeAogICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoUHV0T3BlcmF0aW9uKG1f
aWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBp
ZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQ2
ZTZmMmIuLjg1OTk1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFn
ZTo6cmV0cmlldmVDYWNoZXMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPgogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPnJl
dHJpZXZlQ2FjaGVzKG9yaWdpbiwgbV91cGRhdGVDb3VudGVyLCBbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNW
YWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3Vs
dC5lcnJvcigpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
MTkxLDcgKzE5MSw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxECiAgICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgbmFt
ZSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNoZUlk
ZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2lz
U3RvcHBlZCkgewotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5l
cnJvcigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9p
ZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VE
ZWZlcnJlZDxJRExCb29sZWFuPiYKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwog
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZShtX2NhY2hlc1twb3NpdGlvbl0tPmlkZW50aWZp
ZXIoKSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNo
ZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFt
X2lzU3RvcHBlZCkgewotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3Vs
dC5lcnJvcigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcAppbmRleCAwNjNiNzAyLi4yNjZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
QEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRv
UmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdAogICAgICAgICBBU1NF
UlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CiAKICAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVj
dGlvbi0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXShj
b25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChjYWNoZUlkZW50aWZpZXIsICFyZXN1bHQuaGFzVmFsdWUoKSB8fCBy
ZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNhY2hlSWRlbnRpZmllciwgIXJlc3VsdC5oYXNfdmFsdWUoKSB8fCBy
ZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVz
dWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IHJlc3VsdCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLAogCiAg
ICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBk
YXRlQ291bnRlciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCByZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICAgICAgQ2FjaGVJbmZvc09yRXJyb3IgaXNvbGF0ZWRSZXN1bHQ7Ci0gICAgICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFz
X3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3Vs
dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBy
ZXN1bHQudmFsdWUoKS5pc29sYXRlZENvcHkoKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMg
aW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29y
ZHMoY29uc3QgVmVjdG9yPAogCiBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9zc1Ro
cmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMoY29u
c3QgUmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKIHsKLSAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgp
KQorICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQocmVzdWx0LmVycm9yKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZHNEYXRhRnJvbVJlY29y
ZHMocmVzdWx0LnZhbHVlKCkpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBpbmxpbmUgVmVj
dG9yPFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNv
cmREYXRhCiAKIHN0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9t
UmVjb3Jkc0RhdGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9y
PiYmIHJlY29yZHNEYXRhKQogewotICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzVmFsdWUoKSkKKyAg
ICBpZiAoIXJlY29yZHNEYXRhLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQocmVjb3Jkc0RhdGEuZXJyb3IoKSk7CiAgICAgcmV0dXJuIHJlY29yZHNGcm9tUmVjb3Jk
c0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YS52YWx1ZSgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IGVlMDY4ZjYu
LmQ2NjIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNj
cmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNj
cmlwdEZldGNoZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShE
CiAgICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CisgICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVx
dWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHAKaW5kZXggNTZkZmY2YS4uZWY2MzQwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlVG9C
eXRlY29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJzLCBVbml2ZXJzYWxBY3Rpb25TZXQm
Jgogc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGls
YXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW5nJiYgcnVsZUpTT04pCiB7CiAgICAgYXV0byBydWxl
TGlzdCA9IHBhcnNlUnVsZUxpc3QoV1RGTW92ZShydWxlSlNPTikpOwotICAgIGlmICghcnVsZUxp
c3QuaGFzVmFsdWUoKSkKKyAgICBpZiAoIXJ1bGVMaXN0Lmhhc192YWx1ZSgpKQogICAgICAgICBy
ZXR1cm4gcnVsZUxpc3QuZXJyb3IoKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+
IHBhcnNlZFJ1bGVMaXN0ID0gV1RGTW92ZShydWxlTGlzdC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
UGFyc2VyLmNwcAppbmRleCAxNjYxNGM1Li5jY2RiMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNw
cApAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6
ZXJyb3JfY29kZT4gZ2V0U3RyaW5nTGlzdChFeGVjU3RhdGUmIGV4ZWMsCiBzdGF0aWMgRXhwZWN0
ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4gZ2V0RG9tYWluTGlzdChFeGVjU3Rh
dGUmIGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBhcnJheU9iamVjdCkKIHsKICAgICBhdXRvIHN0cmlu
Z3MgPSBnZXRTdHJpbmdMaXN0KGV4ZWMsIGFycmF5T2JqZWN0KTsKLSAgICBpZiAoIXN0cmluZ3Mu
aGFzVmFsdWUoKSkKKyAgICBpZiAoIXN0cmluZ3MuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBzdHJpbmdzOwogICAgIGZvciAoYXV0byYgZG9tYWluIDogc3RyaW5ncy52YWx1ZSgpKSB7CiAg
ICAgICAgIC8vIERvbWFpbnMgc2hvdWxkIGJlIHB1bnljb2RlIGVuY29kZWQgbG93ZXIgY2FzZS4K
QEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9j
b2RlPiBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTTwogICAgIGNvbnN0IEpT
VmFsdWUgaWZEb21haW5WYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZleGVjLCAiaWYtZG9tYWluIikpOwogICAgIGlmICghc2NvcGUuZXhjZXB0
aW9uKCkgJiYgaWZEb21haW5WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGF1dG8gaWZEb21h
aW4gPSBnZXREb21haW5MaXN0KGV4ZWMsIGFzT2JqZWN0KGlmRG9tYWluVmFsdWUpKTsKLSAgICAg
ICAgaWYgKCFpZkRvbWFpbi5oYXNWYWx1ZSgpKQorICAgICAgICBpZiAoIWlmRG9tYWluLmhhc192
YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlmRG9tYWluLmVycm9y
KCkpOwogICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3ZlKGlmRG9tYWluLnZhbHVl
KCkpOwogICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTE5MCw3
ICsxOTAsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2Fk
VHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTTwogICAgICAgICBpZiAodHJpZ2dlci5j
b25kaXRpb25UeXBlICE9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpCiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlw
bGVDb25kaXRpb25zKTsKICAgICAgICAgYXV0byB1bmxlc3NEb21haW4gPSBnZXREb21haW5MaXN0
KGV4ZWMsIGFzT2JqZWN0KHVubGVzc0RvbWFpblZhbHVlKSk7Ci0gICAgICAgIGlmICghdW5sZXNz
RG9tYWluLmhhc1ZhbHVlKCkpCisgICAgICAgIGlmICghdW5sZXNzRG9tYWluLmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHVubGVzc0RvbWFpbi5lcnJvcigp
KTsKICAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZSh1bmxlc3NEb21haW4udmFs
dWUoKSk7CiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjA0
LDcgKzIwNCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxv
YWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPCiAgICAgICAgIGlmICh0cmlnZ2Vy
LmNvbmRpdGlvblR5cGUgIT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSkKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0
aXBsZUNvbmRpdGlvbnMpOwogICAgICAgICBhdXRvIGlmVG9wVVJMID0gZ2V0U3RyaW5nTGlzdChl
eGVjLCBhc09iamVjdChpZlRvcFVSTFZhbHVlKSk7Ci0gICAgICAgIGlmICghaWZUb3BVUkwuaGFz
VmFsdWUoKSkKKyAgICAgICAgaWYgKCFpZlRvcFVSTC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChpZlRvcFVSTC5lcnJvcigpKTsKICAgICAgICAgdHJpZ2dl
ci5jb25kaXRpb25zID0gV1RGTW92ZShpZlRvcFVSTC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHRy
aWdnZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIEV4
cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoRXhlY1N0YXRlJiBl
eGVjLCBjb25zdCBKU08KICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9uVHlwZSAhPSBUcmln
Z2VyOjpDb25kaXRpb25UeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9ucyk7CiAgICAg
ICAgIGF1dG8gdW5sZXNzVG9wVVJMID0gZ2V0U3RyaW5nTGlzdChleGVjLCBhc09iamVjdCh1bmxl
c3NUb3BVUkxWYWx1ZSkpOwotICAgICAgICBpZiAoIXVubGVzc1RvcFVSTC5oYXNWYWx1ZSgpKQor
ICAgICAgICBpZiAoIXVubGVzc1RvcFVSTC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCh1bmxlc3NUb3BVUkwuZXJyb3IoKSk7CiAgICAgICAgIHRyaWdnZXIu
Y29uZGl0aW9ucyA9IFdURk1vdmUodW5sZXNzVG9wVVJMLnZhbHVlKCkpOwogICAgICAgICBpZiAo
dHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTI4OCwxMSArMjg4LDExIEBAIHN0YXRp
YyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFj
dGlvbihFeGVjU3RhdGUmIGV4CiBzdGF0aWMgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxDb250ZW50
RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFJ1bGUoRXhlY1N0YXRlJiBleGVj
LCBjb25zdCBKU09iamVjdCYgcnVsZU9iamVjdCkKIHsKICAgICBhdXRvIHRyaWdnZXIgPSBsb2Fk
VHJpZ2dlcihleGVjLCBydWxlT2JqZWN0KTsKLSAgICBpZiAoIXRyaWdnZXIuaGFzVmFsdWUoKSkK
KyAgICBpZiAoIXRyaWdnZXIuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCh0cmlnZ2VyLmVycm9yKCkpOwogCiAgICAgYXV0byBhY3Rpb24gPSBsb2FkQWN0aW9uKGV4
ZWMsIHJ1bGVPYmplY3QpOwotICAgIGlmICghYWN0aW9uLmhhc1ZhbHVlKCkpCisgICAgaWYgKCFh
Y3Rpb24uaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhY3Rpb24u
ZXJyb3IoKSk7CiAKICAgICBpZiAoYWN0aW9uLnZhbHVlKCkpCkBAIC0zNDAsNyArMzQwLDcgQEAg
c3RhdGljIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3Jf
Y29kZT4gbG9hZEVuY29kZWRSdWxlcygKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUnVsZSk7CiAKICAgICAgICAgYXV0
byBydWxlID0gbG9hZFJ1bGUoZXhlYywgKnJ1bGVPYmplY3QpOwotICAgICAgICBpZiAoIXJ1bGUu
aGFzVmFsdWUoKSkKKyAgICAgICAgaWYgKCFydWxlLmhhc192YWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJ1bGUuZXJyb3IoKSk7CiAgICAgICAgIGlmIChydWxlLnZh
bHVlKCkpCiAgICAgICAgICAgICBydWxlTGlzdC5hcHBlbmQoKnJ1bGUudmFsdWUoKSk7CkBAIC0z
NjQsNyArMzY0LDcgQEAgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3Rk
OjplcnJvcl9jb2RlPiBwYXJzZVJ1bGVMaXN0KFN0cmluZyYmIHIKIAogICAgIHZtID0gbnVsbHB0
cjsKIAotICAgIGlmICghcnVsZUxpc3QuaGFzVmFsdWUoKSkKKyAgICBpZiAoIXJ1bGVMaXN0Lmhh
c192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocnVsZUxpc3QuZXJyb3Io
KSk7CiAKICAgICBpZiAocnVsZUxpc3QtPmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA4YWNkOWFmLi44MWQ4YTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMSw3ICsxMDEsNyBA
QCBDYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBpc1NWRywgYm9vbAogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSks
IG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fY2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1
ZU9yKG51bGxwdHIpOworICAgIG1fY2FjaGVkRm9udCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RGb250KFdURk1vdmUocmVxdWVzdCksIGlzU1ZHKS52YWx1ZV9vcihu
dWxscHRyKTsKICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggYTY4MWI4Yi4uYTk3ZGMyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsNyArMTAzLDcgQEAg
c3RkOjpwYWlyPENhY2hlZEltYWdlKiwgZmxvYXQ+IENTU0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0
Rml0SW1hZ2UoQ2FjaGVkUmVzb3VyY2UKICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRj
aE9wdGlvbnM6Ok1vZGU6OkNvcnMpCiAgICAgICAgICAgICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vz
c0NvbnRyb2woKmRvY3VtZW50KTsKIAotICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJl
cXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBt
X2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1
ZV9vcihudWxscHRyKTsKICAgICAgICAgbV9iZXN0Rml0SW1hZ2VTY2FsZUZhY3RvciA9IGltYWdl
LnNjYWxlRmFjdG9yOwogICAgIH0KICAgICByZXR1cm4geyBtX2NhY2hlZEltYWdlLmdldCgpLCBt
X2Jlc3RGaXRJbWFnZVNjYWxlRmFjdG9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHAKaW5kZXggMzczNjNkMC4uYzE5MWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC03Miw3ICs3Miw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2Uo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyCiAgICAgICAgICAgICBB
U1NFUlQobG9hZGVyLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JB
Y2Nlc3NDb250cm9sKCpsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9j
YWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVP
cihudWxscHRyKTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2Uo
V1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgfQogICAgIHJldHVybiBt
X2NhY2hlZEltYWdlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNw
cAppbmRleCBjMDBmZjJlLi4wNDk4YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlSW1wb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1w
b3J0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiAoQykgMjAwMi0yMDAzIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0
U3R5bGVTaGVldCgpCiAgICAgICAgIHJlcXVlc3Quc2V0T3B0aW9ucyhSZXNvdXJjZUxvYWRlck9w
dGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0Ns
aWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlLCBT
a2lwU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVk
ZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBv
bGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hp
bmdQb2xpY3k6OkFsbG93Q2FjaGluZykpOwogICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KFdURk1v
dmUocmVxdWVzdCkpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShy
ZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3Vt
ZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmIChtX2NhY2hlZFNoZWV0KSB7CiAg
ICAgICAgIC8vIGlmIHRoZSBpbXBvcnQgcnVsZSBpcyBpc3N1ZWQgZHluYW1pY2FsbHksIHRoZSBz
aGVldCBtYXkgYmUKICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBwZW5kaW5nIHNoZWV0IGNv
dW50LCBzbyBsZXQgdGhlIGRvYyBrbm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2FsbGJhY2tSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxsYmFja1Jlc3VsdC5oCmlu
ZGV4IDNiZWJmZTEuLjg3OGZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxs
YmFja1Jlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxsYmFja1Jlc3VsdC5oCkBA
IC03MSwxMiArNzEsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIENh
bGxiYWNrUmVzdWx0PFJldHVyblR5cGU+OjpDYWxsYmFja1Jlc3VsdCgKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIENhbGxiYWNrUmVzdWx0VHlwZSBDYWxsYmFja1Jlc3Vs
dDxSZXR1cm5UeXBlPjo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdmFsdWUuaGFzVmFs
dWUoKSA/IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcyA6IG1fdmFsdWUuZXJyb3IoKTsKKyAg
ICByZXR1cm4gbV92YWx1ZS5oYXNfdmFsdWUoKSA/IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2Vz
cyA6IG1fdmFsdWUuZXJyb3IoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4g
aW5saW5lIGF1dG8gQ2FsbGJhY2tSZXN1bHQ8UmV0dXJuVHlwZT46OnJlbGVhc2VSZXR1cm5WYWx1
ZSgpIC0+IFJldHVyblR5cGUmJgogewotICAgIEFTU0VSVChtX3ZhbHVlLmhhc1ZhbHVlKCkpOwor
ICAgIEFTU0VSVChtX3ZhbHVlLmhhc192YWx1ZSgpKTsKICAgICByZXR1cm4gV1RGTW92ZShtX3Zh
bHVlLnZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODI5NDJiYi4uNDJj
YjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzA0MSw3ICszMDQxLDcgQEAgVVJMIEVs
ZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0CiAKIGludCBFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZUhUTUxJbnRl
Z2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4g
cGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDAp
OwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZSkKQEAgLTMwNTEsNyArMzA1MSw3IEBAIHZv
aWQgRWxlbWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgaW50IHZhbHVlCiAKIHVuc2lnbmVkIEVsZW1lbnQ6OmdldFVuc2lnbmVkSW50
ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGdldEF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRp
dmVJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAK
IHZvaWQgRWxlbWVudDo6c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bk9yLmgKaW5kZXggZmY5NTUyMi4uNzNjOGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgK
QEAgLTEsNiArMSw2IEBACiAvKgogCi1Db3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTUsNyArOTUsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5
cGU+IGlubGluZSBFeGNlcHRpb25PcjxSZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
PiBpbmxpbmUgYm9vbCBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6aGFzRXhjZXB0aW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gIW1fdmFsdWUuaGFzVmFsdWUoKTsKKyAgICByZXR1cm4gIW1fdmFs
dWUuaGFzX3ZhbHVlKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGlu
ZSBjb25zdCBFeGNlcHRpb24mIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpleGNlcHRpb24oKSBj
b25zdApAQCAtMTYwLDcgKzE2MCw3IEBAIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPjo6RXhjZXB0
aW9uT3IoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogCiBpbmxpbmUgYm9vbCBFeGNlcHRpb25Pcjx2
b2lkPjo6aGFzRXhjZXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fdmFsdWUuaGFzVmFs
dWUoKTsKKyAgICByZXR1cm4gIW1fdmFsdWUuaGFzX3ZhbHVlKCk7CiB9CiAKIGlubGluZSBjb25z
dCBFeGNlcHRpb24mIEV4Y2VwdGlvbk9yPHZvaWQ+OjpleGNlcHRpb24oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCAxNWEyYjE1Li45
NWNlN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cApAQCAtMTU4LDE0ICsxNTgsMTQgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNr
U3R5bGVTaGVldCgpCiAgICAgICAgICAgICBpZiAobV9pc1hTTCkgewogICAgICAgICAgICAgICAg
IGF1dG8gb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCk7CiAgICAgICAgICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25z
OjpNb2RlOjpTYW1lT3JpZ2luOwotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1
bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291
cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9uc30pLnZhbHVl
T3IobnVsbHB0cik7CisgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7UmVzb3VyY2VSZXF1
ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zfSkudmFsdWVfb3IobnVs
bHB0cik7CiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0KCJjaGFyc2V0Iik7CiAg
ICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBjaGFyc2V0LmlzRW1wdHkoKSA/IGRvY3VtZW50
KCkuY2hhcnNldCgpIDogV1RGTW92ZShjaGFyc2V0KSk7CiAKLSAgICAgICAgICAgICAgICBtX2Nh
Y2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NT
dHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgICAg
ICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAg
ICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBlNWI5MmI0Li4zZDg2YzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE4MDIsNyArMTgwMiw3IEBAIGJv
b2wgSFRNTElucHV0RWxlbWVudDo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1ZhbHVlKQogewogICAgIHVuc2lnbmVkIG9sZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVmZmVjdGl2
ZU1heExlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVu
Z3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsK
ICAgICBpZiAob2xkRWZmZWN0aXZlTWF4TGVuZ3RoICE9IGVmZmVjdGl2ZU1heExlbmd0aCgpKQog
ICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKQEAgLTE4MTQsNyArMTgxNCw3IEBAIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlKQogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaW50IG9s
ZE1pbkxlbmd0aCA9IG1pbkxlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVy
bmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFs
dWVfb3IoLTEpKTsKICAgICBpZiAob2xkTWluTGVuZ3RoICE9IG1pbkxlbmd0aCgpKQogICAgICAg
ICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAppbmRleCA5ZDNkY2UzLi4xNTg0MDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MoKQogICAgICAgICByZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihj
cm9zc09yaWdpbigpLCBkb2N1bWVudCgpKTsKIAogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighbV9jYWNoZWRTaGVldCk7Ci0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBk
b2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RG
TW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChX
VEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKIAogICAgICAgICBpZiAobV9jYWNo
ZWRTaGVldCkKICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCgqdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA2MGY3MDE2
Li5kNzNmOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKQEAgLTIwMiwxMyArMjAyLDEzIEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiAKIHZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFs
U2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVf
b3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChw
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAg
dXBkYXRlVmFsaWRpdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAxMGViYjBiLi42Yzg2MTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDksNyArMjA5LDcg
QEAgRXhwZWN0ZWQ8dW5zaWduZWQsIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yPiBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmkKIHsKICAgICBhdXRvIG9wdGlvbmFsU2lnbmVkUmVz
dWx0ID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgaWYgKCFvcHRpb25hbFNpZ25lZFJl
c3VsdCkKLSAgICAgICAgcmV0dXJuIG9wdGlvbmFsU2lnbmVkUmVzdWx0LmdldFVuZXhwZWN0ZWQo
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUob3B0aW9uYWxTaWduZWRS
ZXN1bHQuZXJyb3IoKSkpOwogCiAgICAgaWYgKG9wdGlvbmFsU2lnbmVkUmVzdWx0LnZhbHVlKCkg
PCAwKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSFRNTEludGVnZXJQYXJzaW5nRXJy
b3I6Ok5lZ2F0aXZlT3ZlcmZsb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5oCmluZGV4IDI2OWNjNjIuLmRjY2NjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU4LDcgKzE1OCw3IEBAIGlubGlu
ZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwgdW5z
aWduZWQgZGVmYXVsdFZhbHVlCiBpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVn
YXRpdmUoU3RyaW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMCkK
IHsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIp
OwotICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmlu
Z1ZhbHVlKS52YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7CisgICAgdW5zaWduZWQgdmFsdWUgPSBwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlX29yKGRlZmF1bHRWYWx1
ZSk7CiAgICAgQVNTRVJUKHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwogICAg
IHJldHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggMTIyZjBkOS4uOTFhYzM5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6c3RhcnRQcmVmbGlnaHQoKQogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEluaXRpYXRv
cihtX2xvYWRlci5vcHRpb25zKCkuaW5pdGlhdG9yKTsKIAogICAgIEFTU0VSVCghbV9yZXNvdXJj
ZSk7Ci0gICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShwcmVmbGlnaHRSZXF1ZXN0KSkudmFs
dWVPcihudWxscHRyKTsKKyAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHByZWZsaWdodFJl
cXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAg
bV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IGFjODg1OTAuLmM4OTQ0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTUzMSw3ICsxNTMxLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ICAgIG1haW5SZXNvdXJjZVJlcXVlc3Quc2V0TmF2aWdhdGlvblNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhKG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEpOwogI2VuZGlmCiAKLSAg
ICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVz
b3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAg
ICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVz
b3VyY2UoV1RGTW92ZShtYWluUmVzb3VyY2VSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChtX21haW5SZXNvdXJjZSAm
JiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBt
X21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigpID09IENvbnRlbnRFeHRlbnNp
b25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiZjFmYjQ0Li45OTAz
ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAg
ICAgICAgIH0KIAogICAgICAgICBhdXRvIGNhY2hlZFJlc291cmNlID0gbV9kb2N1bWVudC5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKG5ld1JlcXVlc3Qp
KTsKLSAgICAgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlLnZhbHVlT3IobnVsbHB0cik7
CisgICAgICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1ZV9vcihudWxscHRyKTsK
ICAgICAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGll
bnQoKnRoaXMpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCBiYmQ0NjRjLi42MjcyNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxl
bWVudCgpCiAgICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLm1fZG9j
dW1lbnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UuZ2V0KCkpOwogICAg
ICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5zZXRBdXRvTG9hZEltYWdl
cyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdJ
bWFnZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1v
dmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgICAgICBuZXdJbWFnZSA9IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVz
dCkpLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgICAgIC8vIElmIHdlIGRvIG5vdCBoYXZlIGFu
IGltYWdlIGhlcmUsIGl0IG1lYW5zIHRoYXQgYSBjcm9zcy1zaXRlCiAgICAgICAgIC8vIHZpb2xh
dGlvbiBvY2N1cnJlZCwgb3IgdGhhdCB0aGUgaW1hZ2Ugd2FzIGJsb2NrZWQgdmlhIENvbnRlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBmN2NjNTc5Li4yMDc5ZmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9h
ZElmTmVlZGVkKGNvbnN0IExpbgogICAgIGxpbmtSZXF1ZXN0LnNldElzTGlua1ByZWxvYWQoKTsK
IAogICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjcm9zc09yaWdp
bk1vZGUsIGRvY3VtZW50KTsKLSAgICBhdXRvIGNhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucHJlbG9hZCh0eXBlLnZhbHVlKCksIFdURk1vdmUobGlu
a1JlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIGF1dG8gY2FjaGVkTGlua1Jlc291cmNl
ID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwg
V1RGTW92ZShsaW5rUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgaWYgKGNhY2hl
ZExpbmtSZXNvdXJjZSAmJiBsb2FkZXIpCiAgICAgICAgIHJldHVybiBjcmVhdGVMaW5rUHJlbG9h
ZFJlc291cmNlQ2xpZW50KCpjYWNoZWRMaW5rUmVzb3VyY2UsICpsb2FkZXIsIHR5cGUudmFsdWUo
KSk7CkBAIC0yOTgsNyArMjk4LDcgQEAgYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBM
aW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwKICAgICAgICAg
fQogICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNl
TG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgICAgIG9wdGlvbnMu
Y29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUlt
cG9zaXRpb246OlNraXBQb2xpY3lDaGVjazsKLSAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2Ug
PSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlw
ZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0
ZVVSTChocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAg
ICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5KSku
dmFsdWVfb3IobnVsbHB0cik7CiAgICAgICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkKICAg
ICAgICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4
NDFkOGYxLi40Njc0NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw3ICs4MSw3
IEBAIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IE1lZGlhUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlCiAgICAgaWYgKG1fbWVkaWFFbGVtZW50KQogICAg
ICAgICBjYWNoZVJlcXVlc3Quc2V0SW5pdGlhdG9yKCptX21lZGlhRWxlbWVudC5nZXQoKSk7CiAK
LSAgICBhdXRvIHJlc291cmNlID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0TWVkaWEoV1RGTW92ZShjYWNoZVJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAg
IGF1dG8gcmVzb3VyY2UgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RNZWRpYShXVEZNb3ZlKGNhY2hlUmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlm
ICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDgwNDBiNzguLmZmMTQzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAg
Ym9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y3Jvc3NPcmlnaW5Nb2RlLCBib29sIGkKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY3VlUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkpLCBvcHRpb25z
KTsKICAgICBjdWVSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjcm9zc09yaWdp
bk1vZGUsICpkb2N1bWVudCk7CiAKLSAgICBtX3Jlc291cmNlID0gZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdFRleHRUcmFjayhXVEZNb3ZlKGN1ZVJlcXVlc3QpKS52YWx1
ZU9yKG51bGxwdHIpOworICAgIG1fcmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1vdmUoY3VlUmVxdWVzdCkpLnZhbHVlX29yKG51
bGxwdHIpOwogICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlLmNwcAppbmRleCAyZTA4ZWUyLi4xMmU2MDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6
bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIKICAgICBmZXRj
aE9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKICAgICBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKG1fdXJsKSksIGZldGNoT3B0aW9ucyk7CiAgICAgcmVxdWVzdC5zZXRJ
bml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7Ci0gICAgbV9k
b2N1bWVudCA9IGxvYWRlci5yZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSkudmFs
dWVPcihudWxscHRyKTsKKyAgICBtX2RvY3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVu
dChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9kb2N1bWVu
dCkKICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCAxNWQ0NGY1Li5kODJkM2FkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc2LDcgKzc2LDcgQEAg
dm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5pY29uKTsKIAogICAgIGF1dG8gY2Fj
aGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0SWNvbihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVz
b3VyY2UudmFsdWVPcihudWxscHRyKTsKKyAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2Uu
dmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3Vy
Y2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5jcHAKaW5kZXggNjcyODYxMi4uNmI0Y2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzMTQsMTEgKzIzMTQsMTEgQEAgRXhwZWN0ZWQ8VVJMUGFyc2VyOjpJUHY0
QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNlSVAK
ICAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5zaXpl
KCkgPiA0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6
Tm90SVB2NCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAg
aWYgKCFpdGVtLmhhc1ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKKyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJy
b3IoKSA9PSBJUHY0UGllY2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCiAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CiAgICAgfQogICAg
IGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNW
YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93
KQorICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQ
aWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CiAgICAgfQogICAgIGlmIChpdGVtcy5z
aXplKCkgPiAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggZDk1MTg4Mi4uNTJlYjc0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291
cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVy
RGF0YSwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVk
ZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29y
cywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xv
YWRpbmcsIENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZykpOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGxvYWRlciA9IG1fcGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKLSAgICBtX3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKSA6IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUo
cmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpIDogbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpp
bmRleCA4NDdhNGY5Li45NzFjODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgLy8gaXMgaW4gYSB1c2VyLWFnZW50
IHNoYWRvdyB0cmVlLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzM0OTg+LgogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFdURk1vdmUocmVz
b3VyY2VSZXF1ZXN0KSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90
U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RV
c2UsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxz
LCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNo
T3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQ
b2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5n
KSk7CiAgICAgaWYgKGF1dG8qIGxvYWRlciA9IG1fcGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSkKLSAgICAgICAgbV9yZXNvdXJjZSA9IGxvYWRlci0+cmVxdWVzdE1lZGlh
KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgIG1fcmVzb3VyY2Ug
PSBsb2FkZXItPnJlcXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRy
KTsKIAogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggYzRj
OWQwNS4uM2M3MGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVlc3RJbWFnZVJl
c291cmNlKCkKIAogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVx
dWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYoKSkpLCBvcHRpb25zKTsKICAgICByZXF1
ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7Ci0gICAgbV9jYWNoZWRJbWFnZSA9IGRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFs
dWVPcihudWxscHRyKTsKKyAgICBtX2NhY2hlZEltYWdlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxs
cHRyKTsKIAogICAgIGlmIChtX2NhY2hlZEltYWdlKQogICAgICAgICBtX2NhY2hlZEltYWdlLT5h
ZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlVXJpRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVt
ZW50LmNwcAppbmRleCA5ZDc2MTA1Li42MGE5OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6bG9h
ZEZvbnQoKQogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAgICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRl
VVJMKGhyZWYpKSwgb3B0aW9ucyk7CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlz
KTsKLSAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIucmVxdWVzdEZv
bnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkdGb250VGFyZ2V0KCp0aGlzKSkudmFsdWVPcihudWxs
cHRyKTsKKyAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIucmVxdWVz
dEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkdGb250VGFyZ2V0KCp0aGlzKSkudmFsdWVfb3Io
bnVsbHB0cik7CiAgICAgICAgIGlmIChtX2NhY2hlZEZvbnQpIHsKICAgICAgICAgICAgIG1fY2Fj
aGVkRm9udC0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICAgICAgICAgIG1fY2FjaGVkRm9udC0+YmVn
aW5Mb2FkSWZOZWVkZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCmluZGV4IGVlZGY4NjYuLjA1ODgxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVG9y
Y2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgUmVuYXRhIEhvZG92YW4gPHJlbmlAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9j
dW1lbnQoKQogICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVP
cmlnaW47CiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgUmVzb3VyY2VS
ZXF1ZXN0IHsgZXh0ZXJuYWxEb2N1bWVudFVSTCB9LCBvcHRpb25zIH07CiAgICAgICAgIHJlcXVl
c3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICAgICAgbV9leHRlcm5hbERvY3VtZW50ID0gZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3Zl
KHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQg
PSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNWR0RvY3VtZW50KFdU
Rk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgICAgICBpZiAobV9leHRlcm5h
bERvY3VtZW50KQogICAgICAgICAgICAgbV9leHRlcm5hbERvY3VtZW50LT5hZGRDbGllbnQoKnRo
aXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAppbmRleCA3YWQzOTk0
Li44NGNhNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBYU0wgaW1wbGVtZW50YXRpb24u
CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTAzLDcgKzEw
Myw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKIAogICAgIGF1dG8gb3B0aW9u
cyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7
CiAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwotICAg
IG1fY2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFhTTFN0eWxlU2hl
ZXQoe1Jlc291cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoYWJzSHJlZikpLCBvcHRpb25zfSkudmFsdWVPcihudWxscHRyKTsKKyAgICBtX2Nh
Y2hlZFNoZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtS
ZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKGFic0hyZWYpKSwgb3B0aW9uc30pLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgaWYgKG1f
Y2FjaGVkU2hlZXQpIHsKICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTM3ODIxYy4uMWZlYjBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAor
MjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAg
VXBkYXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNvZGluZyBzdHlsZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMg
dXNlcyBvZiBFeHBlY3RlZCwgbW9zdGx5IHJlbmFtaW5nIHZhbHVlT3IgYW5kCisgICAgICAgIGhh
c1ZhbHVlIHRvIHRoZSBTVEwgbmFtaW5nIGNvbnZlbnRpb24uCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpSZWFkUmVjb3JkVGFza0NvdW50ZXI6OmFwcGVuZFJlY29yZCk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnVwZGF0ZVJlY29yZFRvRGlz
ayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hlc0Zy
b21EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNv
bHZlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisKIDIwMTct
MTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9t
YXRpb246IGNvbXB1dGVFbGVtZW50TGF5b3V0IGRvZXMgbm90IGNvcnJlY3RseSB0cmFuc2xhdGUg
aWZyYW1lIGNsaWVudCBjb29yZGluYXRlcyB0byBtYWluIGZyYW1lIGNvb3JkaW5hdGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKaW5kZXggNjc5NDkzNS4uYWRhNDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIEVuZ2luZTo6RW5naW5lKFN0cmluZyYmIHJvb3RQYXRoKQogdm9p
ZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVO
YW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNo
ZXNGcm9tRGlzayhvcmlnaW4sIFtjYWNoZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKENhY2hlc09yRXJyb3ImJiBjYWNoZXNPckVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCFjYWNoZXNPckVycm9yLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFjYWNoZXNPckVycm9y
Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChjYWNo
ZXNPckVycm9yLmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrCiB2b2lkIEVuZ2luZTo6cmV0
cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIs
IENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlz
ayhvcmlnaW4sIFt1cGRhdGVDb3VudGVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShD
YWNoZXNPckVycm9yJiYgY2FjaGVzT3JFcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghY2Fj
aGVzT3JFcnJvci5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghY2FjaGVzT3JFcnJvci5oYXNf
dmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoY2FjaGVzT3JF
cnJvci5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE2MSw3
ICsxNjEsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmln
aW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSQogdm9pZCBFbmdpbmU6OnJldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCwgUmVj
b3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmll
ciwgW3VybCA9IFdURk1vdmUodXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2Fj
aGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFs
dWUoKSkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAg
Y2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2
ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFJl
Y29yCiB2b2lkIEVuZ2luZTo6cHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFtyZWNvcmRzID0gV1RGTW92
ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFr
ZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgRW5naW5lOjpwdXRSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvCiB2b2lkIEVu
Z2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlv
bnMmJiBvcHRpb25zLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmllciwgW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQu
aGFzVmFsdWUoKSkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAg
ICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgRW5naW5lOjpm
ZXRjaEVudHJpZXMoYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlCiAKICAgICAgICAgICAgIGF1dG8gY2FjaGVPcmlnaW4gPSBvcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFk
Q2FjaGVzRnJvbURpc2soY2FjaGVPcmlnaW4sIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbi52YWx1
ZSgpKSwgdGFza0NvdW50ZXIgPSBXVEZNb3ZlKHRhc2tDb3VudGVyKV0gKENhY2hlc09yRXJyb3Im
JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVl
KCkpCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2lu
KFdURk1vdmUob3JpZ2luKSwgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuc3RvcmFnZVNpemUoKSk7CiAK
QEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW4sIENhbGxiYWNrQWdncmVnYXRvciYgdGFzawogdm9pZCBFbmdpbmU6
OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBy
ZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Q2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgp
KSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggYTY5YzNhYS4uN2IzYWFhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRSZWNvcmQoRXhwZWN0ZWQ8UmVjb3JkLCBFcnJvcj4mJiByZXN1bHQsIHVpbnQ2NF90
IHJlY29yZElkZW50aWZpZXIsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpCiAgICAgewogICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1
ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBt
X2ZhaWxlZFJlY29yZHMuYXBwZW5kKHJlY29yZElkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBDYWNoZTo6dXBkYXRlUmVj
b3JkVG9EaXNrKFJlY29yZEluZm9ybWF0aW9uJiBleGlzdGluZ1JlY29yZCwgUmVjb3JkJiYgcmVj
b3IKIHsKICAgICArK2V4aXN0aW5nUmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBy
ZWFkUmVjb3JkRnJvbURpc2soZXhpc3RpbmdSZWNvcmQsIFtjYWNoZXMgPSBtYWtlUmVmKG1fY2Fj
aGVzKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkSWRlbnRpZmllciA9IGV4aXN0
aW5nUmVjb3JkLmlkZW50aWZpZXIsIHJlY29yZCA9IFdURk1vdmUocmVjb3JkKSwgdGFza0NvdW50
ZXIgPSBXVEZNb3ZlKHRhc2tDb3VudGVyKV0oRXhwZWN0ZWQ8UmVjb3JkLCBFcnJvcj4mJiByZXN1
bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBh
dXRvKiBjYWNoZSA9IGNhY2hlcy0+ZmluZChpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcAppbmRleCAzYzRlNzc3Li40Njg5ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBDYWNoZXM6OmluaXRpYWxpemUoV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAg
ICAgICByZWFkQ2FjaGVzRnJvbURpc2soW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBtYWtlRGlydHkoKTsKIAotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFs
dWUoKSkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CiAKICAgICAgICAgICAgICAgICBhdXRv
IHBlbmRpbmdDYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJh
Y2tzKTsKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIENhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNr
KFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcgogICAgICAg
ICB9CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBkZWNvZGVDYWNoZXNOYW1lcyhkYXRhLCBlcnJv
cik7Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFyZXN1
bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKHJl
c3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGI2ZWFkY2QuLmE1MjA0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApA
QCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiB2b2lkIE5ldHdvcmtS
VENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBhZGRyZXNzKQogewogICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6
QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0
Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpD
YW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDgzNTdlYWIuLjgzODQ1MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4MiwxMCArNDgyLDEwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnPiBzdHJ1Y3QgQXJndW1lCiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVUeXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6
RXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6RXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5
cGU+JiBleHBlY3RlZCkKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXJy
b3JUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlw
ZT4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRXhw
ZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+JiBleHBlY3RlZCkKICAgICB7Ci0gICAgICAgIGlm
ICghZXhwZWN0ZWQuaGFzVmFsdWUoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkLmhhc192YWx1
ZSgpKSB7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogICAgICAgICAgICAgZW5jb2Rl
ciA8PCBleHBlY3RlZC5lcnJvcigpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDk0LDcgKzQ5
NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXJyb3JUeXBlPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OkV4cGVjCiAgICAgICAgIGVuY29kZXIgPDwgZXhwZWN0
ZWQudmFsdWUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXVEY6OkV4cGVj
dGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+PiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aGFzVmFsdWU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzVmFsdWU7CkBAIC01MDcsNyArNTA3LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdURjo6RXhwZWMKICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgV1RGOjpFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gZXhwZWN0ZWQoV1RGTW92ZSgq
dmFsdWUpKTsKKyAgICAgICAgICAgIEV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiBleHBl
Y3RlZChXVEZNb3ZlKCp2YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZXhwZWN0
ZWQpOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3JUeXBlPiBlcnJvcjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDEx
NWFlLi45NmU3OWRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGxp
YmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSB0ZXN0cyBhY2NvcmRpbmcgdG8gbmFtZSBjaGFuZ2VzIGFzIHdlbGwg
YXMgcmVtb3ZhbCBvZgorICAgICAgICBub3ctZ29uZSBBUElzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3I8PCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisKIDIwMTctMTEtMzAg
IEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5D
YWlyb10gQ2Fubm90IGJ1aWxkIHdpdGhvdXQgSW50ZXJuZXQgY29ubmVjdGlvbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IGFjODAxNmIuLjNiZDQ4ZDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTMxLDE2
ICszMSwyMCBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgorI2luY2x1ZGUgPHd0Zi9VbmV4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2Ug
c3RkIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxPiBzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qgc3RkOjpwYWlyPFQwLCBUMT4mIHAp
CiB7CiAgICAgcmV0dXJuIG9zIDw8ICcoJyA8PCBwLmZpcnN0IDw8ICIsICIgPDwgcC5zZWNvbmQg
PDwgJyknOwogfQogCituYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2Ug
ZnVuZGFtZW50YWxzX3YzIHsKKwogdGVtcGxhdGU8Y2xhc3MgRT4gc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHUpCiB7CiAgICAg
cmV0dXJuIG9zIDw8IHUudmFsdWUoKTsKQEAgLTQ4LDE5ICs1MiwyMCBAQCB0ZW1wbGF0ZTxjbGFz
cyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgVW5l
eHBlY3RlZDxFPgogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIGUpCiB7Ci0g
ICAgaWYgKGUuaGFzVmFsdWUoKSkKKyAgICBpZiAoZS5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIG9zIDw8IGUudmFsdWUoKTsKICAgICByZXR1cm4gb3MgPDwgZS5lcnJvcigpOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
cywgY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIGUpCiB7Ci0gICAgaWYgKGUuaGFzVmFsdWUoKSkK
KyAgICBpZiAoZS5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG9zIDw8ICIiOwogICAgIHJl
dHVybiBvcyA8PCBlLmVycm9yKCk7CiB9CiAKLX0KK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBl
cmltZW50YWw6OmZ1bmRhbWVudGFsc192MworCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IApAQCAtMTExLDc5ICsxMTYsNjIgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIGV4cGVjdGVkKQogICAg
IHR5cGVkZWYgRXhwZWN0ZWQ8Zm9vLCBzdGQ6OnN0cmluZz4gRm9vU3RyaW5nOwogICAgIHsKICAg
ICAgICAgYXV0byBlID0gRSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc1ZhbHVlKCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUu
dmFsdWUoKSwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShlLnZhbHVlT3IoMy4xNCksIDApOworICAg
ICAgICBFWFBFQ1RfRVEoZS52YWx1ZV9vcigzLjE0KSwgMCk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgY29uc3RleHByIEUgZTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZS5oYXNWYWx1ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoZS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLnZh
bHVlKCksIDApOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCAwKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGUudmFsdWVfb3IoMy4xNCksIDApOwogICAgIH0KICAgICB7CiAgICAgICAg
IGF1dG8gZSA9IEUoNDIpOwotICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc1ZhbHVlKCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUudmFs
dWUoKSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAg
ICAgIEVYUEVDVF9FUShlLnZhbHVlX29yKDMuMTQpLCA0Mik7CiAgICAgICAgIGNvbnN0IGF1dG8g
ZTIoZSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShlMi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlMi52YWx1ZSgpLCA0
Mik7Ci0gICAgICAgIEVYUEVDVF9FUShlMi52YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAgIEVY
UEVDVF9FUShlMi52YWx1ZV9vcigzLjE0KSwgNDIpOwogICAgICAgICBFIGUzOwogICAgICAgICBl
MyA9IGUyOwotICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZTMuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZTMudmFsdWUoKSwg
NDIpOwotICAgICAgICBFWFBFQ1RfRVEoZTMudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBF
WFBFQ1RfRVEoZTMudmFsdWVfb3IoMy4xNCksIDQyKTsKICAgICAgICAgY29uc3QgRSBlNCA9IGUy
OwotICAgICAgICBFWFBFQ1RfVFJVRShlNC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoZTQuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZTQudmFsdWUoKSwgNDIpOwot
ICAgICAgICBFWFBFQ1RfRVEoZTQudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBFWFBFQ1Rf
RVEoZTQudmFsdWVfb3IoMy4xNCksIDQyKTsKICAgICB9CiAgICAgewogICAgICAgICBjb25zdGV4
cHIgRSBjKDQyKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoYy5oYXNWYWx1ZSgpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoYy5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShjLnZhbHVlKCks
IDQyKTsKLSAgICAgICAgRVhQRUNUX0VRKGMudmFsdWVPcigzLjE0KSwgNDIpOworICAgICAgICBF
WFBFQ1RfRVEoYy52YWx1ZV9vcigzLjE0KSwgNDIpOwogICAgICAgICBjb25zdGV4cHIgY29uc3Qg
YXV0byBjMihjKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoYzIuaGFzVmFsdWUoKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKGMyLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGMyLnZhbHVl
KCksIDQyKTsKLSAgICAgICAgRVhQRUNUX0VRKGMyLnZhbHVlT3IoMy4xNCksIDQyKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGMyLnZhbHVlX29yKDMuMTQpLCA0Mik7CiAgICAgfQogICAgIHsKICAgICAg
ICAgYXV0byB1ID0gRShtYWtlVW5leHBlY3RlZChvb3BzKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RSh1Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodS5oYXNfdmFsdWUoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSh1LmVycm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEodS5n
ZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUSh1LnZhbHVl
T3IoMy4xNCksIDMpOworICAgICAgICBFWFBFQ1RfRVEodS52YWx1ZV9vcigzLjE0KSwgMyk7CiAg
ICAgfQogICAgIHsKICAgICAgICAgYXV0byB1diA9IEVWKG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHV2Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRkFM
U0UodXYuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEodXYuZXJyb3IoKSwgb29wcyk7
Ci0gICAgICAgIEVYUEVDVF9FUSh1di5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9FUSh1di52YWx1ZU9yKDMuMTQpLCAzKTsKKyAgICAgICAgRVhQRUNUX0VR
KHV2LnZhbHVlX29yKDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAgICAgICBFIGUgPSBtYWtl
VW5leHBlY3RlZChvb3BzKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGUuaGFzVmFsdWUoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShlLmVycm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEoZS5n
ZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLnZhbHVl
T3IoMy4xNCksIDMpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIGF1dG8gZSA9IG1ha2VFeHBlY3Rl
ZEZyb21FcnJvcjxpbnQsIGNvbnN0IGNoYXIqPihvb3BzKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KGUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShlLmhhc192YWx1ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdl
dFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVP
cigzLjE0KSwgMyk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgYXV0byBlID0gbWFrZUV4cGVjdGVk
RnJvbUVycm9yPGludCwgY29uc3Qgdm9pZCo+KG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAg
ICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAg
RVhQRUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMyk7CisgICAgICAgIEVYUEVDVF9FUShlLnZhbHVl
X29yKDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAgICAgICBhdXRvIGUgPSBGb29DaGFyKDQy
KTsKQEAgLTIzNiw1MSArMjI0LDM2IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB2b2lkKQogICAgIHR5
cGVkZWYgRXhwZWN0ZWQ8dm9pZCwgc3RkOjpzdHJpbmc+IFN0cmluZzsKICAgICB7CiAgICAgICAg
IGF1dG8gZSA9IEUoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZS5oYXNWYWx1ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoZS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIGNvbnN0IGF1dG8gZTIoZSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShlMi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLCBlMik7CiAgICAgICAgIEUg
ZTM7CiAgICAgICAgIGUzID0gZTI7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUzLmhhc1ZhbHVlKCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9F
UShlLCBlMyk7CiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3RleHByIEUgYzsKLSAgICAgICAg
RVhQRUNUX1RSVUUoYy5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYy5oYXNfdmFs
dWUoKSk7CiAgICAgICAgIGNvbnN0ZXhwciBjb25zdCBhdXRvIGMyKGMpOwotICAgICAgICBFWFBF
Q1RfVFJVRShjMi5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYzIuaGFzX3ZhbHVl
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoYywgYzIpOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1
dG8gdSA9IEUobWFrZVVuZXhwZWN0ZWQob29wcykpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodS5o
YXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHUuaGFzX3ZhbHVlKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEodS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKHUuZ2V0VW5l
eHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8gdXYg
PSBFVihtYWtlVW5leHBlY3RlZChvb3BzKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1di5oYXNW
YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHV2Lmhhc192YWx1ZSgpKTsKICAgICAgICAg
RVhQRUNUX0VRKHV2LmVycm9yKCksIG9vcHMpOwotICAgICAgICBFWFBFQ1RfRVEodXYuZ2V0VW5l
eHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0KICAgICB7CiAgICAgICAgIEUgZSA9IG1h
a2VVbmV4cGVjdGVkKG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsK
LSAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShl
LmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICB9Ci0gICAgewotICAgICAgICBh
dXRvIGUgPSBtYWtlRXhwZWN0ZWRGcm9tRXJyb3I8dm9pZCwgY29uc3QgY2hhcio+KG9vcHMpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUu
ZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1
ZSgpLCBvb3BzKTsKLSAgICB9Ci0gICAgewotICAgICAgICBhdXRvIGUgPSBtYWtlRXhwZWN0ZWRG
cm9tRXJyb3I8dm9pZCwgY29uc3Qgdm9pZCo+KG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGUuaGFzX3ZhbHVlKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0
VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8g
ZTAgPSBFKCk7CkBAIC0zMTIsNyArMjg1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHZvaWQpCiAg
ICAgfQogICAgIHsKICAgICAgICAgdHlwZWRlZiBFeHBlY3RlZDxzdGQ6OnBhaXI8aW50LCBpbnQ+
LCBzdGQ6OnN0cmluZz4gRXQ7Ci0gICAgICAgIEVYUEVDVF9FUShFdChXVEY6OkluUGxhY2UsIDEs
IDIpLCBFdChXVEY6OkluUGxhY2UsIDEsIDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKEV0KHN0ZDo6
aW5fcGxhY2UsIDEsIDIpLCBFdChzdGQ6OmluX3BsYWNlLCAxLCAyKSk7CiAgICAgfQogfQogCkBA
IC00NjUsNyArNDM4LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIFJlZikKICAgICB7CiAgICAgICAg
IFJlZkxvZ2dlciBhKCJhIik7CiAgICAgICAgIEV4cGVjdGVkPFJlZjxSZWZMb2dnZXI+LCBpbnQ+
IGV4cGVjdGVkID0gUmVmPFJlZkxvZ2dlcj4oYSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGV4cGVj
dGVkLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZC5oYXNfdmFsdWUo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZXhwZWN0ZWQudmFsdWUoKS5wdHIoKSk7CiAgICAg
fQogCkBAIC00NzMsOCArNDQ2LDggQEAgVEVTVChXVEZfRXhwZWN0ZWQsIFJlZikKIAogICAgIHsK
ICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKLSAgICAgICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dl
cj4sIGludD4gZXhwZWN0ZWQgPSBtYWtlRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4sIGludD4oUmVm
PFJlZkxvZ2dlcj4oYSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZC5oYXNWYWx1ZSgp
KTsKKyAgICAgICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4sIGludD4gZXhwZWN0ZWQgPSBFeHBl
Y3RlZDxSZWY8UmVmTG9nZ2VyPiwgaW50PihSZWY8UmVmTG9nZ2VyPihhKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBl
eHBlY3RlZC52YWx1ZSgpLnB0cigpKTsKICAgICB9CiAKQEAgLTQ4Myw3ICs0NTYsNyBAQCBURVNU
KFdURl9FeHBlY3RlZCwgUmVmKQogICAgIHsKICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAg
ICAgICAgRXhwZWN0ZWQ8aW50LCBSZWY8UmVmTG9nZ2VyPj4gZXhwZWN0ZWQgPSBtYWtlVW5leHBl
Y3RlZChSZWY8UmVmTG9nZ2VyPihhKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShleHBlY3RlZC5o
YXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBleHBlY3RlZC5lcnJvcigpLnB0cigpKTsKICAgICB9CiAK
QEAgLTQ5Miw3ICs0NjUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgUmVmKQogICAgIHsKICAgICAg
ICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgUmVmPFJlZkxvZ2dl
cj4+IGV4cGVjdGVkID0gbWFrZVVuZXhwZWN0ZWQoUmVmPFJlZkxvZ2dlcj4oYSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0UoZXhwZWN0ZWQuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShleHBlY3RlZC5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZXhwZWN0ZWQu
ZXJyb3IoKS5wdHIoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggMGYxYzAyZC4uNDE4NjA3
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgdGVzdFBhcnNlSFRNTElu
dGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0g
cGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3Vs
dCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9w
dGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRl
Z2VyRmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMg
dW5zaWduZWQgdGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlu
cHV0KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJl
dHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3Vs
dC52YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyRmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKLS0gCjIuOS4zCgo=
</data>
<flag name="review"
          id="347374"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328394</attachid>
            <date>2017-12-04 15:02:59 -0800</date>
            <delta_ts>2017-12-04 15:35:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Update-std-expected-to-match-libc-coding-style.patch</filename>
            <type>text/plain</type>
            <size>136295</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0ODc1ZmVkZjI3M2U1MGQ1NWIwMjZhYzYxNDM0M2Q5NzY3YWU1Mzk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDEgRGVjIDIwMTcgMTI6MzQ6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUg
c3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCgotLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCAgICAgICAgICAgIHwgICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCAgICB8ICAxMCAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oICAgICAgICAgICAgfCAg
IDggKy0KIC4uLi93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weSAgICAg
IHwgIDE4ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcCB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDkyICsrKwogU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCA2NTIgKysrKysrKysrKysrKy0tLS0tLS0tCiBTb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogU291cmNl
L1dURi93dGYvT3B0aW9uYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKwog
U291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTcg
KysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA5OCArKysrCiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCAgICAg
ICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3Jh
Z2UuY3BwICAgfCAgIDYgKy0KIC4uLi9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcCB8ICAgMiArLQogLi4uL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgfCAgIDQgKy0KIC4uLi9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogU291cmNl
L1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmggICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCAgICAgICAgICAgICAgICAgICB8ICAg
NiArLQogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgICAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAg
ICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgICAg
ICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcCAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgICAgICB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgICAgICAgICAgfCAgIDIgKy0K
IC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCAgICAgICAgICB8
ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCAgICAgICAgICAg
ICAgfCAgIDYgKy0KIC4uLi9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAgIHwgICA0ICstCiAuLi4vYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsKIC4uLi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICAgIHwgIDE0ICstCiAuLi4vY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAgIHwgICAyICstCiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oICAgICAgICB8ICAxMiAr
LQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTggKwogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwICAgICAgICAg
fCAxMTcgKystLQogLi4uL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAgICAgICAg
ICAgICAgfCAgIDYgKy0KIDU4IGZpbGVzIGNoYW5nZWQsIDk0OSBpbnNlcnRpb25zKCspLCA0NTEg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dURi93dGYvVW5leHBlY3Rl
ZC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhNTBhMS4uZjk2YTQ1YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMTItMDEgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVk
IHRvIG1hdGNoIGxpYmMrKyBjb2Rpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMgdXNlcyBvZiBFeHBlY3RlZC4K
KworICAgICAgICAqIHdhc20vV2FzbU1vZHVsZS5oOgorICAgICAgICAqIHdhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VJbXBv
cnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIp
OgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGUpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlTWVtb3J5SGVscGVyKToKKyAgICAgICAg
KiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRl
SW5saW5lc0hlYWRlci5weToKKyAgICAgICAgKGxvYWRNYWNybyk6CisgICAgICAgIChzdG9yZU1h
Y3JvKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaDoKKwogMjAxNy0xMi0wNCAgRGV2aW4gUm91c3NvICA8
d2Via2l0QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRl
IG1ldGhvZCBmb3IgcmVjb3JkaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBmcm9tIEphdmFT
Y3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAppbmRleCBhNmFlMjlm
Li5mYTM2YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC00
NSw3ICs0NSw3IEBAIHVzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDMyX3Q7CiAKIGNsYXNzIE1v
ZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsKIHB1YmxpYzoKLSAg
ICB1c2luZyBWYWxpZGF0aW9uUmVzdWx0ID0gV1RGOjpFeHBlY3RlZDxSZWZQdHI8TW9kdWxlPiwg
U3RyaW5nPjsKKyAgICB1c2luZyBWYWxpZGF0aW9uUmVzdWx0ID0gRXhwZWN0ZWQ8UmVmUHRyPE1v
ZHVsZT4sIFN0cmluZz47CiAgICAgdHlwZWRlZiB2b2lkIENhbGxiYWNrVHlwZShWYWxpZGF0aW9u
UmVzdWx0JiYpOwogICAgIHVzaW5nIEFzeW5jVmFsaWRhdGlvbkNhbGxiYWNrID0gUmVmUHRyPFNo
YXJlZFRhc2s8Q2FsbGJhY2tUeXBlPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZVBhcnNlci5jcHAKaW5kZXggMGM3M2QzZi4uYTA5ODc4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTE3OSwx
NCArMTc5LDE0IEBAIGF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICAgICAgICAgIGJvb2wgaXNJbXBvcnQgPSB0cnVlOwogICAgICAgICAgICAgUGFy
dGlhbFJlc3VsdCByZXN1bHQgPSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LmdldFVuZXhwZWN0ZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
V1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogewogICAgICAgICAgICAgYm9vbCBp
c0ltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNl
TWVtb3J5SGVscGVyKGlzSW1wb3J0KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghcmVzdWx0
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmdldFVuZXhwZWN0ZWQoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBFeHRlcm5hbEtp
bmQ6Okdsb2JhbDogewpAQCAtMjYzLDcgKzI2Myw3IEBAIGF1dG8gTW9kdWxlUGFyc2VyOjpwYXJz
ZVRhYmxlSGVscGVyKGJvb2wgaXNJbXBvcnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOwogICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFy
c2VSZXNpemFibGVMaW1pdHMoaW5pdGlhbCwgbWF4aW11bSk7CiAgICAgaWYgKFVOTElLRUxZKCFs
aW1pdHMpKQotICAgICAgICByZXR1cm4gbGltaXRzLmdldFVuZXhwZWN0ZWQoKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUobGltaXRzLmVycm9yKCkpKTsKICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKGluaXRpYWwgPiBtYXhUYWJsZUVudHJpZXMsICJUYWJsZSdzIGluaXRp
YWwgcGFnZSBjb3VudCBvZiAiLCBpbml0aWFsLCAiIGlzIHRvbyBiaWcsIG1heGltdW0gIiwgbWF4
VGFibGVFbnRyaWVzKTsKIAogICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+PSBpbml0
aWFsKTsKQEAgLTI4NSw3ICsyODUsNyBAQCBhdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSgp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICBib29sIGlzSW1wb3J0ID0gZmFsc2U7CiAgICAgUGFydGlh
bFJlc3VsdCByZXN1bHQgPSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKICAgICBpZiAoVU5M
SUtFTFkoIXJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQuZ2V0VW5leHBlY3RlZCgpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTMwMyw3ICszMDMsNyBAQCBhdXRvIE1vZHVsZVBhcnNl
cjo6cGFyc2VNZW1vcnlIZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlhbFJlc3VsdAogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOwogICAgICAgICBQYXJ0aWFsUmVz
dWx0IGxpbWl0cyA9IHBhcnNlUmVzaXphYmxlTGltaXRzKGluaXRpYWwsIG1heGltdW0pOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIWxpbWl0cykpCi0gICAgICAgICAgICByZXR1cm4gbGltaXRzLmdl
dFVuZXhwZWN0ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3Zl
KGxpbWl0cy5lcnJvcigpKSk7CiAgICAgICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+
PSBpbml0aWFsKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighUGFnZUNvdW50Ojppc1Zh
bGlkKGluaXRpYWwpLCAiTWVtb3J5J3MgaW5pdGlhbCBwYWdlIGNvdW50IG9mICIsIGluaXRpYWws
ICIgaXMgaW52YWxpZCIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgK
aW5kZXggOTVmNGRiNS4uM2M3MjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
YXJzZXIuaApAQCAtOTcsMTAgKzk3LDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGZh
aWwoX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotI2Rl
ZmluZSBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGhlbHBlcikgZG8geyAgIFwKLSAgICAgICAg
YXV0byBoZWxwZXJSZXN1bHQgPSBoZWxwZXI7ICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChV
TkxJS0VMWSghaGVscGVyUmVzdWx0KSkgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJu
IGhlbHBlclJlc3VsdC5nZXRVbmV4cGVjdGVkKCk7IFwKKyNkZWZpbmUgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhoZWxwZXIpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBh
dXRvIGhlbHBlclJlc3VsdCA9IGhlbHBlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGlmIChVTkxJS0VMWSghaGVscGVyUmVzdWx0KSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZN
b3ZlKGhlbHBlclJlc3VsdC5lcnJvcigpKSk7ICAgXAogICAgIH0gd2hpbGUgKDApCiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21W
YWxpZGF0ZUlubGluZXNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5l
cmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFkZXIucHkKaW5kZXggMTgwNTNkMy4uYmM1NGEyMiAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRh
dGVJbmxpbmVzSGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVy
YXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9i
aW4vZW52IHB5dGhvbgogCi0jIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNyArNjMs
NyBAQCBkZWYgdW5hcnlNYWNybyhuYW1lKToKIHRlbXBsYXRlPD4gYXV0byBWYWxpZGF0ZTo6YWRk
T3A8T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIj4oRXhwcmVzc2lvblR5cGUgdmFsdWUs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewogICAgIGlmIChVTkxJS0VMWSh2
YWx1ZSAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAgICAg
ICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVk
OiAiIiIgKyBuYW1lICsgIiIiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgcmV0dXJu
IFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiAr
IG5hbWUgKyAiIiIgdmFsdWUgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgcmVzdWx0ID0gIiIiICsg
Y3BwVHlwZShvcFsicmV0dXJuIl1bMF0pICsgIiIiOwogICAgIHJldHVybiB7IH07CkBAIC03Nywx
MCArNzcsMTAgQEAgZGVmIGJpbmFyeU1hY3JvKG5hbWUpOgogdGVtcGxhdGU8PiBhdXRvIFZhbGlk
YXRlOjphZGRPcDxPcFR5cGU6OiIiIiArIHRvQ3BwKG5hbWUpICsgIiIiPihFeHByZXNzaW9uVHlw
ZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UmVzdWx0CiB7CiAgICAgaWYgKFVOTElLRUxZKGxlZnQgIT0gIiIiICsgY3BwVHlwZShvcFsicGFy
YW1ldGVyIl1bMF0pICsgIiIiKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpF
cnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBsZWZ0IHZhbHVl
IHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJv
cl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgbGVmdCB2YWx1ZSB0
eXBlIG1pc21hdGNoIik7CiAKICAgICBpZiAoVU5MSUtFTFkocmlnaHQgIT0gIiIiICsgY3BwVHlw
ZShvcFsicGFyYW1ldGVyIl1bMV0pICsgIiIiKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8
UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiBy
aWdodCB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJl
c3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHJp
Z2h0IHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgIHJlc3VsdCA9ICIiIiArIGNwcFR5cGUo
b3BbInJldHVybiJdWzBdKSArICIiIjsKICAgICByZXR1cm4geyB9OwpAQCAtOTIsNyArOTIsNyBA
QCBkZWYgbG9hZE1hY3JvKG5hbWUpOgogICAgIHJldHVybiAiIiIKICAgICBjYXNlIExvYWRPcFR5
cGU6OiIiIiArIHRvQ3BwKG5hbWUpICsgIiIiOiB7CiAgICAgICAgIGlmIChVTkxJS0VMWShwb2lu
dGVyICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzBdKSArICIiIikpCi0gICAgICAg
ICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFp
bGVkOiAiIiIgKyBuYW1lICsgIiIiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICAg
ICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWls
ZWQ6ICIiIiArIG5hbWUgKyAiIiIgcG9pbnRlciB0eXBlIG1pc21hdGNoIik7CiAKICAgICAgICAg
cmVzdWx0ID0gIiIiICsgY3BwVHlwZShvcFsicmV0dXJuIl1bMF0pICsgIiIiOwogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTA0LDEwICsxMDQsMTAgQEAgZGVmIHN0b3JlTWFjcm8obmFtZSk6CiAg
ICAgcmV0dXJuICIiIgogICAgIGNhc2UgU3RvcmVPcFR5cGU6OiIiIiArIHRvQ3BwKG5hbWUpICsg
IiIiOiB7CiAgICAgICAgIGlmIChVTkxJS0VMWShwb2ludGVyICE9ICIiIiArIGNwcFR5cGUob3Bb
InBhcmFtZXRlciJdWzBdKSArICIiIikpCi0gICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxS
ZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHBv
aW50ZXIgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVz
dWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgcG9p
bnRlciB0eXBlIG1pc21hdGNoIik7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlICE9ICIi
IiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzFdKSArICIiIikpCi0gICAgICAgICAgICByZXR1
cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIg
KyBuYW1lICsgIiIiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgICAgIHJldHVybiBV
bmV4cGVjdGVkPFJlc3VsdDo6ZXJyb3JfdHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBu
YW1lICsgIiIiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0iIiIKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogYXV0byBWYWxpZGF0ZTo6bG9hZChMb2FkT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBw
b2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCkgLT4gUmVzdWx0CiB7CiAg
ICAgaWYgKFVOTElLRUxZKCFoYXNNZW1vcnkoKSkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVk
PFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6IGxvYWQgaW5zdHJ1Y3Rpb24g
d2l0aG91dCBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJv
cl90eXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6IGxvYWQgaW5zdHJ1Y3Rpb24gd2l0aG91dCBtZW1v
cnkiKTsKIAogICAgIHN3aXRjaCAob3ApIHsKICIiIiArIGxvYWRDYXNlcyArICIiIgpAQCAtMTUw
LDcgKzE1MCw3IEBAIGF1dG8gVmFsaWRhdGU6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lv
blR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsCiBhdXRvIFZhbGlkYXRlOjpzdG9y
ZShTdG9yZU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUg
dmFsdWUsIHVpbnQzMl90KSAtPiBSZXN1bHQKIHsKICAgICBpZiAoVU5MSUtFTFkoIWhhc01lbW9y
eSgpKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxp
ZGF0aW9uIGZhaWxlZDogc3RvcmUgaW5zdHJ1Y3Rpb24gd2l0aG91dCBtZW1vcnkiKTsKKyAgICAg
ICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjplcnJvcl90eXBlPigidmFsaWRhdGlvbiBmYWls
ZWQ6IHN0b3JlIGluc3RydWN0aW9uIHdpdGhvdXQgbWVtb3J5Iik7CiAKICAgICBzd2l0Y2ggKG9w
KSB7CiAiIiIgKyBzdG9yZUNhc2VzICsgIiIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCmluZGV4IDQwYzEwMDYuLjIzZmVm
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlNb2R1bGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFz
c2VtYmx5TW9kdWxlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Nb2R1bGUiLCAmQmFzZTo6c19p
CiBKU1dlYkFzc2VtYmx5TW9kdWxlKiBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6TW9kdWxl
OjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgaWYg
KCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJl
LT5nbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSwgcmVz
dWx0LmVycm9yKCkpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4
IDAxYjVkMDcuLjhmZWM2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBK
U1dlYkFzc2VtYmx5TW9kdWxlKiBjcmVhdGVTdHViKFZNJiwgRXhlY1N0YXRlKiwgU3RydWN0dXJl
KiwgV1RGOjpFeHBlY3RlZDxSZWZQdHI8V2FzbTo6TW9kdWxlPiwgU3RyaW5nPiYmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3JlYXRlU3R1YihW
TSYsIEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEV4cGVjdGVkPFJlZlB0cjxXYXNtOjpNb2R1bGU+
LCBTdHJpbmc+JiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZv
cm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggN2EwMWFkMi4uOGE5YmI4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw5NSBAQAorMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHN0ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGli
YysrIGNvZGluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4K
KworICAgICAgICBBcyBvZiBodHRwczovL3dnMjEubGluay9wMDMyM3I0IHN0ZDo6ZXhwZWN0ZWQg
aXMgb24gaXRzIHdheSB0byB0aGUKKyAgICAgICAgTGlicmFyeSBGdW5kYW1lbnRhbHMgdjMgVFMg
KExFV0cgYW5kIEVXRyB2b3RlZCBmb3IgdGhpcywgYnV0IExXRworICAgICAgICBoYXNuJ3QgZG9u
ZSB3b3JkaW5nIHJldmlldyB5ZXQsIGhlbmNlICJvbiBpdHMgd2F5IikuIFRoZSBBUEkgaXMKKyAg
ICAgICAgdGhlcmVmb3JlIHByZXR0eSBjbG9zZSB0byB3aGF0IHdpbGwgYmUgaW4gdGhlIFRTLCBh
bmQgSSd2ZSBnb3R0ZW4KKyAgICAgICAgcmVxdWVzdHMgZm9yIGFuIGVhc2lseSB1c2FibGUgaW1w
bGVtZW50YXRpb24gb2Ygc3RkOjpleHBlY3RlZC4gSQorICAgICAgICB0YWxrZWQgdG8gb3VyIGNs
YW5nIHRlYW0gYW5kIHRoZXknbGwgaGVscCBtZSBtaWdyYXRlIG91cgorICAgICAgICBpbXBsZW1l
bnRhdGlvbiB0byBsaWJjKyssIGJ1dCBvdXIgaW1wbGVtZW50YXRpb24gaGFzIHRvIGxvb2sgbW9y
ZQorICAgICAgICBsaWtlIGxpYmMrKyB0aGFuIGl0IGRvZXMgbm93LiBPbmNlIGluIGxpYmMrKyBJ
J2xsIG1haW50YWluIGNoYW5nZXMKKyAgICAgICAgb24gYm90aCBzaWRlcyB0byBtYWtlIHN1cmUg
bmVpdGhlciBpcyBvdXQtb2YtZGF0ZSBmb3IgdG9vIGxvbmcuCisKKyAgICAgICAgLSBGb3JrIHN0
ZDo6dW5leHBlY3RlZCBpbnRvIGl0cyBvd24gaGVhZGVyLgorICAgICAgICAtIEFkZCBtaWxkIHN1
cHBvcnQgZm9yIGFuIGV4Y2VwdGlvbi1iYXNlZCBpbXBsZW1lbnRhdGlvbiwgYnV0CisgICAgICAg
ICAgZG9uJ3QgZG8gbm9leGNlcHQgeWV0LgorICAgICAgICAtIFJlbmFtZSBldmVyeXRoaW5nIHRv
IGZvbGxvdyBTVEwgc3R5bGUsIGFuZCBrZWVwIGEgZ2xvYmFsIHVzaW5nCisgICAgICAgICAgb3Ig
dmFyaWFibGUgYWxpYXMgd2hlcmUgcG9zc2libGUgdG8gcmVkdWNlIFdlYktpdCBjb2RlIGNodXJu
LgorICAgICAgICAtIE1pbm9yIEFQSSB1cGRhdGVzIHRvIHJlbW92ZSB0aGluZ3MgdGhhdCBhcmVu
J3QgaW4gdGhlIHByb3Bvc2FsCisgICAgICAgICAgYW55bW9yZS4KKworICAgICAgICAqIHd0Zi9F
eHBlY3RlZC5oOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6
YmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPjo6YmFkX2V4cGVjdGVkX2FjY2Vzcyk6CisgICAgICAg
IChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpiYWRfZXhwZWN0ZWRfYWNjZXNz
OjpiYWRfZXhwZWN0ZWRfYWNjZXNzKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5k
YW1lbnRhbHNfdjM6OmJhZF9leHBlY3RlZF9hY2Nlc3M6OmVycm9yKToKKyAgICAgICAgKHN0ZDo6
ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmJhZF9leHBlY3RlZF9hY2Nlc3M6OmVycm9y
IGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Ol9f
ZXhwZWN0ZWRfZGV0YWlsOjpjb25zdGV4cHJfYmFzZTo6Y29uc3RleHByX2Jhc2UpOgorICAgICAg
ICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6X19leHBlY3RlZF9kZXRhaWw6
OmJhc2U6OmJhc2UpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192
Mzo6X19leHBlY3RlZF9kZXRhaWw6OmJhc2U6On5iYXNlKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpleHBlY3RlZCk6CisgICAgICAgIChz
dGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6b3BlcmF0b3I9KToK
KyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpz
d2FwKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVj
dGVkOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5k
YW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvci0+KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvciogY29uc3QpOgorICAg
ICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6Om9wZXJh
dG9yKik6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBl
Y3RlZDo6aGFzX3ZhbHVlIGNvbnN0KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5k
YW1lbnRhbHNfdjM6OmV4cGVjdGVkOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVy
aW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBlY3RlZDo6dmFsdWUpOgorICAgICAgICAoc3Rk
OjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6ZXhwZWN0ZWQ6OmVycm9yIGNvbnN0KToK
KyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpl
cnJvcik6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpleHBl
Y3RlZDo6dmFsdWVfb3IgY29uc3QpOgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRh
bWVudGFsc192Mzo6ZXhwZWN0ZWQ6OnZhbHVlX29yKToKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVu
dGFsOjpmdW5kYW1lbnRhbHNfdjM6Om9wZXJhdG9yPT0pOgorICAgICAgICAoc3RkOjpleHBlcmlt
ZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3IhPSk6CisgICAgICAgIChzdGQ6OmV4cGVy
aW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpzd2FwKToKKyAgICAgICAgKFdURjo6VW5leHBlY3Rl
ZDo6VW5leHBlY3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVuZXhwZWN0ZWQ6OnZhbHVl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VW5leHBlY3RlZDo6dmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1ha2VVbmV4cGVjdGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRhaWw6OlRocm93KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6RXhwZWN0ZWREZXRhaWw6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpFeHBlY3RlZERldGFpbDo6c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkRGV0YWlsOjpDb25zdGV4cHJC
YXNlOjpDb25zdGV4cHJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWREZXRh
aWw6OkJhc2U6OkJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZERldGFpbDo6
QmFzZTo6fkJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6RXhwZWN0ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3BlcmF0b3I9KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpF
eHBlY3RlZDo6b3BlcmF0b3ItPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVj
dGVkOjpvcGVyYXRvci0+KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6Om9wZXJh
dG9yKiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvciop
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpoYXNWYWx1ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjp2YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OkV4cGVjdGVkOjp2YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVj
dGVkOjplcnJvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjplcnJv
cik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpnZXRVbmV4cGVjdGVkIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RXhwZWN0ZWQ6OnZhbHVlT3IgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpFeHBlY3RlZDo6dmFsdWVPcik6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjptYWtlRXhwZWN0ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjptYWtlRXhwZWN0ZWRGcm9tRXJyb3IpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi9Gb3J3YXJkLmg6CisgICAgICAgICogd3RmL09wdGlvbmFsLmg6CisgICAgICAg
ICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAqIHd0Zi9VbmV4cGVjdGVkLmg6IEFkZGVk
LgorICAgICAgICAoc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192Mzo6dW5leHBlY3Rl
ZDo6dW5leHBlY3RlZCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxz
X3YzOjp1bmV4cGVjdGVkOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1lbnRh
bDo6ZnVuZGFtZW50YWxzX3YzOjp1bmV4cGVjdGVkOjp2YWx1ZSk6CisgICAgICAgIChzdGQ6OmV4
cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKHN0ZDo6
ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Om9wZXJhdG9yIT0pOgorICAgICAgICAobWFr
ZVVuZXhwZWN0ZWQpOgorCiAyMDE3LTEyLTAzICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhh
dC5jb20+CiAKICAgICAgICAgQnVpbGQgZmFpbHMgb24geDg2XzY0IGFuZCBhcm02NCB3aXRoIEJN
YWxsb2MgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmggYi9T
b3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCmluZGV4IDcyOGI0MTMuLjcwYTIyYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKKysrIGIvU291cmNlL1dURi93dGYvRXhwZWN0
ZWQuaApAQCAtMjMsMTcxICsyMywzMzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0vLyBXVEY6OkV4cGVjdGVkIGlzIGJhc2VkIG9uIHN0ZDo6ZXhwZWN0ZWQs
IGFzIGRlc2NyaWJlZCBoZXJlOiBodHRwOi8vd2cyMS5saW5rL3AwMzIzcjEKLS8vIFRoZSBzcGVj
aWZpY2F0aW9uIGV4cGVjdHMgdG8gdGhyb3cuIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBz
dXBwb3J0IGV4Y2VwdGlvbnMsIHVzZXMgUkVMRUFTRV9BU1NFUlQgaW5zdGVhZC4KKy8vIEltcGxl
bWVudGF0aW9uIG9mIExpYnJhcnkgRnVuZGFtZW50YWxzIHYzJ3Mgc3RkOjpleHBlY3RlZCwgYXMg
ZGVzY3JpYmVkIGhlcmU6IGh0dHA6Ly93ZzIxLmxpbmsvcDAzMjNyNAogCiAjcHJhZ21hIG9uY2UK
IAorLyoKKyAgICBleHBlY3RlZCBzeW5vcHNpcworCituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFj
ZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgeworICAg
IC8vID8uPy40LCBFeHBlY3RlZCBmb3Igb2JqZWN0IHR5cGVzCisgICAgdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEU+CisgICAgICAgIGNsYXNzIGV4cGVjdGVkOworCisgICAgLy8gPy4/LjUsIEV4
cGVjdGVkIHNwZWNpYWxpemF0aW9uIGZvciB2b2lkCisgICAgdGVtcGxhdGUgPGNsYXNzIEU+Cisg
ICAgICAgIGNsYXNzIGV4cGVjdGVkPHZvaWQsRT47CisKKyAgICAvLyA/Lj8uNiwgdW5leHBlY3Qg
dGFnCisgICAgc3RydWN0IHVuZXhwZWN0X3QgeworICAgICAgIHVuZXhwZWN0X3QoKSA9IGRlZmF1
bHQ7CisgICAgfTsKKyAgICBpbmxpbmUgY29uc3RleHByIHVuZXhwZWN0X3QgdW5leHBlY3R7fTsK
KworICAgIC8vID8uPy43LCBjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzCisgICAgdGVtcGxhdGUg
PGNsYXNzIEU+CisgICAgICAgY2xhc3MgYmFkX2V4cGVjdGVkX2FjY2VzczsKKworICAgIC8vID8u
Py44LCBTcGVjaWFsaXphdGlvbiBmb3Igdm9pZC4KKyAgICB0ZW1wbGF0ZSA8PgorICAgICAgIGNs
YXNzIGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD47CisKKyAgICAvLyA/Lj8uOSwgRXhwZWN0ZWQg
cmVsYXRpb25hbCBvcGVyYXRvcnMKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAg
ICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYsIGNv
bnN0IGV4cGVjdGVkPFQsIEU+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+Cisg
ICAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBj
b25zdCBleHBlY3RlZDxULCBFPiYpOworCisgICAgLy8gPy4/LjEwLCBDb21wYXJpc29uIHdpdGgg
VAorICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgVCYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNs
YXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQs
IEU+JiwgY29uc3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4m
KTsKKworICAgIC8vID8uPy4xMCwgQ29tcGFyaXNvbiB3aXRoIHVuZXhwZWN0ZWQ8RT4KKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mLCBjb25zdCB1bmV4cGVjdGVkPEU+Jik7CisgICAgdGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mLCBjb25zdCBleHBlY3RlZDxULCBFPiYpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBFPgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBleHBlY3RlZDxULCBFPiYsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IGV4cGVjdGVkPFQsIEU+Jik7CisKKyAgICAvLyA/Lj8u
MTEsIFNwZWNpYWxpemVkIGFsZ29yaXRobXMKKyAgICB2b2lkIHN3YXAoZXhwZWN0ZWQ8VCwgRT4m
LCBleHBlY3RlZDxULCBFPiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgY2xhc3MgRT4KKyAgICBjbGFzcyBleHBlY3RlZAorICAgIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAgICAgICB0eXBlZGVmIEUgZXJyb3Jf
dHlwZTsKKyAgICAgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsKKyAg
ICAKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+CisgICAgICAgICAgICBzdHJ1Y3QgcmViaW5k
IHsKKyAgICAgICAgICAgIHVzaW5nIHR5cGUgPSBleHBlY3RlZDxVLCBlcnJvcl90eXBlPjsKKyAg
ICAgICAgICB9OworICAgIAorICAgICAgICAvLyA/Lj8uNC4xLCBjb25zdHJ1Y3RvcnMKKyAgICAg
ICAgY29uc3RleHByIGV4cGVjdGVkKCk7CisgICAgICAgIGNvbnN0ZXhwciBleHBlY3RlZChjb25z
dCBleHBlY3RlZCYpOworICAgICAgICBjb25zdGV4cHIgZXhwZWN0ZWQoZXhwZWN0ZWQmJikgbm9l
eGNlcHQoc2VlIGJlbG93KTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIEc+Cisg
ICAgICAgICAgICBFWFBMSUNJVCBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3QgZXhwZWN0ZWQ8VSwg
Rz4mKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIEc+CisgICAgICAgICAgICBF
WFBMSUNJVCBjb25zdGV4cHIgZXhwZWN0ZWQoZXhwZWN0ZWQ8VSwgRz4mJik7CisgICAgCisgICAg
ICAgIHRlbXBsYXRlIDxjbGFzcyBVID0gVD4KKyAgICAgICAgICAgIEVYUExJQ0lUIGNvbnN0ZXhw
ciBleHBlY3RlZChVJiYgdik7CisgICAgCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdz
PgorICAgICAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKGluX3BsYWNlX3QsIEFy
Z3MmJi4uLik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorICAg
ICAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKGluX3BsYWNlX3QsIGluaXRpYWxp
emVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBHID0gRT4K
KyAgICAgICAgICAgIGNvbnN0ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkPEc+IGNvbnN0Jik7Cisg
ICAgICAgIHRlbXBsYXRlIDxjbGFzcyBHID0gRT4KKyAgICAgICAgICAgIGNvbnN0ZXhwciBleHBl
Y3RlZCh1bmV4cGVjdGVkPEc+ICYmKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+
CisgICAgICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBlY3RfdCwgQXJn
cyYmLi4uKTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisgICAg
ICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBlY3RfdCwgaW5pdGlhbGl6
ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICAKKyAgICAgICAgLy8gPy4/LjQuMiwgZGVzdHJ1
Y3RvcgorICAgICAgICB+ZXhwZWN0ZWQoKTsKKyAgICAKKyAgICAgICAgLy8gPy4/LjQuMywgYXNz
aWdubWVudAorICAgICAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IGV4cGVjdGVkJik7Cisg
ICAgICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oZXhwZWN0ZWQmJikgbm9leGNlcHQoc2VlIGJlbG93
KTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFUgPSBUPiBleHBlY3RlZCYgb3BlcmF0b3I9KFUm
Jik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBHID0gRT4KKyAgICAgICAgICAgIGV4cGVjdGVk
JiBvcGVyYXRvcj0oY29uc3QgdW5leHBlY3RlZDxHPiYpOworICAgICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRyA9IEU+CisgICAgICAgICAgICBleHBlY3RlZCYgb3BlcmF0b3I9KHVuZXhwZWN0ZWQ8Rz4m
Jikgbm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICAKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4u
IEFyZ3M+CisgICAgICAgICAgICB2b2lkIGVtcGxhY2UoQXJncyYmLi4uKTsKKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisgICAgICAgICAgICB2b2lkIGVtcGxhY2Uo
aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICAKKyAgICAgICAgLy8gPy4/LjQu
NCwgc3dhcAorICAgICAgICB2b2lkIHN3YXAoZXhwZWN0ZWQmKSBub2V4Y2VwdChzZWUgYmVsb3cp
OworICAgIAorICAgICAgICAvLyA/Lj8uNC41LCBvYnNlcnZlcnMKKyAgICAgICAgY29uc3RleHBy
IGNvbnN0IFQqIG9wZXJhdG9yIC0+KCkgY29uc3Q7CisgICAgICAgIGNvbnN0ZXhwciBUKiBvcGVy
YXRvciAtPigpOworICAgICAgICBjb25zdGV4cHIgY29uc3QgVCYgb3BlcmF0b3IgKigpIGNvbnN0
JjsKKyAgICAgICAgY29uc3RleHByIFQmIG9wZXJhdG9yICooKSAmOworICAgICAgICBjb25zdGV4
cHIgY29uc3QgVCYmIG9wZXJhdG9yICooKSBjb25zdCAmJjsKKyAgICAgICAgY29uc3RleHByIFQm
JiBvcGVyYXRvciAqKCkgJiY7CisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3Qgbm9leGNlcHQ7CisgICAgICAgIGNvbnN0ZXhwciBib29sIGhhc192YWx1ZSgp
IGNvbnN0IG5vZXhjZXB0OworICAgICAgICBjb25zdGV4cHIgY29uc3QgVCYgdmFsdWUoKSBjb25z
dCY7CisgICAgICAgIGNvbnN0ZXhwciBUJiB2YWx1ZSgpICY7CisgICAgICAgIGNvbnN0ZXhwciBj
b25zdCBUJiYgdmFsdWUoKSBjb25zdCAmJjsKKyAgICAgICAgY29uc3RleHByIFQmJiB2YWx1ZSgp
ICYmOworICAgICAgICBjb25zdGV4cHIgY29uc3QgRSYgZXJyb3IoKSBjb25zdCY7CisgICAgICAg
IGNvbnN0ZXhwciBFJiBlcnJvcigpICY7CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBFJiYgZXJy
b3IoKSBjb25zdCAmJjsKKyAgICAgICAgY29uc3RleHByIEUmJiBlcnJvcigpICYmOworICAgICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICAgICAgICAgIGNvbnN0ZXhwciBUIHZhbHVlX29yKFUm
JikgY29uc3QmOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICAgICAgICAgIFQgdmFs
dWVfb3IoVSYmKSAmJjsKKyAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIGhhc192YWw7
IC8vIGV4cG9zaXRpb24gb25seQorICAgICAgICB1bmlvbgorICAgICAgICB7CisgICAgICAgICAg
ICB2YWx1ZV90eXBlIHZhbDsgLy8gZXhwb3NpdGlvbiBvbmx5CisgICAgICAgICAgICB1bmV4cGVj
dGVkX3R5cGUgdW5leHBlY3Q7IC8vIGV4cG9zaXRpb24gb25seQorICAgICAgICB9OworICAgIH07
CisKK319fQorCisqLworCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxpbml0aWFsaXpl
cl9saXN0PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VuZXhwZWN0ZWQuaD4KIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPGNs
YXNzIEU+Ci1jbGFzcyBVbmV4cGVjdGVkIHsKLXB1YmxpYzoKLSAgICBVbmV4cGVjdGVkKCkgPSBk
ZWxldGU7Ci0gICAgY29uc3RleHByIGV4cGxpY2l0IFVuZXhwZWN0ZWQoY29uc3QgRSYgZSkgOiB2
YWwoZSkgeyB9Ci0gICAgY29uc3RleHByIGV4cGxpY2l0IFVuZXhwZWN0ZWQoRSYmIGUpIDogdmFs
KHN0ZDo6Zm9yd2FyZDxFPihlKSkgeyB9Ci0gICAgY29uc3RleHByIGNvbnN0IEUmIHZhbHVlKCkg
Y29uc3QgJiB7IHJldHVybiB2YWw7IH0KLSAgICBSRUxBWEVEX0NPTlNURVhQUiBFJiB2YWx1ZSgp
ICYgeyByZXR1cm4gdmFsOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVYUFIgRSYmIHZhbHVlKCkgJiYg
eyByZXR1cm4gV1RGTW92ZSh2YWwpOyB9CituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFjZSBleHBl
cmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgewogCi1wcml2YXRl
OgotICAgIEUgdmFsOworc3RydWN0IHVuZXhwZWN0ZWRfdCB7CisgICAgdW5leHBlY3RlZF90KCkg
PSBkZWZhdWx0OwogfTsKKyNpZiBfX2NwbHVzcGx1cyA8IDIwMTcwM0wKKyNkZWZpbmUgX19FWFBF
Q1RFRF9JTkxJTkVfVkFSSUFCTEUgc3RhdGljIGNvbnN0CisjZWxzZQorI2RlZmluZSBfX0VYUEVD
VEVEX0lOTElORV9WQVJJQUJMRSBpbmxpbmUKKyNlbmRpZgogCi10ZW1wbGF0ZTxjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIGxocywgY29uc3Qg
VW5leHBlY3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSA9PSByaHMudmFsdWUoKTsg
fQotdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbmV4
cGVjdGVkPEU+JiBsaHMsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHJocykgeyByZXR1cm4gbGhzLnZh
bHVlKCkgIT0gcmhzLnZhbHVlKCk7IH0KK19fRVhQRUNURURfSU5MSU5FX1ZBUklBQkxFIGNvbnN0
ZXhwciB1bmV4cGVjdGVkX3QgdW5leHBlY3QgeyB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFPiBjb25z
dGV4cHIgVW5leHBlY3RlZDxzdGQ6OmRlY2F5X3Q8RT4+IG1ha2VVbmV4cGVjdGVkKEUmJiB2KSB7
IHJldHVybiBVbmV4cGVjdGVkPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8RT46OnR5cGU+KHN0ZDo6Zm9y
d2FyZDxFPih2KSk7IH0KK3RlbXBsYXRlPGNsYXNzIEU+IGNsYXNzIGJhZF9leHBlY3RlZF9hY2Nl
c3M7CiAKLXN0cnVjdCBVbmV4cGVjdFRhZyB7Ci0gICAgVW5leHBlY3RUYWcoKSA9IGRlZmF1bHQ7
Cit0ZW1wbGF0ZTw+CitjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+IDogcHVibGljIHN0
ZDo6ZXhjZXB0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBiYWRfZXhwZWN0ZWRfYWNjZXNz
KCkgeyB9CiB9OwotY29uc3RleHByIFVuZXhwZWN0VGFnIFVuZXhwZWN0IHsgfTsgLy8gRklYTUUg
VGhpcyBpcyBhbiBpbmxpbmUgdmFyaWFibGUgZm9yIEMrKzE3IGFuZCBsYXRlci4KIAotLy8gRklY
TUUgdGhpcyBzaG91bGQganVzdCBiZSBzdGQ6OmluX3BsYWNlX3Qgd2hpY2ggd2UgYWxzbyBkZWZp
bmUgaW4gb3B0aW9uYWwgYW5kIHZhcmlhbnQuCi1zdHJ1Y3QgSW5QbGFjZVRhZyB7Ci0gICAgSW5Q
bGFjZVRhZygpID0gZGVmYXVsdDsKK3RlbXBsYXRlPGNsYXNzIEU+CitjbGFzcyBiYWRfZXhwZWN0
ZWRfYWNjZXNzIDogcHVibGljIGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4geworcHVibGljOgor
ICAgIGV4cGxpY2l0IGJhZF9leHBlY3RlZF9hY2Nlc3MoRSB2YWwpIDogdmFsKHZhbCkgeyB9Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3Qgbm9leGNlcHQgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RkOjpleGNlcHRpb246OndoYXQoKTsgfQorICAgIEUmIGVycm9yKCkgJiB7IHJldHVy
biB2YWw7IH0KKyAgICBjb25zdCBFJiBlcnJvcigpIGNvbnN0JiB7IHJldHVybiB2YWw7IH0KKyAg
ICBFJiYgZXJyb3IoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUodmFsKTsgfQorICAgIGNvbnN0IEUm
JiAgZXJyb3IoKSBjb25zdCYmIHsgcmV0dXJuIHN0ZDo6bW92ZSh2YWwpOyB9CisKK3ByaXZhdGU6
CisgICAgRSB2YWw7CiB9OwotY29uc3RleHByIEluUGxhY2VUYWcgSW5QbGFjZSB7IH07CiAKLW5h
bWVzcGFjZSBFeHBlY3RlZERldGFpbCB7CituYW1lc3BhY2UgX19leHBlY3RlZF9kZXRhaWwgewog
Ci0vLyBJbnZva2VkIHdoZXJlIHN0ZDo6RXhwZWN0ZWQgd291bGQgaW5zdGVhZCB0aHJvdy4KLWlu
bGluZSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgVGhyb3coKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJT05TKQorI2Rl
ZmluZSBfX0VYUEVDVEVEX1RIUk9XKF9fZXhjZXB0aW9uKSAodGhyb3cgX19leGNlcHRpb24pCisj
ZWxzZQoraW5saW5lIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBfX2V4cGVjdGVkX3Rlcm1p
bmF0ZSgpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorI2RlZmluZSBfX0VYUEVD
VEVEX1RIUk9XKC4uLikgX19leHBlY3RlZF9kZXRhaWw6Ol9fZXhwZWN0ZWRfdGVybWluYXRlKCkK
KyNlbmRpZgogCi1zdGF0aWMgY29uc3RleHByIGVudW0gY2xhc3MgVmFsdWVUYWdUeXBlIHsgfSBW
YWx1ZVRhZyB7IH07Ci1zdGF0aWMgY29uc3RleHByIGVudW0gY2xhc3MgRXJyb3JUYWdUeXBlIHsg
fSBFcnJvclRhZyB7IH07CitfX0VYUEVDVEVEX0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgZW51
bSBjbGFzcyB2YWx1ZV90YWdfdCB7IH0gdmFsdWVfdGFnIHsgfTsKK19fRVhQRUNURURfSU5MSU5F
X1ZBUklBQkxFIGNvbnN0ZXhwciBlbnVtIGNsYXNzIGVycm9yX3RhZ190IHsgfSBlcnJvcl90YWcg
eyB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+IHZvaWQgZGVzdHJveShUJikg
eyB9CiB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8VD46OnZhbHVlICYmIChzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1ZSB8fCBz
dGQ6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSk+KiA9IG51bGxwdHI+IHZvaWQgZGVzdHJveShUJiB0KSB7
IHQuflQoKTsgfQogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgotdW5pb24gQ29uc3RleHBy
U3RvcmFnZSB7Ci0gICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JU
eXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3VuaW9uIGNv
bnN0ZXhwcl9zdG9yYWdlIHsKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVm
IEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBl
OwogICAgIGNoYXIgZHVtbXk7Ci0gICAgVmFsdWVUeXBlIHZhbDsKLSAgICBFcnJvclR5cGUgZXJy
OwotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdlKCkgOiBkdW1teSgpIHsgfQotICAgIGNv
bnN0ZXhwciBDb25zdGV4cHJTdG9yYWdlKFZhbHVlVGFnVHlwZSkgOiB2YWwoKSB7IH0KLSAgICBj
b25zdGV4cHIgQ29uc3RleHByU3RvcmFnZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAg
Y29uc3RleHByIENvbnN0ZXhwclN0b3JhZ2UoVmFsdWVUYWdUeXBlLCBjb25zdCBWYWx1ZVR5cGUm
IHYpIDogdmFsKHYpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJTdG9yYWdlKEVycm9yVGFn
VHlwZSwgY29uc3QgRXJyb3JUeXBlJiBlKSA6IGVycihlKSB7IH0KLSAgICB+Q29uc3RleHByU3Rv
cmFnZSgpID0gZGVmYXVsdDsKKyAgICB2YWx1ZV90eXBlIHZhbDsKKyAgICBlcnJvcl90eXBlIGVy
cjsKKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoKSA6IGR1bW15KCkgeyB9CisgICAg
Y29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190KSA6IHZhbCgpIHsgfQorICAg
IGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7IH0KKyAg
ICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UodmFsdWVfdGFnX3QsIGNvbnN0IHZhbHVlX3R5
cGUmIHYpIDogdmFsKHYpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZShlcnJv
cl90YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZSkgOiBlcnIoZSkgeyB9CisgICAgfmNvbnN0ZXhw
cl9zdG9yYWdlKCkgPSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4K
LXVuaW9uIFN0b3JhZ2UgewotICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBF
IEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Cit1
bmlvbiBzdG9yYWdlIHsKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUg
ZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOwog
ICAgIGNoYXIgZHVtbXk7Ci0gICAgVmFsdWVUeXBlIHZhbDsKLSAgICBFcnJvclR5cGUgZXJyOwot
ICAgIGNvbnN0ZXhwciBTdG9yYWdlKCkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9y
YWdlKFZhbHVlVGFnVHlwZSkgOiB2YWwoKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShFcnJv
clRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoVmFsdWVUYWdUeXBl
LCBjb25zdCBWYWx1ZVR5cGUmIHZhbCkgOiB2YWwodmFsKSB7IH0KLSAgICBjb25zdGV4cHIgU3Rv
cmFnZShWYWx1ZVRhZ1R5cGUsIFZhbHVlVHlwZSYmIHZhbCkgOiB2YWwoc3RkOjpmb3J3YXJkPFZh
bHVlVHlwZT4odmFsKSkgeyB9Ci0gICAgY29uc3RleHByIFN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBj
b25zdCBFcnJvclR5cGUmIGVycikgOiBlcnIoZXJyKSB7IH0KLSAgICBjb25zdGV4cHIgU3RvcmFn
ZShFcnJvclRhZ1R5cGUsIEVycm9yVHlwZSYmIGVycikgOiBlcnIoc3RkOjpmb3J3YXJkPEVycm9y
VHlwZT4oZXJyKSkgeyB9Ci0gICAgflN0b3JhZ2UoKSB7IH0KKyAgICB2YWx1ZV90eXBlIHZhbDsK
KyAgICBlcnJvcl90eXBlIGVycjsKKyAgICBjb25zdGV4cHIgc3RvcmFnZSgpIDogZHVtbXkoKSB7
IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiB2YWwoKSB7IH0KKyAgICBj
b25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7IH0KKyAgICBjb25zdGV4cHIg
c3RvcmFnZSh2YWx1ZV90YWdfdCwgY29uc3QgdmFsdWVfdHlwZSYgdmFsKSA6IHZhbCh2YWwpIHsg
fQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKHZhbHVlX3RhZ190LCB2YWx1ZV90eXBlJiYgdmFsKSA6
IHZhbChzdGQ6OmZvcndhcmQ8dmFsdWVfdHlwZT4odmFsKSkgeyB9CisgICAgY29uc3RleHByIHN0
b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVycm9yX3R5cGUmIGVycikgOiBlcnIoZXJyKSB7IH0K
KyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCwgZXJyb3JfdHlwZSYmIGVycikgOiBl
cnIoc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpIHsgfQorICAgIH5zdG9yYWdlKCkgeyB9
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotdW5pb24gQ29uc3RleHByU3RvcmFnZTx2b2lkLCBF
PiB7Ci0gICAgdHlwZWRlZiB2b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JUeXBl
OwotICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3VuaW9uIGNvbnN0
ZXhwcl9zdG9yYWdlPHZvaWQsIEU+IHsKKyAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAg
ICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBl
Y3RlZF90eXBlOwogICAgIGNoYXIgZHVtbXk7Ci0gICAgRXJyb3JUeXBlIGVycjsKLSAgICBjb25z
dGV4cHIgQ29uc3RleHByU3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4cHIgQ29u
c3RleHByU3RvcmFnZShWYWx1ZVRhZ1R5cGUpIDogZHVtbXkoKSB7IH0KLSAgICBjb25zdGV4cHIg
Q29uc3RleHByU3RvcmFnZShFcnJvclRhZ1R5cGUpIDogZXJyKCkgeyB9Ci0gICAgY29uc3RleHBy
IENvbnN0ZXhwclN0b3JhZ2UoRXJyb3JUYWdUeXBlLCBjb25zdCBFcnJvclR5cGUmIGUpIDogZXJy
KGUpIHsgfQotICAgIH5Db25zdGV4cHJTdG9yYWdlKCkgPSBkZWZhdWx0OworICAgIGVycm9yX3R5
cGUgZXJyOworICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZSgpIDogZHVtbXkoKSB7IH0K
KyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UodmFsdWVfdGFnX3QpIDogZHVtbXkoKSB7
IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UoZXJyb3JfdGFnX3QpIDogZXJyKCkg
eyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190LCBjb25zdCBl
cnJvcl90eXBlJiBlKSA6IGVycihlKSB7IH0KKyAgICB+Y29uc3RleHByX3N0b3JhZ2UoKSA9IGRl
ZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgotdW5pb24gU3RvcmFnZTx2b2lkLCBFPiB7
Ci0gICAgdHlwZWRlZiB2b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOwot
ICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKK3VuaW9uIHN0b3JhZ2U8
dm9pZCwgRT4geworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgRSBl
cnJvcl90eXBlOworICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7CiAg
ICAgY2hhciBkdW1teTsKLSAgICBFcnJvclR5cGUgZXJyOwotICAgIGNvbnN0ZXhwciBTdG9yYWdl
KCkgOiBkdW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKFZhbHVlVGFnVHlwZSkgOiBk
dW1teSgpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSkgOiBlcnIoKSB7
IH0KLSAgICBjb25zdGV4cHIgU3RvcmFnZShFcnJvclRhZ1R5cGUsIGNvbnN0IEVycm9yVHlwZSYg
ZXJyKSA6IGVycihlcnIpIHsgfQotICAgIGNvbnN0ZXhwciBTdG9yYWdlKEVycm9yVGFnVHlwZSwg
RXJyb3JUeXBlJiYgZXJyKSA6IGVycihzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSB7IH0K
LSAgICB+U3RvcmFnZSgpIHsgfQorICAgIGVycm9yX3R5cGUgZXJyOworICAgIGNvbnN0ZXhwciBz
dG9yYWdlKCkgOiBkdW1teSgpIHsgfQorICAgIGNvbnN0ZXhwciBzdG9yYWdlKHZhbHVlX3RhZ190
KSA6IGR1bW15KCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QpIDogZXJy
KCkgeyB9CisgICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVycm9yX3R5
cGUmIGVycikgOiBlcnIoZXJyKSB7IH0KKyAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdf
dCwgZXJyb3JfdHlwZSYmIGVycikgOiBlcnIoc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikp
IHsgfQorICAgIH5zdG9yYWdlKCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
Pgotc3RydWN0IENvbnN0ZXhwckJhc2UgewotICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAg
dHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3Rl
ZFR5cGU7Ci0gICAgQ29uc3RleHByU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gczsKK3N0
cnVjdCBjb25zdGV4cHJfYmFzZSB7CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlw
ZWRlZiBFIGVycm9yX3R5cGU7CisgICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRf
dHlwZTsKKyAgICBjb25zdGV4cHJfc3RvcmFnZTx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiBzOwog
ICAgIGJvb2wgaGFzOwotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKCkgOiBzKCksIGhhcyh0
cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZShWYWx1ZVRhZ1R5cGUgdGFnKSA6
IHModGFnKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKEVycm9y
VGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXMoZmFsc2UpIHsgfQotICAgIGNvbnN0ZXhwciBDb25z
dGV4cHJCYXNlKFZhbHVlVGFnVHlwZSB0YWcsIGNvbnN0IFZhbHVlVHlwZSYgdmFsKSA6IHModGFn
LCB2YWwpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JU
YWdUeXBlIHRhZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhmYWxz
ZSkgeyB9Ci0gICAgfkNvbnN0ZXhwckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGNv
bnN0ZXhwcl9iYXNlKCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgY29uc3Rl
eHByX2Jhc2UodmFsdWVfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNv
bnN0ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcpIDogcyh0YWcpLCBoYXMoZmFs
c2UpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSh2YWx1ZV90YWdfdCB0YWcsIGNv
bnN0IHZhbHVlX3R5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRydWUpIHsgfQorICAgIGNv
bnN0ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcsIGNvbnN0IGVycm9yX3R5cGUm
IGVycikgOiBzKHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KKyAgICB+Y29uc3RleHByX2Jhc2Uo
KSA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgotc3RydWN0IEJh
c2UgewotICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBFIEVycm9yVHlwZTsK
LSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7Ci0gICAgU3RvcmFnZTxW
YWx1ZVR5cGUsIEVycm9yVHlwZT4gczsKK3N0cnVjdCBiYXNlIHsKKyAgICB0eXBlZGVmIFQgdmFs
dWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0
ZWQ8RT4gdW5leHBlY3RlZF90eXBlOworICAgIHN0b3JhZ2U8dmFsdWVfdHlwZSwgZXJyb3JfdHlw
ZT4gczsKICAgICBib29sIGhhczsKLSAgICBjb25zdGV4cHIgQmFzZSgpIDogcygpLCBoYXModHJ1
ZSkgeyB9Ci0gICAgY29uc3RleHByIEJhc2UoVmFsdWVUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhh
cyh0cnVlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6IHModGFn
KSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShWYWx1ZVRhZ1R5cGUgdGFnLCBj
b25zdCBWYWx1ZVR5cGUmIHZhbCkgOiBzKHRhZywgdmFsKSwgaGFzKHRydWUpIHsgfQotICAgIGNv
bnN0ZXhwciBCYXNlKFZhbHVlVGFnVHlwZSB0YWcsIFZhbHVlVHlwZSYmIHZhbCkgOiBzKHRhZywg
c3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odmFsKSksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4
cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBjb25zdCBFcnJvclR5cGUmIGVycikgOiBzKHRhZywg
ZXJyKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFn
LCBFcnJvclR5cGUmJiBlcnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+KGVycikp
LCBoYXMoZmFsc2UpIHsgfQotICAgIEJhc2UoY29uc3QgQmFzZSYgbykKKyAgICBjb25zdGV4cHIg
YmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UodmFsdWVfdGFn
X3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9y
X3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHByIGJhc2Uo
dmFsdWVfdGFnX3QgdGFnLCBjb25zdCB2YWx1ZV90eXBlJiB2YWwpIDogcyh0YWcsIHZhbCksIGhh
cyh0cnVlKSB7IH0KKyAgICBjb25zdGV4cHIgYmFzZSh2YWx1ZV90YWdfdCB0YWcsIHZhbHVlX3R5
cGUmJiB2YWwpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDx2YWx1ZV90eXBlPih2YWwpKSwgaGFzKHRy
dWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgY29uc3QgZXJyb3Jf
dHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0ZXhwciBi
YXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVycikgOiBzKHRhZywgc3RkOjpmb3J3
YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQorICAgIGJhc2UoY29uc3QgYmFz
ZSYgbykKICAgICAgICAgOiBoYXMoby5oYXMpCiAgICAgewogICAgICAgICBpZiAoaGFzKQotICAg
ICAgICAgICAgOjpuZXcgKCZzLnZhbCkgVmFsdWVUeXBlKG8ucy52YWwpOworICAgICAgICAgICAg
OjpuZXcgKCZzLnZhbCkgdmFsdWVfdHlwZShvLnMudmFsKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgOjpuZXcgKCZzLmVycikgRXJyb3JUeXBlKG8ucy5lcnIpOworICAgICAgICAgICAgOjpu
ZXcgKCZzLmVycikgZXJyb3JfdHlwZShvLnMuZXJyKTsKICAgICB9Ci0gICAgQmFzZShCYXNlJiYg
bykKKyAgICBiYXNlKGJhc2UmJiBvKQogICAgICAgICA6IGhhcyhvLmhhcykKICAgICB7CiAgICAg
ICAgIGlmIChoYXMpCi0gICAgICAgICAgICA6Om5ldyAoJnMudmFsKSBWYWx1ZVR5cGUoV1RGTW92
ZShvLnMudmFsKSk7CisgICAgICAgICAgICA6Om5ldyAoJnMudmFsKSB2YWx1ZV90eXBlKHN0ZDo6
bW92ZShvLnMudmFsKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIp
IEVycm9yVHlwZShXVEZNb3ZlKG8ucy5lcnIpKTsKKyAgICAgICAgICAgIDo6bmV3ICgmcy5lcnIp
IGVycm9yX3R5cGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsKICAgICB9Ci0gICAgfkJhc2UoKQorICAg
IH5iYXNlKCkKICAgICB7CiAgICAgICAgIGlmIChoYXMpCiAgICAgICAgICAgICBkZXN0cm95KHMu
dmFsKTsKQEAgLTE5Nyw0NSArMzU3LDQ1IEBAIHN0cnVjdCBCYXNlIHsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEU+Ci1zdHJ1Y3QgQ29uc3RleHByQmFzZTx2b2lkLCBFPiB7Ci0gICAgdHlwZWRlZiB2
b2lkIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOwotICAgIHR5cGVkZWYgVW5l
eHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKLSAgICBDb25zdGV4cHJTdG9yYWdlPFZhbHVlVHlw
ZSwgRXJyb3JUeXBlPiBzOworc3RydWN0IGNvbnN0ZXhwcl9iYXNlPHZvaWQsIEU+IHsKKyAgICB0
eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUgZXJyb3JfdHlwZTsKKyAgICB0
eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOworICAgIGNvbnN0ZXhwcl9zdG9y
YWdlPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHM7CiAgICAgYm9vbCBoYXM7Ci0gICAgY29uc3Rl
eHByIENvbnN0ZXhwckJhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQotICAgIGNvbnN0ZXhwciBD
b25zdGV4cHJCYXNlKFZhbHVlVGFnVHlwZSB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9Ci0g
ICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhh
cyhmYWxzZSkgeyB9Ci0gICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdUeXBlIHRh
ZywgY29uc3QgRXJyb3JUeXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhmYWxzZSkgeyB9Ci0g
ICAgY29uc3RleHByIENvbnN0ZXhwckJhc2UoRXJyb3JUYWdUeXBlIHRhZywgRXJyb3JUeXBlJiYg
ZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8RXJyb3JUeXBlPihlcnIpKSwgaGFzKGZhbHNlKSB7
IH0KLSAgICB+Q29uc3RleHByQmFzZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgY29uc3Rl
eHByX2Jhc2UoKSA6IHMoKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBjb25zdGV4cHJf
YmFzZSh2YWx1ZV90YWdfdCB0YWcpIDogcyh0YWcpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3Rl
eHByIGNvbnN0ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkg
eyB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZywgY29uc3Qg
ZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQorICAgIGNvbnN0
ZXhwciBjb25zdGV4cHJfYmFzZShlcnJvcl90YWdfdCB0YWcsIGVycm9yX3R5cGUmJiBlcnIpIDog
cyh0YWcsIHN0ZDo6Zm9yd2FyZDxlcnJvcl90eXBlPihlcnIpKSwgaGFzKGZhbHNlKSB7IH0KKyAg
ICB+Y29uc3RleHByX2Jhc2UoKSA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPgot
c3RydWN0IEJhc2U8dm9pZCwgRT4gewotICAgIHR5cGVkZWYgdm9pZCBWYWx1ZVR5cGU7Ci0gICAg
dHlwZWRlZiBFIEVycm9yVHlwZTsKLSAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3Rl
ZFR5cGU7Ci0gICAgU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gczsKK3N0cnVjdCBiYXNl
PHZvaWQsIEU+IHsKKyAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIEUg
ZXJyb3JfdHlwZTsKKyAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBlOwor
ICAgIHN0b3JhZ2U8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gczsKICAgICBib29sIGhhczsKLSAg
ICBjb25zdGV4cHIgQmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9Ci0gICAgY29uc3RleHByIEJh
c2UoVmFsdWVUYWdUeXBlIHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0KLSAgICBjb25zdGV4
cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnKSA6IHModGFnKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBj
b25zdGV4cHIgQmFzZShFcnJvclRhZ1R5cGUgdGFnLCBjb25zdCBFcnJvclR5cGUmIGVycikgOiBz
KHRhZywgZXJyKSwgaGFzKGZhbHNlKSB7IH0KLSAgICBjb25zdGV4cHIgQmFzZShFcnJvclRhZ1R5
cGUgdGFnLCBFcnJvclR5cGUmJiBlcnIpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+
KGVycikpLCBoYXMoZmFsc2UpIHsgfQotICAgIEJhc2UoY29uc3QgQmFzZSYgbykKKyAgICBjb25z
dGV4cHIgYmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UodmFs
dWVfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQorICAgIGNvbnN0ZXhwciBiYXNl
KGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHBy
IGJhc2UoZXJyb3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogcyh0YWcsIGVy
ciksIGhhcyhmYWxzZSkgeyB9CisgICAgY29uc3RleHByIGJhc2UoZXJyb3JfdGFnX3QgdGFnLCBl
cnJvcl90eXBlJiYgZXJyKSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8ZXJyb3JfdHlwZT4oZXJyKSks
IGhhcyhmYWxzZSkgeyB9CisgICAgYmFzZShjb25zdCBiYXNlJiBvKQogICAgICAgICA6IGhhcyhv
LmhhcykKICAgICB7CiAgICAgICAgIGlmICghaGFzKQotICAgICAgICAgICAgOjpuZXcgKCZzLmVy
cikgRXJyb3JUeXBlKG8ucy5lcnIpOworICAgICAgICAgICAgOjpuZXcgKCZzLmVycikgZXJyb3Jf
dHlwZShvLnMuZXJyKTsKICAgICB9Ci0gICAgQmFzZShCYXNlJiYgbykKKyAgICBiYXNlKGJhc2Um
JiBvKQogICAgICAgICA6IGhhcyhvLmhhcykKICAgICB7CiAgICAgICAgIGlmICghaGFzKQotICAg
ICAgICAgICAgOjpuZXcgKCZzLmVycikgRXJyb3JUeXBlKFdURk1vdmUoby5zLmVycikpOworICAg
ICAgICAgICAgOjpuZXcgKCZzLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoby5zLmVycikpOwog
ICAgIH0KLSAgICB+QmFzZSgpCisgICAgfmJhc2UoKQogICAgIHsKICAgICAgICAgaWYgKCFoYXMp
CiAgICAgICAgICAgICBkZXN0cm95KHMuZXJyKTsKQEAgLTI0MywxOTMgKzQwMywxNzUgQEAgc3Ry
dWN0IEJhc2U8dm9pZCwgRT4gewogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4KLXVz
aW5nIEJhc2VTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAordXNpbmcgYmFzZV9z
ZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAogICAgICgoc3RkOjppc192b2lkPFQ+
Ojp2YWx1ZSB8fCBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlKQogICAg
ICAgICAmJiBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RT46OnZhbHVlKSwKLSAgICBD
b25zdGV4cHJCYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDxFPjo6dHlwZT4sCi0gICAgQmFzZTx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxUPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8RT46OnR5cGU+
CisgICAgY29uc3RleHByX2Jhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUs
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PEU+Ojp0eXBlPiwKKyAgICBiYXNlPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxF
Pjo6dHlwZT4KID46OnR5cGU7CiAKLX0gLy8gbmFtZXNwYWNlIEV4cGVjdGVkRGV0YWlsCit9IC8v
IG5hbWVzcGFjZSBfX2V4cGVjdGVkX2RldGFpbAogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PgotY2xhc3MgRXhwZWN0ZWQgOiBwcml2YXRlIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PFQs
IEU+IHsKLSAgICB0eXBlZGVmIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PFQsIEU+IGJhc2U7
CitjbGFzcyBleHBlY3RlZCA6IHByaXZhdGUgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2VsZWN0
PFQsIEU+IHsKKyAgICB0eXBlZGVmIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlX3NlbGVjdDxULCBF
PiBiYXNlOwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpWYWx1ZVR5cGUg
VmFsdWVUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6RXJyb3JUeXBlIEVycm9yVHlw
ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlVuZXhwZWN0ZWRUeXBlIFVuZXhwZWN0ZWRU
eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6ZXJyb3JfdHlwZSBlcnJvcl90eXBlOworICAgIHR5
cGVkZWYgdHlwZW5hbWUgYmFzZTo6dW5leHBlY3RlZF90eXBlIHVuZXhwZWN0ZWRfdHlwZTsKIAog
cHJpdmF0ZToKLSAgICB0eXBlZGVmIEV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiB0eXBl
OworICAgIHR5cGVkZWYgZXhwZWN0ZWQ8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gdHlwZTsKIAog
cHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIFU+IHN0cnVjdCByZWJpbmQgewotICAgICAgICB1
c2luZyB0eXBlID0gRXhwZWN0ZWQ8VSwgRXJyb3JUeXBlPjsKKyAgICAgICAgdXNpbmcgdHlwZSA9
IGV4cGVjdGVkPFUsIGVycm9yX3R5cGU+OwogICAgIH07CiAKLSAgICBjb25zdGV4cHIgRXhwZWN0
ZWQoKSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnKSB7IH0KLSAgICBFeHBlY3RlZChj
b25zdCBFeHBlY3RlZCYpID0gZGVmYXVsdDsKLSAgICBFeHBlY3RlZChFeHBlY3RlZCYmKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoY29uc3QgVmFsdWVUeXBlJiBlKSA6IGJh
c2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnLCBlKSB7IH0KLSAgICBjb25zdGV4cHIgRXhwZWN0
ZWQoVmFsdWVUeXBlJiYgZSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZywgc3RkOjpm
b3J3YXJkPFZhbHVlVHlwZT4oZSkpIHsgfQotICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+IGNv
bnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykgOiBi
YXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZywgVmFsdWVUeXBlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpIHsgfQotICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+
IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChpbl9wbGFjZV90LCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8VT4sIEFyZ3MmJi4uLik7Ci0gICAgY29uc3RleHByIEV4cGVjdGVkKGNvbnN0IFVuZXhw
ZWN0ZWRUeXBlJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCB1LnZhbHVlKCkp
IHsgfQotICAgIGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVkVHlwZSYmIHUpIDogYmFzZShF
eHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHN0ZDo6Zm9yd2FyZDxVbmV4cGVjdGVkVHlwZT4odSku
dmFsdWUoKSkgeyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25zdGV4cHIgRXhwZWN0ZWQo
Y29uc3QgVW5leHBlY3RlZDxFcnI+JiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFn
LCB1LnZhbHVlKCkpIHsgfQotICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIEV4cGVj
dGVkKFVuZXhwZWN0ZWQ8RXJyPiYmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcs
IHN0ZDo6Zm9yd2FyZDxFcnI+KHUudmFsdWUoKSkpIHsgfQotICAgIHRlbXBsYXRlPGNsYXNzLi4u
IEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChVbmV4cGVjdFRhZywgQXJncyYmLi4u
IGFyZ3MpIDogYmFzZShFeHBlY3RlZERldGFpbDo6VmFsdWVUYWcsIFVuZXhwZWN0ZWRUeXBlKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQotICAgIC8vIHRlbXBsYXRlPGNsYXNzIFUs
IGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChVbmV4cGVjdFRhZywg
c3RkOjppbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOwotCi0gICAgfkV4cGVjdGVkKCkg
PSBkZWZhdWx0OwotCi0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBFeHBlY3RlZCYgZSkg
eyB0eXBlKGUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBFeHBlY3RlZCYgb3Bl
cmF0b3I9KEV4cGVjdGVkJiYgZSkgeyB0eXBlKFdURk1vdmUoZSkpLnN3YXAoKnRoaXMpOyByZXR1
cm4gKnRoaXM7IH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBFeHBlY3RlZCYgb3BlcmF0b3I9KFUm
JiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQotICAg
IEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgVW5leHBlY3RlZFR5cGUmIHUpIHsgdHlwZSh1KS5z
d2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShVbmV4
cGVjdGVkVHlwZSYmIHUpIHsgdHlwZShXVEZNb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0
aGlzOyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKCkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWls
Ojp2YWx1ZV90YWcpIHsgfQorICAgIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkJikgPSBkZWZhdWx0
OworICAgIGV4cGVjdGVkKGV4cGVjdGVkJiYpID0gZGVmYXVsdDsKKworICAgIGNvbnN0ZXhwciBl
eHBlY3RlZChjb25zdCB2YWx1ZV90eXBlJiBlKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZh
bHVlX3RhZywgZSkgeyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKHZhbHVlX3R5cGUmJiBlKSA6
IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZhbHVlX3RhZywgc3RkOjpmb3J3YXJkPHZhbHVlX3R5
cGU+KGUpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGlj
aXQgZXhwZWN0ZWQoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykgOiBiYXNlKF9fZXhw
ZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIHZhbHVlX3R5cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSkgeyB9CisgICAgLy8gdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gY29u
c3RleHByIGV4cGxpY2l0IGV4cGVjdGVkKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxVPiwgQXJncyYmLi4uKTsKKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQoY29uc3QgdW5leHBlY3Rl
ZF90eXBlJiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3RhZywgdS52YWx1ZSgp
KSB7IH0KKyAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZF90eXBlJiYgdSkgOiBiYXNl
KF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHN0ZDo6Zm9yd2FyZDx1bmV4cGVjdGVkX3R5
cGU+KHUpLnZhbHVlKCkpIHsgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIGV4
cGVjdGVkKGNvbnN0IHVuZXhwZWN0ZWQ8RXJyPiYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWls
OjplcnJvcl90YWcsIHUudmFsdWUoKSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRXJyPiBjb25z
dGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZDxFcnI+JiYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0
YWlsOjplcnJvcl90YWcsIHN0ZDo6Zm9yd2FyZDxFcnI+KHUudmFsdWUoKSkpIHsgfQorICAgIHRl
bXBsYXRlPGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBleHBlY3RlZCh1bmV4cGVj
dGVkX3QsIEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZhbHVlX3Rh
ZywgdW5leHBlY3RlZF90eXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorICAg
IC8vIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBsaWNpdCBl
eHBlY3RlZCh1bmV4cGVjdGVkX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4u
KTsKKworICAgIH5leHBlY3RlZCgpID0gZGVmYXVsdDsKKworICAgIGV4cGVjdGVkJiBvcGVyYXRv
cj0oY29uc3QgZXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlz
OyB9CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShleHBlY3RlZCYmIGUpIHsgdHlwZShzdGQ6Om1v
dmUoZSkpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBV
PiBleHBlY3RlZCYgb3BlcmF0b3I9KFUmJiB1KSB7IHR5cGUoc3RkOjptb3ZlKHUpKS5zd2FwKCp0
aGlzKTsgcmV0dXJuICp0aGlzOyB9CisgICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCB1bmV4
cGVjdGVkX3R5cGUmIHUpIHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgZXhwZWN0ZWQmIG9wZXJhdG9yPSh1bmV4cGVjdGVkX3R5cGUmJiB1KSB7IHR5cGUoc3RkOjpt
b3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CiAgICAgLy8gdGVtcGxhdGU8Y2xh
c3MuLi4gQXJncz4gdm9pZCBlbXBsYWNlKEFyZ3MmJi4uLik7CiAgICAgLy8gdGVtcGxhdGU8Y2xh
c3MgVSwgY2xhc3MuLi4gQXJncz4gdm9pZCBlbXBsYWNlKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxV
PiwgQXJncyYmLi4uKTsKIAotICAgIHZvaWQgc3dhcChFeHBlY3RlZCYgbykKKyAgICB2b2lkIHN3
YXAoZXhwZWN0ZWQmIG8pCiAgICAgewogICAgICAgICB1c2luZyBzdGQ6OnN3YXA7CiAgICAgICAg
IGlmIChiYXNlOjpoYXMgJiYgby5oYXMpCiAgICAgICAgICAgICBzd2FwKGJhc2U6OnMudmFsLCBv
LnMudmFsKTsKICAgICAgICAgZWxzZSBpZiAoYmFzZTo6aGFzICYmICFvLmhhcykgewotICAgICAg
ICAgICAgRXJyb3JUeXBlIGUoV1RGTW92ZShvLnMuZXJyKSk7Ci0gICAgICAgICAgICBFeHBlY3Rl
ZERldGFpbDo6ZGVzdHJveShvLnMuZXJyKTsKLSAgICAgICAgICAgIDo6bmV3ICgmby5zLnZhbCkg
VmFsdWVUeXBlKFdURk1vdmUoYmFzZTo6cy52YWwpKTsKLSAgICAgICAgICAgIEV4cGVjdGVkRGV0
YWlsOjpkZXN0cm95KGJhc2U6OnMudmFsKTsKLSAgICAgICAgICAgIDo6bmV3ICgmYmFzZTo6cy5l
cnIpIEVycm9yVHlwZShXVEZNb3ZlKGUpKTsKKyAgICAgICAgICAgIGVycm9yX3R5cGUgZShzdGQ6
Om1vdmUoby5zLmVycikpOworICAgICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRlc3Ryb3ko
by5zLmVycik7CisgICAgICAgICAgICA6Om5ldyAoJm8ucy52YWwpIHZhbHVlX3R5cGUoc3RkOjpt
b3ZlKGJhc2U6OnMudmFsKSk7CisgICAgICAgICAgICBfX2V4cGVjdGVkX2RldGFpbDo6ZGVzdHJv
eShiYXNlOjpzLnZhbCk7CisgICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBlcnJvcl90
eXBlKHN0ZDo6bW92ZShlKSk7CiAgICAgICAgICAgICBzd2FwKGJhc2U6Omhhcywgby5oYXMpOwog
ICAgICAgICB9IGVsc2UgaWYgKCFiYXNlOjpoYXMgJiYgby5oYXMpIHsKLSAgICAgICAgICAgIFZh
bHVlVHlwZSB2KFdURk1vdmUoby5zLnZhbCkpOwotICAgICAgICAgICAgRXhwZWN0ZWREZXRhaWw6
OmRlc3Ryb3koby5zLnZhbCk7Ci0gICAgICAgICAgICA6Om5ldyAoJm8ucy5lcnIpIEVycm9yVHlw
ZShXVEZNb3ZlKGJhc2U6OnMuZXJyKSk7Ci0gICAgICAgICAgICBFeHBlY3RlZERldGFpbDo6ZGVz
dHJveShiYXNlOjpzLmVycik7Ci0gICAgICAgICAgICA6Om5ldyAoJmJhc2U6OnMudmFsKSBWYWx1
ZVR5cGUoV1RGTW92ZSh2KSk7CisgICAgICAgICAgICB2YWx1ZV90eXBlIHYoc3RkOjptb3ZlKG8u
cy52YWwpKTsKKyAgICAgICAgICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KG8ucy52YWwp
OworICAgICAgICAgICAgOjpuZXcgKCZvLnMuZXJyKSBlcnJvcl90eXBlKHN0ZDo6bW92ZShiYXNl
OjpzLmVycikpOworICAgICAgICAgICAgX19leHBlY3RlZF9kZXRhaWw6OmRlc3Ryb3koYmFzZTo6
cy5lcnIpOworICAgICAgICAgICAgOjpuZXcgKCZiYXNlOjpzLnZhbCkgdmFsdWVfdHlwZShzdGQ6
Om1vdmUodikpOwogICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBzd2FwKGJhc2U6OnMuZXJyLCBvLnMuZXJyKTsKICAgICB9CiAK
LSAgICBjb25zdGV4cHIgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gJmJhc2U6OnMudmFsOyB9Ci0gICAgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4g
JmJhc2U6OnMudmFsOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IFZhbHVlVHlwZSYgb3BlcmF0b3Iq
KCkgY29uc3QgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQotICAgIFZhbHVlVHlwZSYgb3BlcmF0
b3IqKCkgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBWYWx1
ZVR5cGUmJiBvcGVyYXRvciooKSBjb25zdCAmJiB7IHJldHVybiBXVEZNb3ZlKGJhc2U6OnMudmFs
KTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIFZhbHVlVHlwZSYmIG9wZXJhdG9yKigpICYmIHsg
cmV0dXJuIFdURk1vdmUoYmFzZTo6cy52YWwpOyB9CisgICAgY29uc3RleHByIGNvbnN0IHZhbHVl
X3R5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmYmFzZTo6cy52YWw7IH0KKyAgICB2
YWx1ZV90eXBlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmJhc2U6OnMudmFsOyB9CisgICAgY29u
c3RleHByIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0ICYgeyByZXR1cm4gYmFz
ZTo6cy52YWw7IH0KKyAgICB2YWx1ZV90eXBlJiBvcGVyYXRvciooKSAmIHsgcmV0dXJuIGJhc2U6
OnMudmFsOyB9CisgICAgY29uc3RleHByIGNvbnN0IHZhbHVlX3R5cGUmJiBvcGVyYXRvciooKSBj
b25zdCAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6cy52YWwpOyB9CisgICAgUkVMQVhFRF9D
T05TVEVYUFIgdmFsdWVfdHlwZSYmIG9wZXJhdG9yKigpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShi
YXNlOjpzLnZhbCk7IH0KICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQotICAgIGNvbnN0ZXhwciBib29sIGhhc1ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9Ci0gICAgY29uc3RleHByIGNvbnN0IFZhbHVlVHlw
ZSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDogKEV4
cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLnZhbCk7IH0KLSAgICBSRUxBWEVEX0NPTlNU
RVhQUiBWYWx1ZVR5cGUmIHZhbHVlKCkgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBiYXNlOjpzLnZh
bCA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy52YWwpOyB9Ci0gICAgY29uc3Rl
eHByIGNvbnN0IFZhbHVlVHlwZSYmIHZhbHVlKCkgY29uc3QgJiYgeyByZXR1cm4gV1RGTW92ZShi
YXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6
cy52YWwpKTsgfQotICAgIFJFTEFYRURfQ09OU1RFWFBSIFZhbHVlVHlwZSYmIHZhbHVlKCkgJiYg
eyByZXR1cm4gV1RGTW92ZShiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChFeHBlY3RlZERldGFp
bDo6VGhyb3coKSwgYmFzZTo6cy52YWwpKTsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBFcnJvclR5
cGUmIGVycm9yKCkgY29uc3QgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAo
RXhwZWN0ZWREZXRhaWw6OlRocm93KCksIGJhc2U6OnMuZXJyKTsgfQotICAgIEVycm9yVHlwZSYg
ZXJyb3IoKSAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERl
dGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpOyB9Ci0gICAgUkVMQVhFRF9DT05TVEVYUFIgRXJy
b3JUeXBlJiYgZXJyb3IoKSAmJiB7IHJldHVybiBXVEZNb3ZlKCFiYXNlOjpoYXMgPyBiYXNlOjpz
LmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFzZTo6cy5lcnIpKTsgfQotICAgIGNv
bnN0ZXhwciBjb25zdCBFcnJvclR5cGUmJiBlcnJvcigpIGNvbnN0ICYmIHsgcmV0dXJuIFdURk1v
dmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBi
YXNlOjpzLmVycikpOyB9Ci0gICAgY29uc3RleHByIFVuZXhwZWN0ZWRUeXBlIGdldFVuZXhwZWN0
ZWQoKSBjb25zdCB7IHJldHVybiBVbmV4cGVjdGVkVHlwZShiYXNlOjpzLmVycik7IH0KLSAgICB0
ZW1wbGF0ZTxjbGFzcyBVPiBjb25zdGV4cHIgVmFsdWVUeXBlIHZhbHVlT3IoVSYmIHUpIGNvbnN0
ICYgeyByZXR1cm4gYmFzZTo6aGFzID8gKip0aGlzIDogc3RhdGljX2Nhc3Q8VmFsdWVUeXBlPihz
dGQ6OmZvcndhcmQ8VT4odSkpOyB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gVmFsdWVUeXBlIHZh
bHVlT3IoVSYmIHUpICYmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IFdURk1vdmUoKip0aGlzKSA6IHN0
YXRpY19jYXN0PFZhbHVlVHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQorICAgIGNvbnN0ZXhw
ciBib29sIGhhc192YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6OmhhczsgfQorICAgIGNvbnN0
ZXhwciBjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1cm4gYmFzZTo6aGFz
ID8gYmFzZTo6cy52YWwgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPGVy
cm9yX3R5cGU+KGJhc2U6OnMuZXJyKSksIGJhc2U6OnMudmFsKTsgfQorICAgIFJFTEFYRURfQ09O
U1RFWFBSIHZhbHVlX3R5cGUmIHZhbHVlKCkgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBiYXNlOjpz
LnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8ZXJyb3JfdHlwZT4o
YmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpOyB9CisgICAgY29uc3RleHByIGNvbnN0IHZhbHVl
X3R5cGUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShiYXNlOjpoYXMgPyBi
YXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8ZXJyb3Jf
dHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpKTsgfQorICAgIFJFTEFYRURfQ09OU1RF
WFBSIHZhbHVlX3R5cGUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShiYXNlOjpoYXMg
PyBiYXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8ZXJy
b3JfdHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpKTsgfQorICAgIGNvbnN0ZXhwciBj
b25zdCBlcnJvcl90eXBlJiBlcnJvcigpIGNvbnN0ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJh
c2U6OnMuZXJyIDogKF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigp
KSwgYmFzZTo6cy5lcnIpOyB9CisgICAgZXJyb3JfdHlwZSYgZXJyb3IoKSAmIHsgcmV0dXJuICFi
YXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9h
Y2Nlc3M8dm9pZD4oKSksIGJhc2U6OnMuZXJyKTsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIGVy
cm9yX3R5cGUmJiBlcnJvcigpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSghYmFzZTo6aGFzID8gYmFz
ZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkp
LCBiYXNlOjpzLmVycikpOyB9CisgICAgY29uc3RleHByIGNvbnN0IGVycm9yX3R5cGUmJiBlcnJv
cigpIGNvbnN0ICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSghYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIg
OiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpz
LmVycikpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gY29uc3RleHByIHZhbHVlX3R5cGUgdmFs
dWVfb3IoVSYmIHUpIGNvbnN0ICYgeyByZXR1cm4gYmFzZTo6aGFzID8gKip0aGlzIDogc3RhdGlj
X2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQorICAgIHRlbXBsYXRlPGNs
YXNzIFU+IHZhbHVlX3R5cGUgdmFsdWVfb3IoVSYmIHUpICYmIHsgcmV0dXJuIGJhc2U6OmhhcyA/
IHN0ZDo6bW92ZSgqKnRoaXMpIDogc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3YXJk
PFU+KHUpKTsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRT4KLWNsYXNzIEV4cGVjdGVkPHZvaWQs
IEU+IDogcHJpdmF0ZSBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDx2b2lkLCBFPiB7Ci0gICAg
dHlwZWRlZiBFeHBlY3RlZERldGFpbDo6QmFzZVNlbGVjdDx2b2lkLCBFPiBiYXNlOworY2xhc3Mg
ZXhwZWN0ZWQ8dm9pZCwgRT4gOiBwcml2YXRlIF9fZXhwZWN0ZWRfZGV0YWlsOjpiYXNlX3NlbGVj
dDx2b2lkLCBFPiB7CisgICAgdHlwZWRlZiBfX2V4cGVjdGVkX2RldGFpbDo6YmFzZV9zZWxlY3Q8
dm9pZCwgRT4gYmFzZTsKIAogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6VmFs
dWVUeXBlIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OkVycm9yVHlwZSBF
cnJvclR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpVbmV4cGVjdGVkVHlwZSBVbmV4
cGVjdGVkVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVf
dHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OmVycm9yX3R5cGUgZXJyb3JfdHlwZTsK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVjdGVkX3R5
cGU7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlw
ZT4gdHlwZTsKKyAgICB0eXBlZGVmIGV4cGVjdGVkPHZhbHVlX3R5cGUsIGVycm9yX3R5cGU+IHR5
cGU7CiAKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsKLSAg
ICAgICAgdXNpbmcgdHlwZSA9IEV4cGVjdGVkPFUsIEVycm9yVHlwZT47CisgICAgICAgIHVzaW5n
IHR5cGUgPSBleHBlY3RlZDxVLCBlcnJvcl90eXBlPjsKICAgICB9OwogCi0gICAgY29uc3RleHBy
IEV4cGVjdGVkKCkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZykgeyB9Ci0gICAgRXhw
ZWN0ZWQoY29uc3QgRXhwZWN0ZWQmKSA9IGRlZmF1bHQ7Ci0gICAgRXhwZWN0ZWQoRXhwZWN0ZWQm
JikgPSBkZWZhdWx0OwotICAgIC8vIGNvbnN0ZXhwciBleHBsaWNpdCBFeHBlY3RlZChpbl9wbGFj
ZV90KTsKLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZFR5cGUgY29uc3QmIHUpIDog
YmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUoKSkgeyB9Ci0gICAgY29uc3Rl
eHByIEV4cGVjdGVkKFVuZXhwZWN0ZWRUeXBlJiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpF
cnJvclRhZywgc3RkOjpmb3J3YXJkPFVuZXhwZWN0ZWRUeXBlPih1KS52YWx1ZSgpKSB7IH0KLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVkPEVycj4g
Y29uc3QmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUoKSkgeyB9
CisgICAgY29uc3RleHByIGV4cGVjdGVkKCkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1
ZV90YWcpIHsgfQorICAgIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkJikgPSBkZWZhdWx0OworICAg
IGV4cGVjdGVkKGV4cGVjdGVkJiYpID0gZGVmYXVsdDsKKyAgICAvLyBjb25zdGV4cHIgZXhwbGlj
aXQgZXhwZWN0ZWQoaW5fcGxhY2VfdCk7CisgICAgY29uc3RleHByIGV4cGVjdGVkKHVuZXhwZWN0
ZWRfdHlwZSBjb25zdCYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHUu
dmFsdWUoKSkgeyB9CisgICAgY29uc3RleHByIGV4cGVjdGVkKHVuZXhwZWN0ZWRfdHlwZSYmIHUp
IDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCBzdGQ6OmZvcndhcmQ8dW5leHBl
Y3RlZF90eXBlPih1KS52YWx1ZSgpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0
ZXhwciBleHBlY3RlZCh1bmV4cGVjdGVkPEVycj4gY29uc3QmIHUpIDogYmFzZShfX2V4cGVjdGVk
X2RldGFpbDo6ZXJyb3JfdGFnLCB1LnZhbHVlKCkpIHsgfQogCi0gICAgfkV4cGVjdGVkKCkgPSBk
ZWZhdWx0OworICAgIH5leHBlY3RlZCgpID0gZGVmYXVsdDsKIAotICAgIEV4cGVjdGVkJiBvcGVy
YXRvcj0oY29uc3QgRXhwZWN0ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0
aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShFeHBlY3RlZCYmIGUpIHsgdHlwZShXVEZN
b3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJh
dG9yPShjb25zdCBVbmV4cGVjdGVkVHlwZSYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1
cm4gKnRoaXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgotICAgIEV4cGVjdGVkJiBv
cGVyYXRvcj0oVW5leHBlY3RlZFR5cGUmJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhp
cyk7IHJldHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCisgICAgZXhw
ZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBleHBlY3RlZCYgZSkgeyB0eXBlKGUpLnN3YXAoKnRoaXMp
OyByZXR1cm4gKnRoaXM7IH0KKyAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGV4cGVjdGVkJiYgZSkg
eyB0eXBlKHN0ZDo6bW92ZShlKSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQorICAgIGV4
cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgdW5leHBlY3RlZF90eXBlJiB1KSB7IHR5cGUodSkuc3dh
cCgqdGhpcyk7IHJldHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCisg
ICAgZXhwZWN0ZWQmIG9wZXJhdG9yPSh1bmV4cGVjdGVkX3R5cGUmJiB1KSB7IHR5cGUoc3RkOjpt
b3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9IC8vIE5vdCBpbiB0aGUgY3VycmVu
dCBwYXBlci4KICAgICAvLyB2b2lkIGVtcGxhY2UoKTsKIAotICAgIHZvaWQgc3dhcChFeHBlY3Rl
ZCYgbykKKyAgICB2b2lkIHN3YXAoZXhwZWN0ZWQmIG8pCiAgICAgewogICAgICAgICB1c2luZyBz
dGQ6OnN3YXA7CiAgICAgICAgIGlmIChiYXNlOjpoYXMgJiYgby5oYXMpIHsKICAgICAgICAgICAg
IC8vIERvIG5vdGhpbmcuCiAgICAgICAgIH0gZWxzZSBpZiAoYmFzZTo6aGFzICYmICFvLmhhcykg
ewotICAgICAgICAgICAgRXJyb3JUeXBlIGUoV1RGTW92ZShvLnMuZXJyKSk7Ci0gICAgICAgICAg
ICA6Om5ldyAoJmJhc2U6OnMuZXJyKSBFcnJvclR5cGUoZSk7CisgICAgICAgICAgICBlcnJvcl90
eXBlIGUoc3RkOjptb3ZlKG8ucy5lcnIpKTsKKyAgICAgICAgICAgIDo6bmV3ICgmYmFzZTo6cy5l
cnIpIGVycm9yX3R5cGUoZSk7CiAgICAgICAgICAgICBzd2FwKGJhc2U6Omhhcywgby5oYXMpOwog
ICAgICAgICB9IGVsc2UgaWYgKCFiYXNlOjpoYXMgJiYgby5oYXMpIHsKLSAgICAgICAgICAgIDo6
bmV3ICgmby5zLmVycikgRXJyb3JUeXBlKFdURk1vdmUoYmFzZTo6cy5lcnIpKTsKKyAgICAgICAg
ICAgIDo6bmV3ICgmby5zLmVycikgZXJyb3JfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy5lcnIpKTsK
ICAgICAgICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgc3dhcChiYXNlOjpzLmVyciwgby5zLmVycik7CiAgICAgfQogCiAgICAgY29uc3Rl
eHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0K
LSAgICBjb25zdGV4cHIgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2U6Omhhczsg
fQotICAgIHZvaWQgdmFsdWUoKSBjb25zdCB7ICFiYXNlOjpoYXMgPyBFeHBlY3RlZERldGFpbDo6
VGhyb3coKSA6IHZvaWQoKTsgfQotICAgIGNvbnN0ZXhwciBjb25zdCBFJiBlcnJvcigpIGNvbnN0
ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpU
aHJvdygpLCBiYXNlOjpzLmVycik7IH0KLSAgICBFJiBlcnJvcigpICYgeyByZXR1cm4gIWJhc2U6
OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLmVy
cik7IH0KLSAgICBSRUxBWEVEX0NPTlNURVhQUiBFJiYgZXJyb3IoKSAmJiB7IHJldHVybiBXVEZN
b3ZlKCFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwg
YmFzZTo6cy5lcnIpKTsgfQotICAgIGNvbnN0ZXhwciBVbmV4cGVjdGVkVHlwZSBnZXRVbmV4cGVj
dGVkKCkgY29uc3QgeyByZXR1cm4gVW5leHBlY3RlZFR5cGUoYmFzZTo6cy5lcnIpOyB9CisgICAg
Y29uc3RleHByIGJvb2wgaGFzX3ZhbHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9Cisg
ICAgdm9pZCB2YWx1ZSgpIGNvbnN0IHsgIWJhc2U6OmhhcyA/IF9fRVhQRUNURURfVEhST1coYmFk
X2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSA6IHZvaWQoKTsgfQorICAgIGNvbnN0ZXhwciBjb25z
dCBFJiBlcnJvcigpIGNvbnN0ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDog
KF9fRVhQRUNURURfVEhST1coYmFkX2V4cGVjdGVkX2FjY2Vzczx2b2lkPigpKSwgYmFzZTo6cy5l
cnIpOyB9CisgICAgRSYgZXJyb3IoKSAmIHsgcmV0dXJuICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVy
ciA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9pZD4oKSksIGJhc2U6
OnMuZXJyKTsgfQorICAgIFJFTEFYRURfQ09OU1RFWFBSIEUmJiBlcnJvcigpICYmIHsgcmV0dXJu
IHN0ZDo6bW92ZSghYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhi
YWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpLCBiYXNlOjpzLmVycikpOyB9CiB9OwogCi10ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4
cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gYm9vbCh4
KSA9PSBib29sKHkpICYmICh4ID8geC52YWx1ZSgpID09IHkudmFsdWUoKSA6IHguZXJyb3IoKSA9
PSB5LmVycm9yKCkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBF
PiYgeSkgeyByZXR1cm4gISh4ID09IHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIHgsIGNvbnN0IEV4cGVj
dGVkPHZvaWQsIEU+JiB5KSB7IHJldHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB0cnVl
IDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
RT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29u
c3QgVCYgeSkgeyByZXR1cm4geCA9PSBFeHBlY3RlZDxULCBFPih5KTsgfQotdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25z
dCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQot
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCAhPSBFeHBlY3RlZDxU
LCBFPih5KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBUJiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhw
ZWN0ZWQ8VCwgRT4oeCkgIT0geTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgZXhwZWN0
ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHgudmFsdWUo
KSA9PSB5LnZhbHVlKCkgOiB4LmVycm9yKCkgPT0geS5lcnJvcigpKTsgfQordGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxU
LCBFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuICEoeCA9PSB5KTsgfQog
Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBVbmV4cGVjdGVkPEU+JiB5KSB7IHJldHVybiB4
ID09IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0IEV4cGVj
dGVkPFQsIEU+JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSA9PSB5OyB9Ci10ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4cGVj
dGVkPFQsIEU+JiB4LCBjb25zdCBVbmV4cGVjdGVkPEU+JiB5KSB7IHJldHVybiB4ICE9IEV4cGVj
dGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+
JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSAhPSB5OyB9Cit0ZW1wbGF0ZTxjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPHZvaWQsIEU+JiB4LCBj
b25zdCBleHBlY3RlZDx2b2lkLCBFPiYgeSkgeyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYm
ICh4ID8gdHJ1ZSA6IHguZXJyb3IoKSA9PSB5LmVycm9yKCkpOyB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEU+IHZvaWQgc3dhcChFeHBlY3RlZDxULCBFPiYgeCwgRXhwZWN0ZWQ8
VCwgRT4mIHkpIHsgeC5zd2FwKHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5
KSB7IHJldHVybiB4ID09IGV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxULCBFPih4KSA9PSB5OyB9Cit0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ICE9IGV4cGVjdGVkPFQsIEU+KHkp
OyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxU
LCBFPih4KSAhPSB5OyB9CiAKLS8vIE5vdGU6IHRoaXMgaXNuJ3QgaW4gdGhlIGN1cnJlbnQgcHJv
cG9zYWwgYmVjYXVzZSBpdCByZWxpZXMgb24gQysrMTcgZGVkdWN0aW9uIGd1aWRlcyBpbnN0ZWFk
LgotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRSA9IHN0ZDo6bnVsbG9wdF90PiBjb25zdGV4cHIg
RXhwZWN0ZWQ8c3RkOjpkZWNheV90PFQ+LCBFPiBtYWtlRXhwZWN0ZWQoVCYmIHYpCi17Ci0gICAg
cmV0dXJuIEV4cGVjdGVkPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIEU+KHN0ZDo6Zm9y
d2FyZDxUPih2KSk7Ci19Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgRXhw
ZWN0ZWQ8VCwgc3RkOjpkZWNheV90PEU+PiBtYWtlRXhwZWN0ZWRGcm9tRXJyb3IoRSYmIGUpIHsg
cmV0dXJuIEV4cGVjdGVkPFQsIHN0ZDo6ZGVjYXlfdDxFPj4obWFrZVVuZXhwZWN0ZWQoZSkpOyB9
Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFLCBjbGFzcyBVPiBjb25zdGV4cHIgRXhwZWN0ZWQ8
VCwgRT4gbWFrZUV4cGVjdGVkRnJvbUVycm9yKFUmJiB1KSB7IHJldHVybiBFeHBlY3RlZDxULCBF
PihtYWtlVW5leHBlY3RlZChFIHsgc3RkOjpmb3J3YXJkPFU+KHUpIH0gKSk7IH0KLS8vIHRlbXBs
YXRlPGNsYXNzIEYsIGNsYXNzIEUgPSBzdGQ6Om51bGxvcHRfdD4gY29uc3RleHByIEV4cGVjdGVk
PHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPEY+Ojp0eXBlLCBFPiBtYWtlRXhwZWN0ZWRfZnJvbV9j
YWxsKEYgZik7Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCB1bmV4cGVjdGVkPEU+JiB5KSB7
IHJldHVybiB4ID09IGV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFz
cyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHgsIGNv
bnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxULCBFPih4KSA9PSB5OyB9
Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCB1bmV4cGVjdGVkPEU+JiB5KSB7IHJldHVybiB4
ICE9IGV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiB5KSB7IHJldHVybiBleHBlY3RlZDxULCBFPih4KSAhPSB5OyB9CiAKLWlubGlu
ZSBFeHBlY3RlZDx2b2lkLCBzdGQ6Om51bGxvcHRfdD4gbWFrZUV4cGVjdGVkKCkgeyByZXR1cm4g
RXhwZWN0ZWQ8dm9pZCwgc3RkOjpudWxsb3B0X3Q+KCk7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEU+IHZvaWQgc3dhcChleHBlY3RlZDxULCBFPiYgeCwgZXhwZWN0ZWQ8VCwgRT4m
IHkpIHsgeC5zd2FwKHkpOyB9CiAKLX0gLy8gbmFtZXNwYWNlIFdURgorfX19IC8vIG5hbWVzcGFj
ZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCiAKLXVzaW5nIFdURjo6SW5QbGFj
ZTsKLXVzaW5nIFdURjo6VW5leHBlY3RlZDsKLXVzaW5nIFdURjo6bWFrZVVuZXhwZWN0ZWQ7Ci11
c2luZyBXVEY6OlVuZXhwZWN0OwotdXNpbmcgV1RGOjpFeHBlY3RlZDsKLXVzaW5nIFdURjo6bWFr
ZUV4cGVjdGVkOwotdXNpbmcgV1RGOjptYWtlRXhwZWN0ZWRGcm9tRXJyb3I7CitfX0VYUEVDVEVE
X0lOTElORV9WQVJJQUJMRSBjb25zdGV4cHIgc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWRf
dCYgdW5leHBlY3QgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6dW5leHBlY3Q7Cit0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBFPiB1c2luZyBFeHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBlY3Rl
ZDxULCBFPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAppbmRleCAxNDdhNTc4Li5lZjAwYzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC02
MCw3ICs2MCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2ggeyB1c2lu
ZyBIYXNoID0gdm9pZDsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRyYWl0czsK
IAogdGVtcGxhdGU8dHlwZW5hbWUuLi4+IGNsYXNzIFZhcmlhbnQ7Ci10ZW1wbGF0ZTxjbGFzcywg
Y2xhc3M+IGNsYXNzIEV4cGVjdGVkOwogdGVtcGxhdGU8dHlwZW5hbWUsIHNpemVfdCA9IDAsIHR5
cGVuYW1lID0gQ3Jhc2hPbk92ZXJmbG93LCBzaXplX3QgPSAxNiwgdHlwZW5hbWUgPSBGYXN0TWFs
bG9jPiBjbGFzcyBWZWN0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZT46Okhhc2gsIHR5cGVuYW1lID0gSGFzaFRyYWl0czxW
YWx1ZT4+IGNsYXNzIEhhc2hDb3VudGVkU2V0OwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0
eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5QXJn
Pjo6SGFzaCwgdHlwZW5hbWUgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lID0gSGFzaFRy
YWl0czxNYXBwZWRBcmc+PiBjbGFzcyBIYXNoTWFwOwpAQCAtNjgsMTIgKzY3LDE4IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZh
bHVlQXJnPjo6SGFzaCwgdHlwCiAKIH0KIAorbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhw
ZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKK3RlbXBsYXRl
PGNsYXNzLCBjbGFzcz4gY2xhc3MgZXhwZWN0ZWQ7Cit0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgdW5l
eHBlY3RlZDsKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFs
c192MworCiB1c2luZyBXVEY6OkF0b21pY1N0cmluZzsKIHVzaW5nIFdURjo6QXRvbWljU3RyaW5n
SW1wbDsKIHVzaW5nIFdURjo6QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwog
dXNpbmcgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjsKLXVzaW5nIFdURjo6RXhwZWN0ZWQ7CiB1c2lu
ZyBXVEY6OkZ1bmN0aW9uOwogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7CiB1c2luZyBX
VEY6Okhhc2hDb3VudGVkU2V0OwpAQCAtOTcsMyArMTAyLDYgQEAgdXNpbmcgV1RGOjpUZXh0UG9z
aXRpb247CiB1c2luZyBXVEY6OlRleHRTdHJlYW07CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2lu
ZyBXVEY6OlZlY3RvcjsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0
ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47Cit0ZW1wbGF0ZTxjbGFzcyBF
PiB1c2luZyBVbmV4cGVjdGVkID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0
aW9uYWwuaAppbmRleCBkMDI2ZTFmLi5kOWU1OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTI4MiwxMCAr
MjgyLDYgQEAgY29uc3RleHByIFUgY29udmVydChVIHYpIHsgcmV0dXJuIHY7IH0KIGNvbnN0ZXhw
ciBzdHJ1Y3QgdHJpdmlhbF9pbml0X3R7fSB0cml2aWFsX2luaXR7fTsKIAogCi0vLyAyMC41LjYs
IEluLXBsYWNlIGNvbnN0cnVjdGlvbgotY29uc3RleHByIHN0cnVjdCBpbl9wbGFjZV90e30gaW5f
cGxhY2V7fTsKLQotCiAvLyAyMC41LjcsIERpc2VuZ2FnZWQgc3RhdGUgaW5kaWNhdG9yCiBzdHJ1
Y3QgbnVsbG9wdF90CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMu
aCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IDEyZTM5M2EuLjdmYTFmMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC01MjUsNiArNTI1LDI5IEBAIHRlbXBsYXRlPGNsYXNz
IEIwLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzLi4uIEJuPiBzdHJ1Y3Qgd3RmX2Nvbmp1bmN0
aW9uX2ltcGw8CiB0ZW1wbGF0ZTxjbGFzcy4uLiBfQXJncz4gc3RydWN0IGNvbmp1bmN0aW9uIDog
d3RmX2Nvbmp1bmN0aW9uX2ltcGw8X0FyZ3MuLi4+IHsgfTsKICNlbmRpZgogCisjaWYgX19jcGx1
c3BsdXMgPCAyMDE3MDNMCisKKy8vIFRoZXNlIGFyZSBpbmxpbmUgdmFyaWFibGUgZm9yIEMrKzE3
IGFuZCBsYXRlci4KKyNkZWZpbmUgX19JTl9QTEFDRV9JTkxJTkVfVkFSSUFCTEUgc3RhdGljIGNv
bnN0CisKK3N0cnVjdCBpbl9wbGFjZV90IHsKKyAgICBleHBsaWNpdCBpbl9wbGFjZV90KCkgPSBk
ZWZhdWx0OworfTsKK19fSU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBpbl9wbGFj
ZV90IGluX3BsYWNlIHsgfTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpbl9wbGFjZV90
eXBlX3QgeworICAgIGV4cGxpY2l0IGluX3BsYWNlX3R5cGVfdCgpID0gZGVmYXVsdDsKK307Cit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK19fSU5fUExBQ0VfSU5MSU5FX1ZBUklBQkxFIGNvbnN0ZXhwciBp
bl9wbGFjZV90eXBlX3Q8VD4gaW5fcGxhY2VfdHlwZSB7IH07CisKK3RlbXBsYXRlIDxzaXplX3Qg
ST4gc3RydWN0IGluX3BsYWNlX2luZGV4X3QgeworICAgIGV4cGxpY2l0IGluX3BsYWNlX2luZGV4
X3QoKSA9IGRlZmF1bHQ7Cit9OwordGVtcGxhdGUgPHNpemVfdCBJPgorX19JTl9QTEFDRV9JTkxJ
TkVfVkFSSUFCTEUgY29uc3RleHByIGluX3BsYWNlX2luZGV4X3Q8ST4gaW5fcGxhY2VfaW5kZXgg
eyB9OworI2VuZGlmIC8vIF9fY3BsdXNwbHVzIDwgMjAxNzAzTAorCiB9IC8vIG5hbWVzcGFjZSBz
dGQKIAogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oIGIv
U291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmE2NTNiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVj
dGVkLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gSW1wbGVtZW50YXRp
b24gb2YgTGlicmFyeSBGdW5kYW1lbnRhbHMgdjMncyBzdGQ6OmV4cGVjdGVkLCBhcyBkZXNjcmli
ZWQgaGVyZTogaHR0cDovL3dnMjEubGluay9wMDMyM3I0CisKKyNwcmFnbWEgb25jZQorCisvKgor
ICAgIHVuZXhwZWN0ZWQgc3lub3BzaXMKKworbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgZXhw
ZXJpbWVudGFsIHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKKyAgICAvLyA/
Lj8uMywgVW5leHBlY3RlZCBvYmplY3QgdHlwZQorICAgIHRlbXBsYXRlIDxjbGFzcyBFPgorICAg
ICAgY2xhc3MgdW5leHBlY3RlZDsKKworICAgIC8vID8uPy40LCBVbmV4cGVjdGVkIHJlbGF0aW9u
YWwgb3BlcmF0b3JzCisgICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgICAgIGNvbnN0ZXhwciBi
b29sCisgICAgICAgIG9wZXJhdG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYsIGNvbnN0IHVuZXhw
ZWN0ZWQ8RT4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KKyAgICAgICAgY29uc3RleHByIGJv
b2wKKyAgICAgICAgb3BlcmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiwgY29uc3QgdW5leHBl
Y3RlZDxFPiYpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIEU+CisgICAgY2xhc3MgdW5leHBlY3Rl
ZCB7CisgICAgcHVibGljOgorICAgICAgICB1bmV4cGVjdGVkKCkgPSBkZWxldGU7CisgICAgICAg
IGNvbnN0ZXhwciBleHBsaWNpdCB1bmV4cGVjdGVkKGNvbnN0IEUmKTsKKyAgICAgICAgY29uc3Rl
eHByIGV4cGxpY2l0IHVuZXhwZWN0ZWQoRSYmKTsKKyAgICAgICAgY29uc3RleHByIGNvbnN0IEUm
IHZhbHVlKCkgY29uc3QgJjsKKyAgICAgICAgY29uc3RleHByIEUmIHZhbHVlKCkgJjsKKyAgICAg
ICAgY29uc3RleHByIEUmJiB2YWx1ZSgpICYmOworICAgICAgICBjb25zdGV4cHIgRSBjb25zdCYm
IHZhbHVlKCkgY29uc3QmJjsKKyAgICBwcml2YXRlOgorICAgICAgICBFIHZhbDsgLy8gZXhwb3Np
dGlvbiBvbmx5CisgICAgfTsKKworfX19CisKKyovCisKKyNpbmNsdWRlIDxjc3RkbGliPgorI2lu
Y2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2Ugc3RkIHsKK25hbWVzcGFjZSBleHBlcmltZW50YWwgeworaW5saW5lIG5hbWVzcGFjZSBmdW5k
YW1lbnRhbHNfdjMgeworCit0ZW1wbGF0ZTxjbGFzcyBFPgorY2xhc3MgdW5leHBlY3RlZCB7Citw
dWJsaWM6CisgICAgdW5leHBlY3RlZCgpID0gZGVsZXRlOworICAgIGNvbnN0ZXhwciBleHBsaWNp
dCB1bmV4cGVjdGVkKGNvbnN0IEUmIGUpIDogdmFsKGUpIHsgfQorICAgIGNvbnN0ZXhwciBleHBs
aWNpdCB1bmV4cGVjdGVkKEUmJiBlKSA6IHZhbChzdGQ6OmZvcndhcmQ8RT4oZSkpIHsgfQorICAg
IGNvbnN0ZXhwciBjb25zdCBFJiB2YWx1ZSgpIGNvbnN0ICYgeyByZXR1cm4gdmFsOyB9CisgICAg
UkVMQVhFRF9DT05TVEVYUFIgRSYgdmFsdWUoKSAmIHsgcmV0dXJuIHZhbDsgfQorICAgIFJFTEFY
RURfQ09OU1RFWFBSIEUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUodmFsKTsgfQorICAg
IFJFTEFYRURfQ09OU1RFWFBSIGNvbnN0IEUmJiB2YWx1ZSgpIGNvbnN0ICYmIHsgcmV0dXJuIFdU
Rk1vdmUodmFsKTsgfQorCitwcml2YXRlOgorICAgIEUgdmFsOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiBsaHMs
IGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgPT0gcmhzLnZh
bHVlKCk7IH0KK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgdW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCB1bmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0dXJu
IGxocy52YWx1ZSgpICE9IHJocy52YWx1ZSgpOyB9CisKK319fSAvLyBuYW1lc3BhY2Ugc3RkOjpl
eHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192MworCit0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBV
bmV4cGVjdGVkID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CisKKy8vIE5vdCBp
biB0aGUgc3RkOjpleHBlY3RlZCBzcGVjLCBidXQgdXNlZnVsIHRvIHdvcmsgYXJvdW5kIGxhY2sg
b2YgQysrMTcgZGVkdWN0aW9uIGd1aWRlcy4KK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBV
bmV4cGVjdGVkPHN0ZDo6ZGVjYXlfdDxFPj4gbWFrZVVuZXhwZWN0ZWQoRSYmIHYpIHsgcmV0dXJu
IFVuZXhwZWN0ZWQ8dHlwZW5hbWUgc3RkOjpkZWNheTxFPjo6dHlwZT4oc3RkOjpmb3J3YXJkPEU+
KHYpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1OThjMjkuLmUzMmM5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29t
PgorCisgICAgICAgIFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGxpYmMrKyBjb2Rpbmcg
c3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDI2NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
VXBkYXRlIHZhcmlvdXMgdXNlcyBvZiBFeHBlY3RlZCwgbW9zdGx5IHJlbmFtaW5nIHZhbHVlT3Ig
YW5kCisgICAgICAgIGhhc1ZhbHVlIHRvIHRoZSBTVEwgbmFtaW5nIGNvbnZlbnRpb24uCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmJh
dGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpiYXRjaFB1
dE9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdEZl
dGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpnZXREb21haW5MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6bG9hZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmxvYWRFbmNvZGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OnBhcnNlUnVsZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmNhY2hlZEZvbnQpOgor
ICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZSk6
CisgICAgICAgICogY3NzL1N0eWxlUnVsZUltcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vQ2FsbGJh
Y2tSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrUmVzdWx0PFJldHVyblR5cGU+
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGxiYWNrUmVzdWx0PFJldHVyblR5
cGU+OjpyZWxlYXNlUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUgY29u
c3QpOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOgorICAgICAgICAoV2ViQ29yZTo6RXhj
ZXB0aW9uT3I8UmV0dXJuVHlwZT46Omhhc0V4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFeGNlcHRpb25Pcjx2b2lkPjo6aGFzRXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBk
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWF4TGVu
Z3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRvT25s
eUhUTUxOb25OZWdhdGl2ZSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXI6OnN0YXJ0UHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAg
ICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3Rh
cnRMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVlc3RJbWFnZVJl
c291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6bG9hZEZvbnQpOgorICAgICAgICAq
IHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
OnVwZGF0ZUV4dGVybmFsRG9jdW1lbnQpOgorICAgICAgICAqIHhtbC9YU0xJbXBvcnRSdWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCk6CisKIDIwMTct
MTItMDQgIERldmluIFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZXRob2QgZm9yIHJlY29yZGluZyBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQgZnJvbSBKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCmluZGV4IDVlYTIyMGIuLjc4ZmUwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC00MjAsMTIgKzQyMCwxMiBAQCB2b2lkIERPTUNh
Y2hlOjpyZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZChz
dGQ6Om9wdGlvbmFsPAogCiAgICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMobV9pZGVu
dGlmaWVyLCByZXRyaWV2ZVVSTCwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsK
LSAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGVF
bmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzVmFs
dWUoKSkKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgdXBkYXRlUmVjb3JkcyhXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CkBAIC00NjksNyArNDY5LDcgQEAgdm9p
ZCBET01DYWNoZTo6YmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1
ZXN0LCBDYWNoZVF1ZXJ5T3B0aW8KICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAg
bV9jb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihtX2lkZW50aWZpZXIsIHJlcXVlc3Qu
aW50ZXJuYWxSZXF1ZXN0KCksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIHsKICAg
ICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFs
dWUoKSkKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJv
cigpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soIXJlc3Vs
dC52YWx1ZSgpLmlzRW1wdHkoKSk7CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBET01DYWNoZTo6
YmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoRXgKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgbV9jb25uZWN0aW9u
LT5iYXRjaFB1dE9wZXJhdGlvbihtX2lkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFt0aGlz
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3Im
JiByZXN1bHQpIHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0
aW9uKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCA0NmU2ZjJiLi44NTk5NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKFdURjo6RnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4KICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
CiAgICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIG1fdXBkYXRlQ291bnRl
ciwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlSW5mb3NPckVycm9y
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6
ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFn
ZTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZh
Y2U8RAogICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgICAgIG1fY29ubmVj
dGlvbi0+b3BlbihvcmlnaW4sIG5hbWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJy
b3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQpA
QCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mCiAgICAgICAgIHNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNo
ZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1
ZSgpKQogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6
ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjBkYjEzYi4uZjllNTQ3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QKIHsKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVm
KG1fc2NvcGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENv
bm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdICgpIG11dGFibGUg
ewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwg
W3dvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllcl0gKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNhY2hlSWRlbnRpZmllciwgIXJl
c3VsdC5oYXNWYWx1ZSgpIHx8IHJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVJZGVudGlmaWVyLCAhcmVz
dWx0Lmhhc192YWx1ZSgpIHx8IHJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIgPT0gY2FjaGVJZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9y
TW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdF0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKS5yZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAgY2FsbE9uTWFpblRo
cmVhZChbd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVh
ZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwg
b3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpLCB1cGRhdGVDb3VudGVyXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwg
dXBkYXRlQ291bnRlciwgW3dvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVx
dWVzdElkZW50aWZpZXJdIChDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBDYWNoZUluZm9zT3JFcnJvciBpc29sYXRlZFJlc3VsdDsKLSAgICAgICAgICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkKICAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1vdmUocmVzdWx0KTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IHJlc3Vs
dC52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBpbmxp
bmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhj
b25zdCBWZWN0b3I8CiAKIHN0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFk
UmVjb3JkRGF0YT4sIEVycm9yPiByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3Jkcyhjb25zdCBS
ZWNvcmRzT3JFcnJvciYgcmVzdWx0KQogewotICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChyZXN1bHQuZXJyb3IoKSk7CiAKICAgICByZXR1cm4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhy
ZXN1bHQudmFsdWUoKSk7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8
UmVjb3JkPiByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERh
dGEKIAogc3RhdGljIGlubGluZSBSZWNvcmRzT3JFcnJvciByZWNvcmRzT3JFcnJvckZyb21SZWNv
cmRzRGF0YShFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+JiYg
cmVjb3Jkc0RhdGEpCiB7Ci0gICAgaWYgKCFyZWNvcmRzRGF0YS5oYXNWYWx1ZSgpKQorICAgIGlm
ICghcmVjb3Jkc0RhdGEuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChyZWNvcmRzRGF0YS5lcnJvcigpKTsKICAgICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0
YShXVEZNb3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggZWUwNjhmNi4uZDY2
MjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
RmV0Y2hlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
U2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKEQKICAg
ICBpZiAoIW1faW5pdGlhdG9yTmFtZS5pc051bGwoKSkKICAgICAgICAgcmVxdWVzdC5zZXRJbml0
aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKIAotICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnJlcXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxs
cHRyKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkNvbXBpbGVyLmNwcAppbmRleCA1NmRmZjZhLi5lZjYzNDA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25Db21waWxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVUb0J5dGVj
b2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMsIFVuaXZlcnNhbEFjdGlvblNldCYmCiBz
dGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlv
bkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTikKIHsKICAgICBhdXRvIHJ1bGVMaXN0
ID0gcGFyc2VSdWxlTGlzdChXVEZNb3ZlKHJ1bGVKU09OKSk7Ci0gICAgaWYgKCFydWxlTGlzdC5o
YXNWYWx1ZSgpKQorICAgIGlmICghcnVsZUxpc3QuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBydWxlTGlzdC5lcnJvcigpOwogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcGFy
c2VkUnVsZUxpc3QgPSBXVEZNb3ZlKHJ1bGVMaXN0LnZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJz
ZXIuY3BwCmluZGV4IDE2NjE0YzUuLmNjZGIyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJv
cl9jb2RlPiBnZXRTdHJpbmdMaXN0KEV4ZWNTdGF0ZSYgZXhlYywKIHN0YXRpYyBFeHBlY3RlZDxW
ZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXREb21haW5MaXN0KEV4ZWNTdGF0ZSYg
ZXhlYywgY29uc3QgSlNPYmplY3QqIGFycmF5T2JqZWN0KQogewogICAgIGF1dG8gc3RyaW5ncyA9
IGdldFN0cmluZ0xpc3QoZXhlYywgYXJyYXlPYmplY3QpOwotICAgIGlmICghc3RyaW5ncy5oYXNW
YWx1ZSgpKQorICAgIGlmICghc3RyaW5ncy5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIHN0
cmluZ3M7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBzdHJpbmdzLnZhbHVlKCkpIHsKICAgICAg
ICAgLy8gRG9tYWlucyBzaG91bGQgYmUgcHVueWNvZGUgZW5jb2RlZCBsb3dlciBjYXNlLgpAQCAt
MTc1LDcgKzE3NSw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+
IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPCiAgICAgY29uc3QgSlNWYWx1
ZSBpZkRvbWFpblZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJmV4ZWMsICJpZi1kb21haW4iKSk7CiAgICAgaWYgKCFzY29wZS5leGNlcHRpb24o
KSAmJiBpZkRvbWFpblZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgYXV0byBpZkRvbWFpbiA9
IGdldERvbWFpbkxpc3QoZXhlYywgYXNPYmplY3QoaWZEb21haW5WYWx1ZSkpOwotICAgICAgICBp
ZiAoIWlmRG9tYWluLmhhc1ZhbHVlKCkpCisgICAgICAgIGlmICghaWZEb21haW4uaGFzX3ZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaWZEb21haW4uZXJyb3IoKSk7
CiAgICAgICAgIHRyaWdnZXIuY29uZGl0aW9ucyA9IFdURk1vdmUoaWZEb21haW4udmFsdWUoKSk7
CiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMTkwLDcgKzE5
MCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmln
Z2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPCiAgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRp
dGlvblR5cGUgIT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNv
bmRpdGlvbnMpOwogICAgICAgICBhdXRvIHVubGVzc0RvbWFpbiA9IGdldERvbWFpbkxpc3QoZXhl
YywgYXNPYmplY3QodW5sZXNzRG9tYWluVmFsdWUpKTsKLSAgICAgICAgaWYgKCF1bmxlc3NEb21h
aW4uaGFzVmFsdWUoKSkKKyAgICAgICAgaWYgKCF1bmxlc3NEb21haW4uaGFzX3ZhbHVlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodW5sZXNzRG9tYWluLmVycm9yKCkpOwog
ICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3ZlKHVubGVzc0RvbWFpbi52YWx1ZSgp
KTsKICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCkBAIC0yMDQsNyAr
MjA0LDcgQEAgc3RhdGljIEV4cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRy
aWdnZXIoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU08KICAgICAgICAgaWYgKHRyaWdnZXIuY29u
ZGl0aW9uVHlwZSAhPSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpOb25lKQogICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxl
Q29uZGl0aW9ucyk7CiAgICAgICAgIGF1dG8gaWZUb3BVUkwgPSBnZXRTdHJpbmdMaXN0KGV4ZWMs
IGFzT2JqZWN0KGlmVG9wVVJMVmFsdWUpKTsKLSAgICAgICAgaWYgKCFpZlRvcFVSTC5oYXNWYWx1
ZSgpKQorICAgICAgICBpZiAoIWlmVG9wVVJMLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKGlmVG9wVVJMLmVycm9yKCkpOwogICAgICAgICB0cmlnZ2VyLmNv
bmRpdGlvbnMgPSBXVEZNb3ZlKGlmVG9wVVJMLnZhbHVlKCkpOwogICAgICAgICBpZiAodHJpZ2dl
ci5jb25kaXRpb25zLmlzRW1wdHkoKSkKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgRXhwZWN0
ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJpZ2dlcihFeGVjU3RhdGUmIGV4ZWMs
IGNvbnN0IEpTTwogICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25UeXBlICE9IFRyaWdnZXI6
OkNvbmRpdGlvblR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKICAgICAgICAg
YXV0byB1bmxlc3NUb3BVUkwgPSBnZXRTdHJpbmdMaXN0KGV4ZWMsIGFzT2JqZWN0KHVubGVzc1Rv
cFVSTFZhbHVlKSk7Ci0gICAgICAgIGlmICghdW5sZXNzVG9wVVJMLmhhc1ZhbHVlKCkpCisgICAg
ICAgIGlmICghdW5sZXNzVG9wVVJMLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHVubGVzc1RvcFVSTC5lcnJvcigpKTsKICAgICAgICAgdHJpZ2dlci5jb25k
aXRpb25zID0gV1RGTW92ZSh1bmxlc3NUb3BVUkwudmFsdWUoKSk7CiAgICAgICAgIGlmICh0cmln
Z2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjg4LDExICsyODgsMTEgQEAgc3RhdGljIEV4
cGVjdGVkPHN0ZDo6b3B0aW9uYWw8QWN0aW9uPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkQWN0aW9u
KEV4ZWNTdGF0ZSYgZXgKIHN0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPENvbnRlbnRFeHRl
bnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkUnVsZShFeGVjU3RhdGUmIGV4ZWMsIGNv
bnN0IEpTT2JqZWN0JiBydWxlT2JqZWN0KQogewogICAgIGF1dG8gdHJpZ2dlciA9IGxvYWRUcmln
Z2VyKGV4ZWMsIHJ1bGVPYmplY3QpOwotICAgIGlmICghdHJpZ2dlci5oYXNWYWx1ZSgpKQorICAg
IGlmICghdHJpZ2dlci5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KHRyaWdnZXIuZXJyb3IoKSk7CiAKICAgICBhdXRvIGFjdGlvbiA9IGxvYWRBY3Rpb24oZXhlYywg
cnVsZU9iamVjdCk7Ci0gICAgaWYgKCFhY3Rpb24uaGFzVmFsdWUoKSkKKyAgICBpZiAoIWFjdGlv
bi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFjdGlvbi5lcnJv
cigpKTsKIAogICAgIGlmIChhY3Rpb24udmFsdWUoKSkKQEAgLTM0MCw3ICszNDAsNyBAQCBzdGF0
aWMgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2Rl
PiBsb2FkRW5jb2RlZFJ1bGVzKAogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRSdWxlKTsKIAogICAgICAgICBhdXRvIHJ1
bGUgPSBsb2FkUnVsZShleGVjLCAqcnVsZU9iamVjdCk7Ci0gICAgICAgIGlmICghcnVsZS5oYXNW
YWx1ZSgpKQorICAgICAgICBpZiAoIXJ1bGUuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQocnVsZS5lcnJvcigpKTsKICAgICAgICAgaWYgKHJ1bGUudmFsdWUo
KSkKICAgICAgICAgICAgIHJ1bGVMaXN0LmFwcGVuZCgqcnVsZS52YWx1ZSgpKTsKQEAgLTM2NCw3
ICszNjQsNyBAQCBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVy
cm9yX2NvZGU+IHBhcnNlUnVsZUxpc3QoU3RyaW5nJiYgcgogCiAgICAgdm0gPSBudWxscHRyOwog
Ci0gICAgaWYgKCFydWxlTGlzdC5oYXNWYWx1ZSgpKQorICAgIGlmICghcnVsZUxpc3QuaGFzX3Zh
bHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChydWxlTGlzdC5lcnJvcigpKTsK
IAogICAgIGlmIChydWxlTGlzdC0+aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDhhY2Q5YWYuLjgxZDhhNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAxLDcgKzEwMSw3IEBAIENh
Y2hlZEZvbnQqIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIGlzU1ZHLCBib29sCiAKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKG1fcmVzb3VyY2UpKSwgb3B0
aW9ucyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5p
dGlhdG9ycygpLmNzcyk7Ci0gICAgbV9jYWNoZWRGb250ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291
cmNlTG9hZGVyKCkucmVxdWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkcpLnZhbHVlT3Io
bnVsbHB0cik7CisgICAgbV9jYWNoZWRGb250ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkucmVxdWVzdEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgaXNTVkcpLnZhbHVlX29yKG51bGxw
dHIpOwogICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVNldFZhbHVlLmNwcAppbmRleCBhNjgxYjhiLi5hOTdkYzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6
OnBhaXI8Q2FjaGVkSW1hZ2UqLCBmbG9hdD4gQ1NTSW1hZ2VTZXRWYWx1ZTo6bG9hZEJlc3RGaXRJ
bWFnZShDYWNoZWRSZXNvdXJjZQogICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0
aW9uczo6TW9kZTo6Q29ycykKICAgICAgICAgICAgIHJlcXVlc3QudXBkYXRlRm9yQWNjZXNzQ29u
dHJvbCgqZG9jdW1lbnQpOwogCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVz
dEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgIG1fY2Fj
aGVkSW1hZ2UgPSBsb2FkZXIucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29y
KG51bGxwdHIpOwogICAgICAgICBtX2Jlc3RGaXRJbWFnZVNjYWxlRmFjdG9yID0gaW1hZ2Uuc2Nh
bGVGYWN0b3I7CiAgICAgfQogICAgIHJldHVybiB7IG1fY2FjaGVkSW1hZ2UuZ2V0KCksIG1fYmVz
dEZpdEltYWdlU2NhbGVGYWN0b3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApp
bmRleCAzNzM2M2QwLi5jMTkxZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTcyLDcgKzcyLDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZShDYWNo
ZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIKICAgICAgICAgICAgIEFTU0VS
VChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vz
c0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAgfQotICAgICAgICBtX2NhY2hl
ZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51
bGxwdHIpOworICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZN
b3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2Fj
aGVkSW1hZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmlu
ZGV4IGMwMGZmMmUuLjA0OThhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQu
Y3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKICAqIChDKSAyMDAyLTIwMDMgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHls
ZVNoZWV0KCkKICAgICAgICAgcmVxdWVzdC5zZXRPcHRpb25zKFJlc291cmNlTG9hZGVyT3B0aW9u
cyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUsIFNraXBT
ZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5
Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1Bv
bGljeTo6QWxsb3dDYWNoaW5nKSk7CiAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoV1RGTW92ZShy
ZXF1ZXN0KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVl
c3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1
ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKICAgICAg
ICAgLy8gaWYgdGhlIGltcG9ydCBydWxlIGlzIGlzc3VlZCBkeW5hbWljYWxseSwgdGhlIHNoZWV0
IG1heSBiZQogICAgICAgICAvLyByZW1vdmVkIGZyb20gdGhlIHBlbmRpbmcgc2hlZXQgY291bnQs
IHNvIGxldCB0aGUgZG9jIGtub3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DYWxs
YmFja1Jlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmgKaW5kZXgg
M2JlYmZlMS4uODc4ZmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NhbGxiYWNr
UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NhbGxiYWNrUmVzdWx0LmgKQEAgLTcx
LDEyICs3MSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgQ2FsbGJh
Y2tSZXN1bHQ8UmV0dXJuVHlwZT46OkNhbGxiYWNrUmVzdWx0KAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXR1cm5UeXBlPiBpbmxpbmUgQ2FsbGJhY2tSZXN1bHRUeXBlIENhbGxiYWNrUmVzdWx0PFJl
dHVyblR5cGU+Ojp0eXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV92YWx1ZS5oYXNWYWx1ZSgp
ID8gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzIDogbV92YWx1ZS5lcnJvcigpOworICAgIHJl
dHVybiBtX3ZhbHVlLmhhc192YWx1ZSgpID8gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzIDog
bV92YWx1ZS5lcnJvcigpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxp
bmUgYXV0byBDYWxsYmFja1Jlc3VsdDxSZXR1cm5UeXBlPjo6cmVsZWFzZVJldHVyblZhbHVlKCkg
LT4gUmV0dXJuVHlwZSYmCiB7Ci0gICAgQVNTRVJUKG1fdmFsdWUuaGFzVmFsdWUoKSk7CisgICAg
QVNTRVJUKG1fdmFsdWUuaGFzX3ZhbHVlKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG1fdmFsdWUu
dmFsdWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA4Mjk0MmJiLi40MmNiMzRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDQxLDcgKzMwNDEsNyBAQCBVUkwgRWxlbWVu
dDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKIAogaW50IEVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIo
Z2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJz
ZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9
CiAKIHZvaWQgRWxlbWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVlKQpAQCAtMzA1MSw3ICszMDUxLDcgQEAgdm9pZCBF
bGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBpbnQgdmFsdWUKIAogdW5zaWduZWQgRWxlbWVudDo6Z2V0VW5zaWduZWRJbnRlZ3Jh
bEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewot
ICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpzZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIHVuc2lnbmVkIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3Iu
aAppbmRleCBmZjk1NTIyLi43M2M4ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXhjZXB0aW9uT3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAKLUNvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCitDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAKIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NSw3ICs5NSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZT4g
aW5saW5lIEV4Y2VwdGlvbk9yPFJlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlu
bGluZSBib29sIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24oKSBjb25zdAog
ewotICAgIHJldHVybiAhbV92YWx1ZS5oYXNWYWx1ZSgpOworICAgIHJldHVybiAhbV92YWx1ZS5o
YXNfdmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIGNv
bnN0IEV4Y2VwdGlvbiYgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlvbigpIGNvbnN0
CkBAIC0xNjAsNyArMTYwLDcgQEAgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+OjpFeGNlcHRpb25P
cihFeGNlcHRpb24mJiBleGNlcHRpb24pCiAKIGlubGluZSBib29sIEV4Y2VwdGlvbk9yPHZvaWQ+
OjpoYXNFeGNlcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV92YWx1ZS5oYXNWYWx1ZSgp
OworICAgIHJldHVybiAhbV92YWx1ZS5oYXNfdmFsdWUoKTsKIH0KIAogaW5saW5lIGNvbnN0IEV4
Y2VwdGlvbiYgRXhjZXB0aW9uT3I8dm9pZD46OmV4Y2VwdGlvbigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDE1YTJiMTUuLjk1Y2U3
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBA
IC0xNTgsMTQgKzE1OCwxNCBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHls
ZVNoZWV0KCkKICAgICAgICAgICAgIGlmIChtX2lzWFNMKSB7CiAgICAgICAgICAgICAgICAgYXV0
byBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKTsKICAgICAgICAgICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6OlNhbWVPcmlnaW47Ci0gICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50
KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7UmVzb3VyY2VS
ZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zfSkudmFsdWVPcihu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3Qo
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnN9KS52YWx1ZV9vcihudWxscHRy
KTsKICAgICAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQiKTsKICAgICAg
ICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpLCBzdGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1lbnQoKS5j
aGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKIAotICAgICAgICAgICAgICAgIG1fY2FjaGVk
U2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxl
U2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgICAgICAg
ICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgICAgICAg
ICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGU1YjkyYjQuLjNkODZjN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTgwMiw3ICsxODAyLDcgQEAgYm9vbCBI
VE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpCiB7CiAgICAgdW5zaWduZWQgb2xkRWZmZWN0aXZlTWF4TGVuZ3RoID0gZWZmZWN0aXZlTWF4
TGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgo
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAg
IGlmIChvbGRFZmZlY3RpdmVNYXhMZW5ndGggIT0gZWZmZWN0aXZlTWF4TGVuZ3RoKCkpCiAgICAg
ICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApAQCAtMTgxNCw3ICsxODE0LDcgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUpCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpbnQgb2xkTWlu
TGVuZ3RoID0gbWluTGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxT
ZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9v
cigtMSkpOwogICAgIGlmIChvbGRNaW5MZW5ndGggIT0gbWluTGVuZ3RoKCkpCiAgICAgICAgIHVw
ZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCmluZGV4IDlkM2RjZTMuLjE1ODQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNyb3Nz
T3JpZ2luKCksIGRvY3VtZW50KCkpOwogCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFtX2NhY2hlZFNoZWV0KTsKLSAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3Zl
KHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDU1NTdHlsZVNoZWV0KFdURk1v
dmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogCiAgICAgICAgIGlmIChtX2NhY2hlZFNo
ZWV0KQogICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDYwZjcwMTYuLmQ3
M2Y5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApA
QCAtMjAyLDEzICsyMDIsMTMgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWMKIAogdm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRN
YXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigt
MSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVu
dDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KQogewotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRh
dGVWYWxpZGl0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwCmluZGV4IDEwZWJiMGIuLjZjODYxNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwOSw3ICsyMDksNyBAQCBF
eHBlY3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJzaW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihTdHJpbmdWaQogewogICAgIGF1dG8gb3B0aW9uYWxTaWduZWRSZXN1bHQg
PSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAgICBpZiAoIW9wdGlvbmFsU2lnbmVkUmVzdWx0
KQotICAgICAgICByZXR1cm4gb3B0aW9uYWxTaWduZWRSZXN1bHQuZ2V0VW5leHBlY3RlZCgpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShvcHRpb25hbFNpZ25lZFJlc3Vs
dC5lcnJvcigpKSk7CiAKICAgICBpZiAob3B0aW9uYWxTaWduZWRSZXN1bHQudmFsdWUoKSA8IDAp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChIVE1MSW50ZWdlclBhcnNpbmdFcnJvcjo6
TmVnYXRpdmVPdmVyZmxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmgKaW5kZXggMjY5Y2M2Mi4uZGNjY2MyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTgsNyArMTU4LDcgQEAgaW5saW5lIHVu
c2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25l
ZCBkZWZhdWx0VmFsdWUKIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2
ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAwKQogewog
ICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7Ci0g
ICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFs
dWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsK
ICAgICBBU1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAxMjJmMGQ5Li45MWFjMzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpz
dGFydFByZWZsaWdodCgpCiAgICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SW5pdGlhdG9yKG1f
bG9hZGVyLm9wdGlvbnMoKS5pbml0aWF0b3IpOwogCiAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsK
LSAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHByZWZsaWdodFJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOworICAgIG1fcmVzb3VyY2UgPSBtX2xvYWRlci5kb2N1bWVudCgpLmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocHJlZmxpZ2h0UmVxdWVz
dCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jl
c291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggYWM4ODU5MC4uYzg5NDRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAg
bWFpblJlc291cmNlUmVxdWVzdC5zZXROYXZpZ2F0aW9uU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEobV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSk7CiAjZW5kaWYKIAotICAgIG1f
bWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdE1haW5SZXNvdXJj
ZShXVEZNb3ZlKG1haW5SZXNvdXJjZVJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1f
bWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdE1haW5SZXNvdXJj
ZShXVEZNb3ZlKG1haW5SZXNvdXJjZVJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1f
bWFpblJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgbV9mcmFtZS0+cGFnZSgpICYmIG1fbWFp
blJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuZG9tYWluKCkgPT0gQ29udGVudEV4dGVuc2lvbnM6
OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGJmMWZiNDQuLjk5MDNmNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUobmV3UmVxdWVzdCkpOwot
ICAgICAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFsdWVPcihudWxscHRyKTsKKyAg
ICAgICAgbV9yZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlLnZhbHVlX29yKG51bGxwdHIpOwogICAg
ICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgq
dGhpcyk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmlu
ZGV4IGJiZDQ2NGMuLjYyNzI3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50
KCkKICAgICAgICAgICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkubV9kb2N1bWVu
dFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgpLCBuZXdJbWFnZS5nZXQoKSk7CiAgICAgICAg
ICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNldEF1dG9Mb2FkSW1hZ2VzKGF1
dG9Mb2FkT3RoZXJJbWFnZXMpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5ld0ltYWdl
ID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShy
ZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1l
bnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSku
dmFsdWVfb3IobnVsbHB0cik7CiAKICAgICAgICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgYW4gaW1h
Z2UgaGVyZSwgaXQgbWVhbnMgdGhhdCBhIGNyb3NzLXNpdGUKICAgICAgICAgLy8gdmlvbGF0aW9u
IG9jY3VycmVkLCBvciB0aGF0IHRoZSBpbWFnZSB3YXMgYmxvY2tlZCB2aWEgQ29udGVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGViODBlODQuLjg5NWYxYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5rTG9hZGVyOjpwcmVsb2FkSWZO
ZWVkZWQoY29uc3QgTGluCiAgICAgbGlua1JlcXVlc3Quc2V0SXNMaW5rUHJlbG9hZCgpOwogCiAg
ICAgbGlua1JlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9k
ZSwgZG9jdW1lbnQpOwotICAgIGF1dG8gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVx
dWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRMaW5rUmVzb3VyY2UgPSBk
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnByZWxvYWQodHlwZS52YWx1ZSgpLCBXVEZN
b3ZlKGxpbmtSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAKICAgICBpZiAoY2FjaGVkTGlu
a1Jlc291cmNlICYmIGxvYWRlcikKICAgICAgICAgcmV0dXJuIGNyZWF0ZUxpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnQoKmNhY2hlZExpbmtSZXNvdXJjZSwgKmxvYWRlciwgdHlwZS52YWx1ZSgpKTsK
QEAgLTI5OCw3ICsyOTgsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtS
ZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLAogICAgICAgICB9CiAg
ICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICAgICAgb3B0aW9ucy5jb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3Np
dGlvbjo6U2tpcFBvbGljeUNoZWNrOwotICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdExpbmtSZXNvdXJjZSh0eXBlLCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJM
KGhyZWYpKSwgb3B0aW9ucywgcHJpb3JpdHkpKS52YWx1ZU9yKG51bGxwdHIpOworICAgICAgICBt
X2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVx
dWVzdExpbmtSZXNvdXJjZSh0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0aW9ucywgcHJpb3JpdHkpKS52YWx1
ZV9vcihudWxscHRyKTsKICAgICAgICAgaWYgKG1fY2FjaGVkTGlua1Jlc291cmNlKQogICAgICAg
ICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0MWQ4
ZjEuLjQ2NzQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDcgKzgxLDcgQEAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKFJlc291cmNlUmVxdWUKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCiAgICAgICAg
IGNhY2hlUmVxdWVzdC5zZXRJbml0aWF0b3IoKm1fbWVkaWFFbGVtZW50LmdldCgpKTsKIAotICAg
IGF1dG8gcmVzb3VyY2UgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RNZWRpYShXVEZNb3ZlKGNhY2hlUmVxdWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgYXV0
byByZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdE1l
ZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggODA0MGI3OC4uZmYxNDM2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29s
IFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbk1vZGUsIGJvb2wgaQogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSksIG9wdGlvbnMpOwog
ICAgIGN1ZVJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9k
ZSwgKmRvY3VtZW50KTsKIAotICAgIG1fcmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5yZXF1ZXN0VGV4dFRyYWNrKFdURk1vdmUoY3VlUmVxdWVzdCkpLnZhbHVlT3Io
bnVsbHB0cik7CisgICAgbV9yZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLnJlcXVlc3RUZXh0VHJhY2soV1RGTW92ZShjdWVSZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0
cik7CiAgICAgaWYgKCFtX3Jlc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UuY3BwCmluZGV4IDJlMDhlZTIuLjEyZTYwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNw
cApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2Fk
KENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cgogICAgIGZldGNoT3B0
aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwogICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsb2FkZXIuZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwobV91cmwpKSwgZmV0Y2hPcHRpb25zKTsKICAgICByZXF1ZXN0LnNldEluaXRp
YXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICBtX2RvY3Vt
ZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOworICAgIG1fZG9jdW1lbnQgPSBsb2FkZXIucmVxdWVzdFNWR0RvY3VtZW50KFdU
Rk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwogICAgIGlmIChtX2RvY3VtZW50KQog
ICAgICAgICBtX2RvY3VtZW50LT5hZGRDbGllbnQoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDE1ZDQ0ZjUuLmQ4MmQzYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzYsNyArNzYsNyBAQCB2b2lk
IEljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmljb24pOwogCiAgICAgYXV0byBjYWNoZWRS
ZXNvdXJjZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RJY29uKFdURk1vdmUocmVxdWVzdCkpOwotICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJj
ZS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1fcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZS52YWx1
ZV9vcihudWxscHRyKTsKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+
YWRkQ2xpZW50KCp0aGlzKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmNwcAppbmRleCA2NzI4NjEyLi42YjRjYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMxNCwxMSArMjMxNCwxMSBAQCBFeHBlY3RlZDxVUkxQYXJzZXI6OklQdjRBZGRy
ZXNzLCBVUkxQYXJzZXI6OklQdjRQYXJzaW5nRXJyb3I+IFVSTFBhcnNlcjo6cGFyc2VJUAogICAg
IGlmICghaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXRlbXMuc2l6ZSgpIHx8IGl0ZW1zLnNpemUoKSA+
IDQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJ
UHY0KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAo
IWl0ZW0uaGFzVmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OjpGYWlsdXJlKQorICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigp
ID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKICAgICB9CiAgICAgZm9y
IChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKCFpdGVtLmhhc1ZhbHVl
KCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCisg
ICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNl
UGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKICAgICB9CiAgICAgaWYgKGl0ZW1zLnNpemUo
KSA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcAppbmRleCBkOTUxODgyLi41MmViNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgUmVzb3VyY2VM
b2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBCdWZmZXJEYXRh
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRp
YWxzOjpPbWl0LCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBE
b05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRp
b246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGlu
ZywgQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKSk7CiAKICAgICBDYWNoZWRSZXNvdXJj
ZUxvYWRlciogbG9hZGVyID0gbV9wYXJlbnQtPnBsYXllcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwotICAgIG1fcmVzb3VyY2UgPSBsb2FkZXIgPyBsb2FkZXItPnJlcXVlc3RSYXdSZXNvdXJj
ZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9yKG51bGxwdHIpIDogbnVsbHB0cjsKKyAgICBtX3Jl
c291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1
ZXN0KSkudmFsdWVfb3IobnVsbHB0cikgOiBudWxscHRyOwogICAgIGlmIChtX3Jlc291cmNlKQog
ICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4
IDg0N2E0ZjkuLjk3MWM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICAvLyBpcyBpbiBhIHVzZXItYWdlbnQgc2hh
ZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzQ5OD4uCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJj
ZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwg
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZl
dGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRp
b25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGlj
eTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsK
ICAgICBpZiAoYXV0byogbG9hZGVyID0gbV9wYXJlbnQtPnBsYXllcigpLT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpKQotICAgICAgICBtX3Jlc291cmNlID0gbG9hZGVyLT5yZXF1ZXN0TWVkaWEoV1RG
TW92ZShyZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKTsKKyAgICAgICAgbV9yZXNvdXJjZSA9IGxv
YWRlci0+cmVxdWVzdE1lZGlhKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwog
CiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCBjNGM5ZDA1
Li4zYzcwYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAg
LTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cmVxdWVzdEltYWdlUmVzb3Vy
Y2UoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKSksIG9wdGlvbnMpOwogICAgIHJlcXVlc3Qu
c2V0SW5pdGlhdG9yKCp0aGlzKTsKLSAgICBtX2NhY2hlZEltYWdlID0gZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZU9y
KG51bGxwdHIpOworICAgIG1fY2FjaGVkSW1hZ2UgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIp
OwogCiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENs
aWVudCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VV
cmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQu
Y3BwCmluZGV4IDlkNzYxMDUuLjYwYTk5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9u
dCgpCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9
IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwo
aHJlZikpLCBvcHRpb25zKTsKICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoKnRoaXMpOwot
ICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5yZXF1ZXN0Rm9udChX
VEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJnZXQoKnRoaXMpKS52YWx1ZU9yKG51bGxwdHIp
OworICAgICAgICBtX2NhY2hlZEZvbnQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5yZXF1ZXN0Rm9u
dChXVEZNb3ZlKHJlcXVlc3QpLCBpc1NWR0ZvbnRUYXJnZXQoKnRoaXMpKS52YWx1ZV9vcihudWxs
cHRyKTsKICAgICAgICAgaWYgKG1fY2FjaGVkRm9udCkgewogICAgICAgICAgICAgbV9jYWNoZWRG
b250LT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbV9jYWNoZWRGb250LT5iZWdpbkxv
YWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKaW5kZXggZWVkZjg2Ni4uMDU4ODEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcApAQCAtNSw3ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSBUb3JjaCBN
b2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqIENvcHlyaWdodCAoQykgMjAxMiBS
ZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NTkwLDcgKzU5MCw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlRXh0ZXJuYWxEb2N1bWVu
dCgpCiAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdp
bjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBSZXNvdXJjZVJlcXVl
c3QgeyBleHRlcm5hbERvY3VtZW50VVJMIH0sIG9wdGlvbnMgfTsKICAgICAgICAgcmVxdWVzdC5z
ZXRJbml0aWF0b3IoKnRoaXMpOwotICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQgPSBkb2N1bWVu
dCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVx
dWVzdCkpLnZhbHVlT3IobnVsbHB0cik7CisgICAgICAgIG1fZXh0ZXJuYWxEb2N1bWVudCA9IGRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U1ZHRG9jdW1lbnQoV1RGTW92
ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgICAgIGlmIChtX2V4dGVybmFsRG9j
dW1lbnQpCiAgICAgICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQtPmFkZENsaWVudCgqdGhpcyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IDdhZDM5OTQuLjg0
Y2E0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFhTTCBpbXBsZW1lbnRhdGlvbi4KICAq
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDMsNyArMTAzLDcg
QEAgdm9pZCBYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQoKQogCiAgICAgYXV0byBvcHRpb25zID0g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAg
ICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47Ci0gICAgbV9j
YWNoZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7
UmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChhYnNIcmVmKSksIG9wdGlvbnN9KS52YWx1ZU9yKG51bGxwdHIpOworICAgIG1fY2FjaGVk
U2hlZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFhTTFN0eWxlU2hlZXQoe1Jlc291
cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
YWJzSHJlZikpLCBvcHRpb25zfSkudmFsdWVfb3IobnVsbHB0cik7CiAKICAgICBpZiAobV9jYWNo
ZWRTaGVldCkgewogICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA1ZmYwYmVhLi44ZTAyMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3
LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRh
dGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBsaWJjKysgY29kaW5nIHN0eWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFVwZGF0ZSB2YXJpb3VzIHVz
ZXMgb2YgRXhwZWN0ZWQsIG1vc3RseSByZW5hbWluZyB2YWx1ZU9yIGFuZAorICAgICAgICBoYXNW
YWx1ZSB0byB0aGUgU1RMIG5hbWluZyBjb252ZW50aW9uLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnB1dFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmZldGNoRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6UmVhZFJlY29yZFRhc2tDb3VudGVyOjphcHBlbmRSZWNvcmQpOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjp1cGRhdGVSZWNvcmRUb0Rpc2sp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlYWRDYWNoZXNGcm9t
RGlzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2
ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorCiAyMDE3LTEy
LTA0ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIFNj
cm9sbGluZ1RyZWVOb2RlOjplbmNsb3NpbmdGcmFtZU5vZGUgcmV0dXJuIHRoZSBub2RlIGl0c2Vs
ZiBmb3IgZnJhbWUgbm9kZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA2Nzk0OTM1Li5hZGE0MTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgRW5naW5lOjpFbmdpbmUo
U3RyaW5nJiYgcm9vdFBhdGgpCiB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhY2hlTmFtZSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIGNhY2hlc09yRXJyb3Ip
IG11dGFibGUgewotICAgICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzVmFsdWUoKSkgeworICAg
ICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKGNhY2hlc09yRXJyb3IuZXJyb3IoKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92
ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2Fs
bGJhY2sKIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwg
dWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW3VwZGF0ZUNvdW50ZXIsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiBjYWNoZXNPckVycm9yKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCFjYWNoZXNPckVycm9yLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAg
aWYgKCFjYWNoZXNPckVycm9yLmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayht
YWtlVW5leHBlY3RlZChjYWNoZXNPckVycm9yLmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNh
Y2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJ
CiB2b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBy
ZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdXJsID0gV1RGTW92ZSh1cmwpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192
YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJy
b3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNzIsNyArMTcyLDcg
QEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlVSTCYmIHVybCwgUmVjb3IKIHZvaWQgRW5naW5lOjpwdXRSZWNvcmRzKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRp
ZmllciwgW3JlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJl
c3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAg
ICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBFbmdp
bmU6OnB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYm
IHJlY29yZHMsIFJlY28KIHZvaWQgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBX
ZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
ewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1
bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENvbXB1dGVTaXpl
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKIAogICAgICAgICAgICAgYXV0byBjYWNo
ZU9yaWdpbiA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnJlYWRDYWNoZXNGcm9tRGlzayhjYWNoZU9yaWdpbiwgW29yaWdp
biA9IFdURk1vdmUob3JpZ2luLnZhbHVlKCkpLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0Nv
dW50ZXIpXSAoQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4pLCByZXN1bHQudmFsdWUoKS5n
ZXQoKS5zdG9yYWdlU2l6ZSgpKTsKIApAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgRW5naW5lOjpj
bGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FsbGJhY2tBZ2dyZWdh
dG9yJiB0YXNrCiB2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmlnaW4sIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7Ci0gICAgICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCBhNjlj
M2FhLi43YjNhYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtMjU2LDcgKzI1
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFJlY29yZChFeHBlY3RlZDxSZWNvcmQsIEVy
cm9yPiYmIHJlc3VsdCwgdWludDY0X3QgcmVjb3JkSWRlbnRpZmllciwgdWludDY0X3QgdXBkYXRl
Q291bnRlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
ICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3Zh
bHVlKCkpIHsKICAgICAgICAgICAgIG1fZmFpbGVkUmVjb3Jkcy5hcHBlbmQocmVjb3JkSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ5Miw3ICs0OTIsNyBA
QCB2b2lkIENhY2hlOjp1cGRhdGVSZWNvcmRUb0Rpc2soUmVjb3JkSW5mb3JtYXRpb24mIGV4aXN0
aW5nUmVjb3JkLCBSZWNvcmQmJiByZWNvcgogewogICAgICsrZXhpc3RpbmdSZWNvcmQudXBkYXRl
UmVzcG9uc2VDb3VudGVyOwogICAgIHJlYWRSZWNvcmRGcm9tRGlzayhleGlzdGluZ1JlY29yZCwg
W2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCBy
ZWNvcmRJZGVudGlmaWVyID0gZXhpc3RpbmdSZWNvcmQuaWRlbnRpZmllciwgcmVjb3JkID0gV1RG
TW92ZShyZWNvcmQpLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShFeHBlY3Rl
ZDxSZWNvcmQsIEVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0
Lmhhc1ZhbHVlKCkpCisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8qIGNhY2hlID0gY2FjaGVzLT5maW5kKGlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDNjNGU3NzcuLjQ2ODk4NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lk
IENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNh
bGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIHJlYWRDYWNoZXNGcm9tRGlzayhbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3I+
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1ha2VEaXJ0eSgpOwogCi0gICAgICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpKTsK
IAogICAgICAgICAgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5k
aW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgQ2Fj
aGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3Rv
cjxDYWNoZT4sIEVycm9yCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIHJlc3VsdCA9IGRlY29k
ZUNhY2hlc05hbWVzKGRhdGEsIGVycm9yKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUo
KSkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgY2Fs
bGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYjZlYWRjZC4uYTUyMDQwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm4KIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRf
dCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7CiAgICAgYXV0byByZXNvbHZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmll
cl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IE5ldHdv
cmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2
ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggODM1N2VhYi4u
ODM4NDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDgyLDEwICs0ODIsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBBcmd1bWUKICAgICB9CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEVycm9yVHlwZT4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4+IHsK
LSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpFeHBl
Y3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4mIGV4cGVjdGVkKQordGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVUeXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPEV4cGVj
dGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4mIGV4cGVj
dGVkKQogICAgIHsKLSAgICAgICAgaWYgKCFleHBlY3RlZC5oYXNWYWx1ZSgpKSB7CisgICAgICAg
IGlmICghZXhwZWN0ZWQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFs
c2U7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGV4cGVjdGVkLmVycm9yKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC00OTQsNyArNDk0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBl
LCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6RXhwZWMKICAg
ICAgICAgZW5jb2RlciA8PCBleHBlY3RlZC52YWx1ZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdURjo6RXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5cGU+PiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFeHBlY3RlZDxWYWx1
ZVR5cGUsIEVycm9yVHlwZT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNWYWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNW
YWx1ZTsKQEAgLTUwNyw3ICs1MDcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5
cGVuYW1lIEVycm9yVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpFeHBlYwogICAgICAg
ICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBXVEY6OkV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JU
eXBlPiBleHBlY3RlZChXVEZNb3ZlKCp2YWx1ZSkpOworICAgICAgICAgICAgRXhwZWN0ZWQ8VmFs
dWVUeXBlLCBFcnJvclR5cGU+IGV4cGVjdGVkKFdURk1vdmUoKnZhbHVlKSk7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShleHBlY3RlZCk7CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpvcHRp
b25hbDxFcnJvclR5cGU+IGVycm9yOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDUwYTEzMDguLmM4NDJjNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0xMi0w
MSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHN0
ZDo6ZXhwZWN0ZWQgdG8gbWF0Y2ggbGliYysrIGNvZGluZyBzdHlsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjY0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBVcGRhdGUgdGVzdHMgYWNjb3JkaW5n
IHRvIG5hbWUgY2hhbmdlcyBhcyB3ZWxsIGFzIHJlbW92YWwgb2YKKyAgICAgICAgbm93LWdvbmUg
QVBJcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoK
KyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6Om9wZXJhdG9yPDwp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChXVEY6Om9wZXJhdG9y
PDwpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RQYXJzZUhUTUxJ
bnRlZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RQYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIpOgorCiAyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBhbmQgVGhy
ZWFkSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3Bw
CmluZGV4IGFjODAxNmIuLjNiZDQ4ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9FeHBlY3RlZC5jcHAKQEAgLTMxLDE2ICszMSwyMCBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAog
I2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmV4cGVjdGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotbmFt
ZXNwYWNlIFdURiB7CituYW1lc3BhY2Ugc3RkIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVDAsIHR5
cGVuYW1lIFQxPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29u
c3Qgc3RkOjpwYWlyPFQwLCBUMT4mIHApCiB7CiAgICAgcmV0dXJuIG9zIDw8ICcoJyA8PCBwLmZp
cnN0IDw8ICIsICIgPDwgcC5zZWNvbmQgPDwgJyknOwogfQogCituYW1lc3BhY2UgZXhwZXJpbWVu
dGFsIHsKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YzIHsKKwogdGVtcGxhdGU8Y2xh
c3MgRT4gc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFVu
ZXhwZWN0ZWQ8RT4mIHUpCiB7CiAgICAgcmV0dXJuIG9zIDw8IHUudmFsdWUoKTsKQEAgLTQ4LDE5
ICs1MiwyMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3Rk
Ojpvc3RyZWFtJiBvcywgY29uc3QgVW5leHBlY3RlZDxFPgogCiB0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIGUpCiB7Ci0gICAgaWYgKGUuaGFzVmFsdWUoKSkKKyAgICBpZiAoZS5o
YXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG9zIDw8IGUudmFsdWUoKTsKICAgICByZXR1cm4g
b3MgPDwgZS5lcnJvcigpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIGUpCiB7
Ci0gICAgaWYgKGUuaGFzVmFsdWUoKSkKKyAgICBpZiAoZS5oYXNfdmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIG9zIDw8ICIiOwogICAgIHJldHVybiBvcyA8PCBlLmVycm9yKCk7CiB9CiAKLX0KK319
fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50YWw6OmZ1bmRhbWVudGFsc192MworCiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtMTExLDc5ICsxMTYsNjIgQEAgVEVTVChXVEZf
RXhwZWN0ZWQsIGV4cGVjdGVkKQogICAgIHR5cGVkZWYgRXhwZWN0ZWQ8Zm9vLCBzdGQ6OnN0cmlu
Zz4gRm9vU3RyaW5nOwogICAgIHsKICAgICAgICAgYXV0byBlID0gRSgpOwotICAgICAgICBFWFBF
Q1RfVFJVRShlLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgp
KTsKICAgICAgICAgRVhQRUNUX0VRKGUudmFsdWUoKSwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShl
LnZhbHVlT3IoMy4xNCksIDApOworICAgICAgICBFWFBFQ1RfRVEoZS52YWx1ZV9vcigzLjE0KSwg
MCk7CiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3RleHByIEUgZTsKLSAgICAgICAgRVhQRUNU
X1RSVUUoZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZS5oYXNfdmFsdWUoKSk7
CiAgICAgICAgIEVYUEVDVF9FUShlLnZhbHVlKCksIDApOwotICAgICAgICBFWFBFQ1RfRVEoZS52
YWx1ZU9yKDMuMTQpLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVfb3IoMy4xNCksIDAp
OwogICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8gZSA9IEUoNDIpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShlLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlLmhhc192YWx1ZSgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKGUudmFsdWUoKSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoZS52
YWx1ZU9yKDMuMTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShlLnZhbHVlX29yKDMuMTQpLCA0
Mik7CiAgICAgICAgIGNvbnN0IGF1dG8gZTIoZSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUyLmhh
c1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlMi5oYXNfdmFsdWUoKSk7CiAgICAgICAg
IEVYUEVDVF9FUShlMi52YWx1ZSgpLCA0Mik7Ci0gICAgICAgIEVYUEVDVF9FUShlMi52YWx1ZU9y
KDMuMTQpLCA0Mik7CisgICAgICAgIEVYUEVDVF9FUShlMi52YWx1ZV9vcigzLjE0KSwgNDIpOwog
ICAgICAgICBFIGUzOwogICAgICAgICBlMyA9IGUyOwotICAgICAgICBFWFBFQ1RfVFJVRShlMy5o
YXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZTMuaGFzX3ZhbHVlKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoZTMudmFsdWUoKSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoZTMudmFsdWVP
cigzLjE0KSwgNDIpOworICAgICAgICBFWFBFQ1RfRVEoZTMudmFsdWVfb3IoMy4xNCksIDQyKTsK
ICAgICAgICAgY29uc3QgRSBlNCA9IGUyOwotICAgICAgICBFWFBFQ1RfVFJVRShlNC5oYXNWYWx1
ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZTQuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoZTQudmFsdWUoKSwgNDIpOwotICAgICAgICBFWFBFQ1RfRVEoZTQudmFsdWVPcigzLjE0
KSwgNDIpOworICAgICAgICBFWFBFQ1RfRVEoZTQudmFsdWVfb3IoMy4xNCksIDQyKTsKICAgICB9
CiAgICAgewogICAgICAgICBjb25zdGV4cHIgRSBjKDQyKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
Yy5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYy5oYXNfdmFsdWUoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUShjLnZhbHVlKCksIDQyKTsKLSAgICAgICAgRVhQRUNUX0VRKGMudmFsdWVP
cigzLjE0KSwgNDIpOworICAgICAgICBFWFBFQ1RfRVEoYy52YWx1ZV9vcigzLjE0KSwgNDIpOwog
ICAgICAgICBjb25zdGV4cHIgY29uc3QgYXV0byBjMihjKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
YzIuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGMyLmhhc192YWx1ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKGMyLnZhbHVlKCksIDQyKTsKLSAgICAgICAgRVhQRUNUX0VRKGMyLnZh
bHVlT3IoMy4xNCksIDQyKTsKKyAgICAgICAgRVhQRUNUX0VRKGMyLnZhbHVlX29yKDMuMTQpLCA0
Mik7CiAgICAgfQogICAgIHsKICAgICAgICAgYXV0byB1ID0gRShtYWtlVW5leHBlY3RlZChvb3Bz
KSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1Lmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0UodS5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSh1LmVycm9yKCksIG9vcHMp
OwotICAgICAgICBFWFBFQ1RfRVEodS5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9FUSh1LnZhbHVlT3IoMy4xNCksIDMpOworICAgICAgICBFWFBFQ1RfRVEo
dS52YWx1ZV9vcigzLjE0KSwgMyk7CiAgICAgfQogICAgIHsKICAgICAgICAgYXV0byB1diA9IEVW
KG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHV2Lmhhc1ZhbHVl
KCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXYuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBF
Q1RfRVEodXYuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUSh1di5nZXRVbmV4cGVj
dGVkKCkudmFsdWUoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUSh1di52YWx1ZU9yKDMuMTQp
LCAzKTsKKyAgICAgICAgRVhQRUNUX0VRKHV2LnZhbHVlX29yKDMuMTQpLCAzKTsKICAgICB9CiAg
ICAgewogICAgICAgICBFIGUgPSBtYWtlVW5leHBlY3RlZChvb3BzKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKGUuaGFzVmFsdWUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmVycm9yKCksIG9vcHMp
OwotICAgICAgICBFWFBFQ1RfRVEoZS5nZXRVbmV4cGVjdGVkKCkudmFsdWUoKSwgb29wcyk7Ci0g
ICAgICAgIEVYUEVDVF9FUShlLnZhbHVlT3IoMy4xNCksIDMpOwotICAgIH0KLSAgICB7Ci0gICAg
ICAgIGF1dG8gZSA9IG1ha2VFeHBlY3RlZEZyb21FcnJvcjxpbnQsIGNvbnN0IGNoYXIqPihvb3Bz
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGUuaGFzVmFsdWUoKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShlLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7
Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAg
ICAgICAgRVhQRUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMyk7Ci0gICAgfQotICAgIHsKLSAgICAg
ICAgYXV0byBlID0gbWFrZUV4cGVjdGVkRnJvbUVycm9yPGludCwgY29uc3Qgdm9pZCo+KG9vcHMp
OwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VR
KGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52
YWx1ZSgpLCBvb3BzKTsKLSAgICAgICAgRVhQRUNUX0VRKGUudmFsdWVPcigzLjE0KSwgMyk7Cisg
ICAgICAgIEVYUEVDVF9FUShlLnZhbHVlX29yKDMuMTQpLCAzKTsKICAgICB9CiAgICAgewogICAg
ICAgICBhdXRvIGUgPSBGb29DaGFyKDQyKTsKQEAgLTIzNiw1MSArMjI0LDM2IEBAIFRFU1QoV1RG
X0V4cGVjdGVkLCB2b2lkKQogICAgIHR5cGVkZWYgRXhwZWN0ZWQ8dm9pZCwgc3RkOjpzdHJpbmc+
IFN0cmluZzsKICAgICB7CiAgICAgICAgIGF1dG8gZSA9IEUoKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUoZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZS5oYXNfdmFsdWUoKSk7CiAg
ICAgICAgIGNvbnN0IGF1dG8gZTIoZSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGUyLmhhc1ZhbHVl
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlMi5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVD
VF9FUShlLCBlMik7CiAgICAgICAgIEUgZTM7CiAgICAgICAgIGUzID0gZTI7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKGUzLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShlMy5oYXNfdmFs
dWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShlLCBlMyk7CiAgICAgfQogICAgIHsKICAgICAgICAg
Y29uc3RleHByIEUgYzsKLSAgICAgICAgRVhQRUNUX1RSVUUoYy5oYXNWYWx1ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoYy5oYXNfdmFsdWUoKSk7CiAgICAgICAgIGNvbnN0ZXhwciBjb25zdCBh
dXRvIGMyKGMpOwotICAgICAgICBFWFBFQ1RfVFJVRShjMi5oYXNWYWx1ZSgpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoYzIuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoYywgYzIpOwog
ICAgIH0KICAgICB7CiAgICAgICAgIGF1dG8gdSA9IEUobWFrZVVuZXhwZWN0ZWQob29wcykpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0UodS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHUuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEodS5lcnJvcigpLCBvb3BzKTsKLSAg
ICAgICAgRVhQRUNUX0VRKHUuZ2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0K
ICAgICB7CiAgICAgICAgIGF1dG8gdXYgPSBFVihtYWtlVW5leHBlY3RlZChvb3BzKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRSh1di5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHV2
Lmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKHV2LmVycm9yKCksIG9vcHMpOwotICAg
ICAgICBFWFBFQ1RfRVEodXYuZ2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAgIH0K
ICAgICB7CiAgICAgICAgIEUgZSA9IG1ha2VVbmV4cGVjdGVkKG9vcHMpOwotICAgICAgICBFWFBF
Q1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29w
cyk7Ci0gICAgICAgIEVYUEVDVF9FUShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsK
LSAgICB9Ci0gICAgewotICAgICAgICBhdXRvIGUgPSBtYWtlRXhwZWN0ZWRGcm9tRXJyb3I8dm9p
ZCwgY29uc3QgY2hhcio+KG9vcHMpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgp
KTsKLSAgICAgICAgRVhQRUNUX0VRKGUuZXJyb3IoKSwgb29wcyk7Ci0gICAgICAgIEVYUEVDVF9F
UShlLmdldFVuZXhwZWN0ZWQoKS52YWx1ZSgpLCBvb3BzKTsKLSAgICB9Ci0gICAgewotICAgICAg
ICBhdXRvIGUgPSBtYWtlRXhwZWN0ZWRGcm9tRXJyb3I8dm9pZCwgY29uc3Qgdm9pZCo+KG9vcHMp
OwotICAgICAgICBFWFBFQ1RfRkFMU0UoZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKGUuaGFzX3ZhbHVlKCkpOwogICAgICAgICBFWFBFQ1RfRVEoZS5lcnJvcigpLCBvb3BzKTsK
LSAgICAgICAgRVhQRUNUX0VRKGUuZ2V0VW5leHBlY3RlZCgpLnZhbHVlKCksIG9vcHMpOwogICAg
IH0KICAgICB7CiAgICAgICAgIGF1dG8gZTAgPSBFKCk7CkBAIC0zMTIsNyArMjg1LDcgQEAgVEVT
VChXVEZfRXhwZWN0ZWQsIHZvaWQpCiAgICAgfQogICAgIHsKICAgICAgICAgdHlwZWRlZiBFeHBl
Y3RlZDxzdGQ6OnBhaXI8aW50LCBpbnQ+LCBzdGQ6OnN0cmluZz4gRXQ7Ci0gICAgICAgIEVYUEVD
VF9FUShFdChXVEY6OkluUGxhY2UsIDEsIDIpLCBFdChXVEY6OkluUGxhY2UsIDEsIDIpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKEV0KHN0ZDo6aW5fcGxhY2UsIDEsIDIpLCBFdChzdGQ6OmluX3BsYWNl
LCAxLCAyKSk7CiAgICAgfQogfQogCkBAIC00NjUsNyArNDM4LDcgQEAgVEVTVChXVEZfRXhwZWN0
ZWQsIFJlZikKICAgICB7CiAgICAgICAgIFJlZkxvZ2dlciBhKCJhIik7CiAgICAgICAgIEV4cGVj
dGVkPFJlZjxSZWZMb2dnZXI+LCBpbnQ+IGV4cGVjdGVkID0gUmVmPFJlZkxvZ2dlcj4oYSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkLmhhc1ZhbHVlKCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShleHBlY3RlZC5oYXNfdmFsdWUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZXhwZWN0
ZWQudmFsdWUoKS5wdHIoKSk7CiAgICAgfQogCkBAIC00NzMsOCArNDQ2LDggQEAgVEVTVChXVEZf
RXhwZWN0ZWQsIFJlZikKIAogICAgIHsKICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKLSAgICAg
ICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dlcj4sIGludD4gZXhwZWN0ZWQgPSBtYWtlRXhwZWN0ZWQ8
UmVmPFJlZkxvZ2dlcj4sIGludD4oUmVmPFJlZkxvZ2dlcj4oYSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShleHBlY3RlZC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRXhwZWN0ZWQ8UmVmPFJlZkxvZ2dl
cj4sIGludD4gZXhwZWN0ZWQgPSBFeHBlY3RlZDxSZWY8UmVmTG9nZ2VyPiwgaW50PihSZWY8UmVm
TG9nZ2VyPihhKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkLmhhc192YWx1ZSgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBleHBlY3RlZC52YWx1ZSgpLnB0cigpKTsKICAgICB9CiAK
QEAgLTQ4Myw3ICs0NTYsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgUmVmKQogICAgIHsKICAgICAg
ICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICAgICAgRXhwZWN0ZWQ8aW50LCBSZWY8UmVmTG9nZ2Vy
Pj4gZXhwZWN0ZWQgPSBtYWtlVW5leHBlY3RlZChSZWY8UmVmTG9nZ2VyPihhKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShleHBlY3RlZC5oYXNWYWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KGV4cGVjdGVkLmhhc192YWx1ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBleHBlY3RlZC5l
cnJvcigpLnB0cigpKTsKICAgICB9CiAKQEAgLTQ5Miw3ICs0NjUsNyBAQCBURVNUKFdURl9FeHBl
Y3RlZCwgUmVmKQogICAgIHsKICAgICAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICAgICAgRXhw
ZWN0ZWQ8dm9pZCwgUmVmPFJlZkxvZ2dlcj4+IGV4cGVjdGVkID0gbWFrZVVuZXhwZWN0ZWQoUmVm
PFJlZkxvZ2dlcj4oYSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZXhwZWN0ZWQuaGFzVmFsdWUo
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShleHBlY3RlZC5oYXNfdmFsdWUoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgZXhwZWN0ZWQuZXJyb3IoKS5wdHIoKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHAKaW5kZXggMGYxYzAyZC4uNDE4NjA3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHN0
YXRpYyBpbnQgdGVzdFBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAg
ICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQ
RUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZh
bHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBz
dGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAg
LTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdW5zaWduZWQgdGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQg
PSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEh
b3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOwor
ICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wg
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKLS0g
CjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>